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,
}
}
#[expect(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<Self> {
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> {
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<crate::DomTypeHolder> 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
}
}