Support arbitrary protos when wrapping DOM objects with constructors.

This commit is contained in:
Josh Matthews 2023-05-28 22:43:55 -04:00
parent d9600ff50f
commit dbff26bce0
197 changed files with 2028 additions and 586 deletions

View file

@ -7,7 +7,7 @@ use crate::dom::bindings::codegen::Bindings::TestWorkletBinding::TestWorkletMeth
use crate::dom::bindings::codegen::Bindings::WorkletBinding::WorkletBinding::WorkletMethods;
use crate::dom::bindings::codegen::Bindings::WorkletBinding::WorkletOptions;
use crate::dom::bindings::error::Fallible;
use crate::dom::bindings::reflector::reflect_dom_object;
use crate::dom::bindings::reflector::reflect_dom_object2;
use crate::dom::bindings::reflector::Reflector;
use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::str::DOMString;
@ -19,6 +19,7 @@ use crate::dom::workletglobalscope::WorkletGlobalScopeType;
use crate::realms::InRealm;
use crate::script_thread::ScriptThread;
use dom_struct::dom_struct;
use js::rust::HandleObject;
use std::rc::Rc;
#[dom_struct]
@ -35,14 +36,14 @@ impl TestWorklet {
}
}
fn new(window: &Window) -> DomRoot<TestWorklet> {
fn new(window: &Window, proto: Option<HandleObject>) -> DomRoot<TestWorklet> {
let worklet = Worklet::new(window, WorkletGlobalScopeType::Test);
reflect_dom_object(Box::new(TestWorklet::new_inherited(&*worklet)), window)
reflect_dom_object2(Box::new(TestWorklet::new_inherited(&*worklet)), window, proto)
}
#[allow(non_snake_case)]
pub fn Constructor(window: &Window) -> Fallible<DomRoot<TestWorklet>> {
Ok(TestWorklet::new(window))
pub fn Constructor(window: &Window, proto: Option<HandleObject>) -> Fallible<DomRoot<TestWorklet>> {
Ok(TestWorklet::new(window, proto))
}
}