/* 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/. */ use dom_struct::dom_struct; use crate::dom::bindings::codegen::Bindings::WebGPUBinding::GPUAdapterInfoMethods; use crate::dom::bindings::reflector::{Reflector, reflect_dom_object}; use crate::dom::bindings::root::DomRoot; use crate::dom::bindings::str::DOMString; use crate::dom::globalscope::GlobalScope; use crate::script_runtime::CanGc; #[dom_struct] pub(crate) struct GPUAdapterInfo { reflector_: Reflector, vendor: DOMString, architecture: DOMString, device: DOMString, description: DOMString, subgroup_min_size: u32, subgroup_max_size: u32, is_fallback_adapter: bool, } impl GPUAdapterInfo { fn new_inherited( vendor: DOMString, architecture: DOMString, device: DOMString, description: DOMString, subgroup_min_size: u32, subgroup_max_size: u32, is_fallback_adapter: bool, ) -> Self { Self { reflector_: Reflector::new(), vendor, architecture, device, description, subgroup_min_size, subgroup_max_size, is_fallback_adapter, } } #[allow(clippy::too_many_arguments)] pub(crate) fn new( global: &GlobalScope, vendor: DOMString, architecture: DOMString, device: DOMString, description: DOMString, subgroup_min_size: u32, subgroup_max_size: u32, is_fallback_adapter: bool, can_gc: CanGc, ) -> DomRoot { reflect_dom_object( Box::new(Self::new_inherited( vendor, architecture, device, description, subgroup_min_size, subgroup_max_size, is_fallback_adapter, )), global, can_gc, ) } pub(crate) fn clone_from( global: &GlobalScope, info: &GPUAdapterInfo, can_gc: CanGc, ) -> DomRoot { Self::new( global, info.vendor.clone(), info.architecture.clone(), info.device.clone(), info.description.clone(), info.subgroup_min_size, info.subgroup_max_size, info.is_fallback_adapter, can_gc, ) } } impl GPUAdapterInfoMethods for GPUAdapterInfo { /// fn Vendor(&self) -> DOMString { self.vendor.clone() } /// fn Architecture(&self) -> DOMString { self.architecture.clone() } /// fn Device(&self) -> DOMString { self.device.clone() } /// fn Description(&self) -> DOMString { self.description.clone() } /// fn SubgroupMinSize(&self) -> u32 { self.subgroup_min_size } /// fn SubgroupMaxSize(&self) -> u32 { self.subgroup_max_size } /// fn IsFallbackAdapter(&self) -> bool { self.is_fallback_adapter } }