/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #![allow(dead_code)] // this file is stub as wgpu does not provide info use dom_struct::dom_struct; use webgpu_traits::ShaderCompilationInfo; use crate::dom::bindings::codegen::Bindings::WebGPUBinding::{ GPUCompilationMessageMethods, GPUCompilationMessageType, }; use crate::dom::bindings::reflector::{Reflector, reflect_dom_object}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::types::GlobalScope; use crate::script_runtime::CanGc; #[dom_struct] pub(crate) struct GPUCompilationMessage { reflector_: Reflector, // #[ignore_malloc_size_of = "defined in wgpu-types"] message: DOMString, mtype: GPUCompilationMessageType, line_num: u64, line_pos: u64, offset: u64, length: u64, } impl GPUCompilationMessage { fn new_inherited( message: DOMString, mtype: GPUCompilationMessageType, line_num: u64, line_pos: u64, offset: u64, length: u64, ) -> Self { Self { reflector_: Reflector::new(), message, mtype, line_num, line_pos, offset, length, } } #[allow(clippy::too_many_arguments)] pub(crate) fn new( global: &GlobalScope, message: DOMString, mtype: GPUCompilationMessageType, line_num: u64, line_pos: u64, offset: u64, length: u64, can_gc: CanGc, ) -> DomRoot { reflect_dom_object( Box::new(Self::new_inherited( message, mtype, line_num, line_pos, offset, length, )), global, can_gc, ) } pub(crate) fn from( global: &GlobalScope, info: ShaderCompilationInfo, can_gc: CanGc, ) -> DomRoot { GPUCompilationMessage::new( global, info.message.into(), GPUCompilationMessageType::Error, info.line_number, info.line_pos, info.offset, info.length, can_gc, ) } } impl GPUCompilationMessageMethods for GPUCompilationMessage { /// fn Message(&self) -> DOMString { self.message.to_owned() } /// fn Type(&self) -> GPUCompilationMessageType { self.mtype } /// fn LineNum(&self) -> u64 { self.line_num } /// fn LinePos(&self) -> u64 { self.line_pos } /// fn Offset(&self) -> u64 { self.offset } /// fn Length(&self) -> u64 { self.length } }