Instantly share code, notes, and snippets.
Created
August 22, 2024 19:34
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save sagudev/0b0a5f19ef4e6384abcc6babfcbd4875 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */ | |
#![allow(non_camel_case_types,non_upper_case_globals,unused_imports,unused_variables,unused_assignments,unused_mut,clippy::approx_constant,clippy::enum_variant_names,clippy::let_unit_value,clippy::needless_return,clippy::too_many_arguments,clippy::unnecessary_cast,clippy::upper_case_acronyms)] | |
use crate::dom::bindings::import::base::*; | |
pub use self::WorkerNavigator_Binding::{Wrap, WorkerNavigatorMethods, GetProtoObject, DefineDOMInterface}; | |
pub mod WorkerNavigator_Binding { | |
use crate::dom; | |
use crate::dom::bindings::import::module::*; | |
use crate::dom::types::GPU; | |
use crate::dom::types::Permissions; | |
use crate::dom::types::WorkerNavigator; | |
unsafe extern fn get_permissions(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DomRoot<Permissions> = this.Permissions(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const permissions_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_permissions) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_OBJECT as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_gpu(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DomRoot<GPU> = this.Gpu(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const gpu_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_gpu) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasNone as u8, | |
JSValueType::JSVAL_TYPE_OBJECT as u8, | |
true, | |
true, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_hardwareConcurrency(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: u64 = this.HardwareConcurrency(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const hardwareConcurrency_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_hardwareConcurrency) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_DOUBLE as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_appCodeName(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.AppCodeName(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const appCodeName_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_appCodeName) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_appName(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.AppName(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const appName_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_appName) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_appVersion(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.AppVersion(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const appVersion_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_appVersion) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_platform(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.Platform(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const platform_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_platform) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_product(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.Product(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const product_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_product) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_productSub(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.ProductSub(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const productSub_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_productSub) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn taintEnabled(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: *const JSJitMethodCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let args = &*args; | |
let argc = args.argc_; | |
let result: bool = this.TaintEnabled(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const taintEnabled_methodinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
method: Some(taintEnabled) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Method as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_BOOLEAN as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_userAgent(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.UserAgent(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const userAgent_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_userAgent) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_vendor(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.Vendor(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const vendor_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_vendor) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_vendorSub(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.VendorSub(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const vendorSub_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_vendorSub) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_language(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: DOMString = this.Language(); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const language_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_language) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_STRING as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn get_languages(cx: *mut JSContext, _obj: RawHandleObject, this: *mut libc::c_void, args: JSJitGetterCallArgs) -> bool{ | |
let mut result = false; | |
wrap_panic(&mut || result = (|| { | |
let cx = SafeJSContext::from_ptr(cx); | |
let this = &*(this as *const WorkerNavigator); | |
let result: JSVal = this.Languages(cx); | |
(result).to_jsval(*cx, MutableHandleValue::from_raw(args.rval())); | |
return true; | |
})()); | |
result | |
} | |
const languages_getterinfo: JSJitInfo = JSJitInfo { | |
__bindgen_anon_1: JSJitInfo__bindgen_ty_1 { | |
getter: Some(get_languages) | |
}, | |
__bindgen_anon_2: JSJitInfo__bindgen_ty_2 { | |
protoID: PrototypeList::ID::WorkerNavigator as u16, | |
}, | |
__bindgen_anon_3: JSJitInfo__bindgen_ty_3 { depth: 0 }, | |
_bitfield_align_1: [], | |
_bitfield_1: __BindgenBitfieldUnit::new( | |
new_jsjitinfo_bitfield_1!( | |
JSJitInfo_OpType::Getter as u8, | |
JSJitInfo_AliasSet::AliasEverything as u8, | |
JSValueType::JSVAL_TYPE_UNKNOWN as u8, | |
true, | |
false, | |
false, | |
false, | |
false, | |
false, | |
0, | |
).to_ne_bytes() | |
), | |
}; | |
unsafe extern fn _finalize(_cx: *mut GCContext, obj: *mut JSObject){ | |
wrap_panic(&mut || { | |
let this = native_from_object_static::<WorkerNavigator>(obj).unwrap(); | |
finalize_common(this); | |
}) | |
} | |
unsafe extern fn _trace(trc: *mut JSTracer, obj: *mut JSObject){ | |
wrap_panic(&mut || { | |
let this = native_from_object_static::<WorkerNavigator>(obj).unwrap(); | |
if this.is_null() { return; } // GC during obj creation | |
(*this).trace(trc); | |
}) | |
} | |
static CLASS_OPS: JSClassOps = JSClassOps { | |
addProperty: None, | |
delProperty: None, | |
enumerate: None, | |
newEnumerate: None, | |
resolve: None, | |
mayResolve: None, | |
finalize: Some(_finalize), | |
call: None, | |
construct: None, | |
trace: Some(_trace), | |
}; | |
static Class: DOMJSClass = DOMJSClass { | |
base: JSClass { | |
name: c"WorkerNavigator".as_ptr(), | |
flags: JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | | |
(((1) & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT) | |
/* JSCLASS_HAS_RESERVED_SLOTS(1) */, | |
cOps: &CLASS_OPS, | |
spec: ptr::null(), | |
ext: ptr::null(), | |
oOps: ptr::null(), | |
}, | |
dom_class: | |
DOMClass { | |
interface_chain: [ PrototypeList::ID::WorkerNavigator, PrototypeList::ID::Last, PrototypeList::ID::Last, PrototypeList::ID::Last, PrototypeList::ID::Last, PrototypeList::ID::Last ], | |
depth: 0, | |
type_id: crate::dom::bindings::codegen::InheritTypes::TopTypeId { alone: () }, | |
malloc_size_of: malloc_size_of_including_raw_self::<WorkerNavigator> as unsafe fn(&mut _, _) -> _, | |
global: InterfaceObjectMap::Globals::EMPTY, | |
}, | |
}; | |
impl WorkerNavigator { | |
fn __assert_parent_type(&self) { | |
use crate::dom::bindings::inheritance::HasParent; | |
// If this type assertion fails, make sure the first field of your | |
// DOM struct is of the correct type -- it must be the parent class. | |
let _: &Reflector = self.as_parent(); | |
} | |
} | |
pub unsafe fn Wrap(cx: SafeJSContext, scope: &GlobalScope, given_proto: Option<HandleObject>, object: Box<WorkerNavigator>) -> DomRoot<WorkerNavigator>{ | |
let raw = Root::new(MaybeUnreflectedDom::from_box(object)); | |
let scope = scope.reflector().get_jsobject(); | |
assert!(!scope.get().is_null()); | |
assert!(((*get_object_class(scope.get())).flags & JSCLASS_IS_GLOBAL) != 0); | |
let _ac = JSAutoRealm::new(*cx, scope.get()); | |
rooted!(in(*cx) let mut canonical_proto = ptr::null_mut::<JSObject>()); | |
GetProtoObject(cx, scope, canonical_proto.handle_mut()); | |
assert!(!canonical_proto.is_null()); | |
rooted!(in(*cx) let mut proto = ptr::null_mut::<JSObject>()); | |
if let Some(given) = given_proto { | |
*proto = *given; | |
if get_context_realm(*cx) != get_object_realm(*given) { | |
assert!(JS_WrapObject(*cx, proto.handle_mut())); | |
} | |
} else { | |
*proto = *canonical_proto; | |
} | |
rooted!(in(*cx) let obj = JS_NewObjectWithGivenProto( | |
*cx, | |
&Class.base, | |
proto.handle(), | |
)); | |
assert!(!obj.is_null()); | |
JS_SetReservedSlot( | |
obj.get(), | |
DOM_OBJECT_SLOT, | |
&PrivateValue(raw.as_ptr() as *const libc::c_void), | |
); | |
let root = raw.reflect_with(obj.get()); | |
DomRoot::from_ref(&*root) | |
} | |
impl DomObjectWrap for dom::workernavigator::WorkerNavigator { | |
const WRAP: unsafe fn( | |
SafeJSContext, | |
&GlobalScope, | |
Option<HandleObject>, | |
Box<Self>, | |
) -> Root<Dom<Self>> = Wrap; | |
} | |
impl IDLInterface for WorkerNavigator { | |
#[inline] | |
fn derives(class: &'static DOMClass) -> bool { | |
ptr::eq(class, &Class.dom_class) | |
} | |
} | |
impl PartialEq for WorkerNavigator { | |
fn eq(&self, other: &WorkerNavigator) -> bool { | |
self as *const WorkerNavigator == other | |
} | |
} | |
pub trait WorkerNavigatorMethods { | |
fn Permissions(&self) -> DomRoot<Permissions>; | |
fn Gpu(&self) -> DomRoot<GPU>; | |
fn HardwareConcurrency(&self) -> u64; | |
fn AppCodeName(&self) -> DOMString; | |
fn AppName(&self) -> DOMString; | |
fn AppVersion(&self) -> DOMString; | |
fn Platform(&self) -> DOMString; | |
fn Product(&self) -> DOMString; | |
fn ProductSub(&self) -> DOMString; | |
fn TaintEnabled(&self) -> bool; | |
fn UserAgent(&self) -> DOMString; | |
fn Vendor(&self) -> DOMString; | |
fn VendorSub(&self) -> DOMString; | |
fn Language(&self) -> DOMString; | |
fn Languages(&self, cx: SafeJSContext) -> JSVal; | |
} | |
const sMethods_specs: &[&[JSFunctionSpec]] = &[ | |
&[ | |
JSFunctionSpec { | |
name: JSPropertySpec_Name { string_: c"taintEnabled".as_ptr() }, | |
call: JSNativeWrapper { op: Some(generic_method::<false>), info: &taintEnabled_methodinfo as *const _ as *const JSJitInfo }, | |
nargs: 0, | |
flags: (JSPROP_ENUMERATE) as u16, | |
selfHostedName: 0 as *const libc::c_char | |
}, | |
JSFunctionSpec { | |
name: JSPropertySpec_Name { string_: ptr::null() }, | |
call: JSNativeWrapper { op: None, info: ptr::null() }, | |
nargs: 0, | |
flags: 0, | |
selfHostedName: ptr::null() | |
}] | |
]; | |
const sMethods: &[Guard<&[JSFunctionSpec]>] = &[ | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::SERVICE_WORKER_GLOBAL_SCOPE), sMethods_specs[0]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::WINDOW), sMethods_specs[0]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::DEDICATED_WORKER_GLOBAL_SCOPE), sMethods_specs[0]) | |
]; | |
const sAttributes_specs: &[&[JSPropertySpec]] = &[ | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"permissions".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &permissions_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"gpu".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &gpu_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"hardwareConcurrency".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &hardwareConcurrency_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"appCodeName".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &appCodeName_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"appName".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &appName_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"appVersion".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &appVersion_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"platform".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &platform_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"product".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &product_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"productSub".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &productSub_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"userAgent".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &userAgent_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"vendor".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &vendor_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"vendorSub".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &vendorSub_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"language".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &language_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec { | |
name: JSPropertySpec_Name { string_: c"languages".as_ptr() }, | |
attributes_: (JSPROP_ENUMERATE), | |
kind_: (JSPropertySpec_Kind::NativeAccessor), | |
u: JSPropertySpec_AccessorsOrValue { | |
accessors: JSPropertySpec_AccessorsOrValue_Accessors { | |
getter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: Some(generic_getter::<false>), info: &languages_getterinfo }, | |
}, | |
setter: JSPropertySpec_Accessor { | |
native: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }, | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
, | |
&[ | |
JSPropertySpec { | |
name: JSPropertySpec_Name { symbol_: SymbolCode::toStringTag as usize + 1 }, | |
attributes_: (JSPROP_READONLY), | |
kind_: (JSPropertySpec_Kind::Value), | |
u: JSPropertySpec_AccessorsOrValue { | |
value: JSPropertySpec_ValueWrapper { | |
type_: JSPropertySpec_ValueWrapper_Type::String, | |
__bindgen_anon_1: JSPropertySpec_ValueWrapper__bindgen_ty_1 { | |
string: c"WorkerNavigator".as_ptr(), | |
} | |
} | |
} | |
} | |
, | |
JSPropertySpec::ZERO] | |
]; | |
const sAttributes: &[Guard<&[JSPropertySpec]>] = &[ | |
Guard::new(Condition::Pref("dom.permissions.enabled"), sAttributes_specs[0]), | |
Guard::new(Condition::Pref("dom.webgpu.enabled"), sAttributes_specs[1]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::SERVICE_WORKER_GLOBAL_SCOPE), sAttributes_specs[2]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::WINDOW), sAttributes_specs[2]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::DEDICATED_WORKER_GLOBAL_SCOPE), sAttributes_specs[2]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::WINDOW), sAttributes_specs[3]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::SERVICE_WORKER_GLOBAL_SCOPE), sAttributes_specs[4]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::WINDOW), sAttributes_specs[4]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::DEDICATED_WORKER_GLOBAL_SCOPE), sAttributes_specs[4]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::WINDOW), sAttributes_specs[5]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::SERVICE_WORKER_GLOBAL_SCOPE), sAttributes_specs[6]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::WINDOW), sAttributes_specs[6]), | |
Guard::new(Condition::Exposed(InterfaceObjectMap::Globals::DEDICATED_WORKER_GLOBAL_SCOPE), sAttributes_specs[6]), | |
Guard::new(Condition::Satisfied, sAttributes_specs[7]) | |
]; | |
pub fn GetProtoObject(cx: SafeJSContext, global: HandleObject, mut rval: MutableHandleObject){ | |
/* Get the interface prototype object for this class. This will create the | |
object as needed. */get_per_interface_object_handle(cx, global, ProtoOrIfaceIndex::ID(PrototypeList::ID::WorkerNavigator), CreateInterfaceObjects, rval) | |
} | |
static PrototypeClass: JSClass = JSClass { | |
name: c"WorkerNavigatorPrototype".as_ptr(), | |
flags: | |
// JSCLASS_HAS_RESERVED_SLOTS() | |
(0 ) << JSCLASS_RESERVED_SLOTS_SHIFT, | |
cOps: 0 as *const _, | |
spec: ptr::null(), | |
ext: ptr::null(), | |
oOps: ptr::null(), | |
}; | |
static INTERFACE_OBJECT_CLASS: NonCallbackInterfaceObjectClass = | |
NonCallbackInterfaceObjectClass::new( | |
{ | |
// Intermediate `const` because as of nightly-2018-10-05, | |
// rustc is conservative in promotion to `'static` of the return values of `const fn`s: | |
// https://github.com/rust-lang/rust/issues/54846 | |
// https://github.com/rust-lang/rust/pull/53851 | |
const BEHAVIOR: InterfaceConstructorBehavior = InterfaceConstructorBehavior::throw(); | |
&BEHAVIOR | |
}, | |
b"function WorkerNavigator() {\n [native code]\n}", | |
PrototypeList::ID::WorkerNavigator, | |
0); | |
pub fn DefineDOMInterface(cx: SafeJSContext, global: HandleObject){ | |
define_dom_interface(cx, global, ProtoOrIfaceIndex::ID(PrototypeList::ID::WorkerNavigator), CreateInterfaceObjects, ConstructorEnabled) | |
} | |
fn ConstructorEnabled(aCx: SafeJSContext, aObj: HandleObject) -> bool{ | |
is_exposed_in(aObj, InterfaceObjectMap::Globals::DEDICATED_WORKER_GLOBAL_SCOPE | InterfaceObjectMap::Globals::SERVICE_WORKER_GLOBAL_SCOPE) | |
} | |
unsafe fn CreateInterfaceObjects(cx: SafeJSContext, global: HandleObject, cache: *mut ProtoOrIfaceArray){ | |
rooted!(in(*cx) let mut prototype_proto = ptr::null_mut::<JSObject>()); | |
prototype_proto.set(GetRealmObjectPrototype(*cx)); | |
assert!(!prototype_proto.is_null()); | |
rooted!(in(*cx) let mut prototype = ptr::null_mut::<JSObject>()); | |
create_interface_prototype_object(cx, | |
global, | |
prototype_proto.handle(), | |
&PrototypeClass, | |
sMethods, | |
sAttributes, | |
&[], | |
&[], | |
prototype.handle_mut()); | |
assert!(!prototype.is_null()); | |
assert!((*cache)[PrototypeList::ID::WorkerNavigator as usize].is_null()); | |
(*cache)[PrototypeList::ID::WorkerNavigator as usize] = prototype.get(); | |
<*mut JSObject>::post_barrier((*cache).as_mut_ptr().offset(PrototypeList::ID::WorkerNavigator as isize), | |
ptr::null_mut(), | |
prototype.get()); | |
rooted!(in(*cx) let mut interface_proto = ptr::null_mut::<JSObject>()); | |
interface_proto.set(GetRealmFunctionPrototype(*cx)); | |
assert!(!interface_proto.is_null()); | |
rooted!(in(*cx) let mut interface = ptr::null_mut::<JSObject>()); | |
create_noncallback_interface_object(cx, | |
global, | |
interface_proto.handle(), | |
&INTERFACE_OBJECT_CLASS, | |
&[], | |
&[], | |
&[], | |
prototype.handle(), | |
c"WorkerNavigator", | |
0, | |
&[], | |
interface.handle_mut()); | |
assert!(!interface.is_null()); | |
} | |
} // mod WorkerNavigator_Binding | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment