mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
This is the last big change necessary to create the `constellation_traits` crate. This moves the data structure for messages that originate from the `ScriptThread` and are sent to the `Contellation` to `constellation_traits`, effectively splitting `script_traits` in half. Before, `script_traits` was responsible for exposing the API of both the `ScriptThread` and the `Constellation` to the rest of Servo. - Data structures that are used by `ScriptToConstellationMsg` are moved to `constellation_traits`. The dependency graph looks a bit like this: `script_layout_interface` depends on `script_traits` depends on `constellation_traits` depends on `embedder_traits`. - Data structures that are used in the embedding layer (`UntrustedNodeAddress`, `CompositorHitTestResult`, `TouchEventResult` and `AnimationState`) are moved to embedder_traits, to avoid a dependency cycle between `webrender_traits` and `constellation_traits`. - Types dealing with MessagePorts and serialization are moved to `constellation_traits::message_port`. Testing: This is covered by existing tests as it just moves types around. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Signed-off-by: Martin Robinson <mrobinson@igalia.com>
1183 lines
47 KiB
Rust
1183 lines
47 KiB
Rust
/* 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/. */
|
|
|
|
// check-tidy: no specs after this line
|
|
|
|
use std::borrow::ToOwned;
|
|
use std::ptr::{self, NonNull};
|
|
use std::rc::Rc;
|
|
use std::time::Duration;
|
|
|
|
use constellation_traits::BlobImpl;
|
|
use dom_struct::dom_struct;
|
|
use js::jsapi::{Heap, JS_NewPlainObject, JSObject};
|
|
use js::jsval::JSVal;
|
|
use js::rust::{CustomAutoRooterGuard, HandleObject, HandleValue, MutableHandleValue};
|
|
use js::typedarray::{self, Uint8ClampedArray};
|
|
use script_bindings::interfaces::TestBindingHelpers;
|
|
use script_bindings::record::Record;
|
|
use servo_config::prefs;
|
|
|
|
use crate::dom::bindings::buffer_source::create_buffer_source;
|
|
use crate::dom::bindings::callback::ExceptionHandling;
|
|
use crate::dom::bindings::codegen::Bindings::EventListenerBinding::EventListener;
|
|
use crate::dom::bindings::codegen::Bindings::FunctionBinding::Function;
|
|
use crate::dom::bindings::codegen::Bindings::TestBindingBinding::{
|
|
SimpleCallback, TestBindingMethods, TestDictionary, TestDictionaryDefaults,
|
|
TestDictionaryParent, TestDictionaryWithParent, TestEnum, TestURLLike,
|
|
};
|
|
use crate::dom::bindings::codegen::UnionTypes;
|
|
use crate::dom::bindings::codegen::UnionTypes::{
|
|
BlobOrBlobSequence, BlobOrBoolean, BlobOrString, BlobOrUnsignedLong, ByteStringOrLong,
|
|
ByteStringSequenceOrLong, ByteStringSequenceOrLongOrString, EventOrString, EventOrUSVString,
|
|
HTMLElementOrLong, HTMLElementOrUnsignedLongOrStringOrBoolean, LongOrLongSequenceSequence,
|
|
LongSequenceOrBoolean, StringOrBoolean, StringOrLongSequence, StringOrStringSequence,
|
|
StringOrUnsignedLong, StringSequenceOrUnsignedLong, UnsignedLongOrBoolean,
|
|
};
|
|
use crate::dom::bindings::error::{Error, Fallible};
|
|
use crate::dom::bindings::num::Finite;
|
|
use crate::dom::bindings::refcounted::TrustedPromise;
|
|
use crate::dom::bindings::reflector::{DomGlobal, Reflector, reflect_dom_object_with_proto};
|
|
use crate::dom::bindings::root::DomRoot;
|
|
use crate::dom::bindings::str::{ByteString, DOMString, USVString};
|
|
use crate::dom::bindings::trace::RootedTraceableBox;
|
|
use crate::dom::bindings::weakref::MutableWeakRef;
|
|
use crate::dom::blob::Blob;
|
|
use crate::dom::globalscope::GlobalScope;
|
|
use crate::dom::node::Node;
|
|
use crate::dom::promise::Promise;
|
|
use crate::dom::promisenativehandler::{Callback, PromiseNativeHandler};
|
|
use crate::dom::url::URL;
|
|
use crate::realms::InRealm;
|
|
use crate::script_runtime::{CanGc, JSContext as SafeJSContext};
|
|
use crate::timers::OneshotTimerCallback;
|
|
|
|
#[dom_struct]
|
|
pub(crate) struct TestBinding {
|
|
reflector_: Reflector,
|
|
url: MutableWeakRef<URL>,
|
|
}
|
|
|
|
#[allow(non_snake_case)]
|
|
impl TestBinding {
|
|
fn new_inherited() -> TestBinding {
|
|
TestBinding {
|
|
reflector_: Reflector::new(),
|
|
url: MutableWeakRef::new(None),
|
|
}
|
|
}
|
|
|
|
fn new(
|
|
global: &GlobalScope,
|
|
proto: Option<HandleObject>,
|
|
can_gc: CanGc,
|
|
) -> DomRoot<TestBinding> {
|
|
reflect_dom_object_with_proto(
|
|
Box::new(TestBinding::new_inherited()),
|
|
global,
|
|
proto,
|
|
can_gc,
|
|
)
|
|
}
|
|
}
|
|
|
|
impl TestBindingMethods<crate::DomTypeHolder> for TestBinding {
|
|
fn Constructor(
|
|
global: &GlobalScope,
|
|
proto: Option<HandleObject>,
|
|
can_gc: CanGc,
|
|
) -> Fallible<DomRoot<TestBinding>> {
|
|
Ok(TestBinding::new(global, proto, can_gc))
|
|
}
|
|
|
|
#[allow(unused_variables)]
|
|
fn Constructor_(
|
|
global: &GlobalScope,
|
|
proto: Option<HandleObject>,
|
|
can_gc: CanGc,
|
|
nums: Vec<f64>,
|
|
) -> Fallible<DomRoot<TestBinding>> {
|
|
Ok(TestBinding::new(global, proto, can_gc))
|
|
}
|
|
|
|
#[allow(unused_variables)]
|
|
fn Constructor__(
|
|
global: &GlobalScope,
|
|
proto: Option<HandleObject>,
|
|
can_gc: CanGc,
|
|
num: f64,
|
|
) -> Fallible<DomRoot<TestBinding>> {
|
|
Ok(TestBinding::new(global, proto, can_gc))
|
|
}
|
|
|
|
fn BooleanAttribute(&self) -> bool {
|
|
false
|
|
}
|
|
fn SetBooleanAttribute(&self, _: bool) {}
|
|
fn ByteAttribute(&self) -> i8 {
|
|
0
|
|
}
|
|
fn SetByteAttribute(&self, _: i8) {}
|
|
fn OctetAttribute(&self) -> u8 {
|
|
0
|
|
}
|
|
fn SetOctetAttribute(&self, _: u8) {}
|
|
fn ShortAttribute(&self) -> i16 {
|
|
0
|
|
}
|
|
fn SetShortAttribute(&self, _: i16) {}
|
|
fn UnsignedShortAttribute(&self) -> u16 {
|
|
0
|
|
}
|
|
fn SetUnsignedShortAttribute(&self, _: u16) {}
|
|
fn LongAttribute(&self) -> i32 {
|
|
0
|
|
}
|
|
fn SetLongAttribute(&self, _: i32) {}
|
|
fn UnsignedLongAttribute(&self) -> u32 {
|
|
0
|
|
}
|
|
fn SetUnsignedLongAttribute(&self, _: u32) {}
|
|
fn LongLongAttribute(&self) -> i64 {
|
|
0
|
|
}
|
|
fn SetLongLongAttribute(&self, _: i64) {}
|
|
fn UnsignedLongLongAttribute(&self) -> u64 {
|
|
0
|
|
}
|
|
fn SetUnsignedLongLongAttribute(&self, _: u64) {}
|
|
fn UnrestrictedFloatAttribute(&self) -> f32 {
|
|
0.
|
|
}
|
|
fn SetUnrestrictedFloatAttribute(&self, _: f32) {}
|
|
fn FloatAttribute(&self) -> Finite<f32> {
|
|
Finite::wrap(0.)
|
|
}
|
|
fn SetFloatAttribute(&self, _: Finite<f32>) {}
|
|
fn UnrestrictedDoubleAttribute(&self) -> f64 {
|
|
0.
|
|
}
|
|
fn SetUnrestrictedDoubleAttribute(&self, _: f64) {}
|
|
fn DoubleAttribute(&self) -> Finite<f64> {
|
|
Finite::wrap(0.)
|
|
}
|
|
fn SetDoubleAttribute(&self, _: Finite<f64>) {}
|
|
fn StringAttribute(&self) -> DOMString {
|
|
DOMString::new()
|
|
}
|
|
fn SetStringAttribute(&self, _: DOMString) {}
|
|
fn UsvstringAttribute(&self) -> USVString {
|
|
USVString("".to_owned())
|
|
}
|
|
fn SetUsvstringAttribute(&self, _: USVString) {}
|
|
fn ByteStringAttribute(&self) -> ByteString {
|
|
ByteString::new(vec![])
|
|
}
|
|
fn SetByteStringAttribute(&self, _: ByteString) {}
|
|
fn EnumAttribute(&self) -> TestEnum {
|
|
TestEnum::_empty
|
|
}
|
|
fn SetEnumAttribute(&self, _: TestEnum) {}
|
|
fn InterfaceAttribute(&self, can_gc: CanGc) -> DomRoot<Blob> {
|
|
Blob::new(
|
|
&self.global(),
|
|
BlobImpl::new_from_bytes(vec![], "".to_owned()),
|
|
can_gc,
|
|
)
|
|
}
|
|
fn SetInterfaceAttribute(&self, _: &Blob) {}
|
|
fn UnionAttribute(&self) -> HTMLElementOrLong {
|
|
HTMLElementOrLong::Long(0)
|
|
}
|
|
fn SetUnionAttribute(&self, _: HTMLElementOrLong) {}
|
|
fn Union2Attribute(&self) -> EventOrString {
|
|
EventOrString::String(DOMString::new())
|
|
}
|
|
fn SetUnion2Attribute(&self, _: EventOrString) {}
|
|
fn Union3Attribute(&self) -> EventOrUSVString {
|
|
EventOrUSVString::USVString(USVString("".to_owned()))
|
|
}
|
|
fn SetUnion3Attribute(&self, _: EventOrUSVString) {}
|
|
fn Union4Attribute(&self) -> StringOrUnsignedLong {
|
|
StringOrUnsignedLong::UnsignedLong(0u32)
|
|
}
|
|
fn SetUnion4Attribute(&self, _: StringOrUnsignedLong) {}
|
|
fn Union5Attribute(&self) -> StringOrBoolean {
|
|
StringOrBoolean::Boolean(true)
|
|
}
|
|
fn SetUnion5Attribute(&self, _: StringOrBoolean) {}
|
|
fn Union6Attribute(&self) -> UnsignedLongOrBoolean {
|
|
UnsignedLongOrBoolean::Boolean(true)
|
|
}
|
|
fn SetUnion6Attribute(&self, _: UnsignedLongOrBoolean) {}
|
|
fn Union7Attribute(&self) -> BlobOrBoolean {
|
|
BlobOrBoolean::Boolean(true)
|
|
}
|
|
fn SetUnion7Attribute(&self, _: BlobOrBoolean) {}
|
|
fn Union8Attribute(&self) -> BlobOrUnsignedLong {
|
|
BlobOrUnsignedLong::UnsignedLong(0u32)
|
|
}
|
|
fn SetUnion8Attribute(&self, _: BlobOrUnsignedLong) {}
|
|
fn Union9Attribute(&self) -> ByteStringOrLong {
|
|
ByteStringOrLong::ByteString(ByteString::new(vec![]))
|
|
}
|
|
fn SetUnion9Attribute(&self, _: ByteStringOrLong) {}
|
|
fn ArrayAttribute(&self, cx: SafeJSContext) -> Uint8ClampedArray {
|
|
let data: [u8; 16] = [0; 16];
|
|
|
|
rooted!(in (*cx) let mut array = ptr::null_mut::<JSObject>());
|
|
create_buffer_source(cx, &data, array.handle_mut(), CanGc::note())
|
|
.expect("Creating ClampedU8 array should never fail")
|
|
}
|
|
fn AnyAttribute(&self, _: SafeJSContext, _: MutableHandleValue) {}
|
|
fn SetAnyAttribute(&self, _: SafeJSContext, _: HandleValue) {}
|
|
#[allow(unsafe_code)]
|
|
fn ObjectAttribute(&self, cx: SafeJSContext) -> NonNull<JSObject> {
|
|
unsafe {
|
|
rooted!(in(*cx) let obj = JS_NewPlainObject(*cx));
|
|
NonNull::new(obj.get()).expect("got a null pointer")
|
|
}
|
|
}
|
|
fn SetObjectAttribute(&self, _: SafeJSContext, _: *mut JSObject) {}
|
|
|
|
fn GetBooleanAttributeNullable(&self) -> Option<bool> {
|
|
Some(false)
|
|
}
|
|
fn SetBooleanAttributeNullable(&self, _: Option<bool>) {}
|
|
fn GetByteAttributeNullable(&self) -> Option<i8> {
|
|
Some(0)
|
|
}
|
|
fn SetByteAttributeNullable(&self, _: Option<i8>) {}
|
|
fn GetOctetAttributeNullable(&self) -> Option<u8> {
|
|
Some(0)
|
|
}
|
|
fn SetOctetAttributeNullable(&self, _: Option<u8>) {}
|
|
fn GetShortAttributeNullable(&self) -> Option<i16> {
|
|
Some(0)
|
|
}
|
|
fn SetShortAttributeNullable(&self, _: Option<i16>) {}
|
|
fn GetUnsignedShortAttributeNullable(&self) -> Option<u16> {
|
|
Some(0)
|
|
}
|
|
fn SetUnsignedShortAttributeNullable(&self, _: Option<u16>) {}
|
|
fn GetLongAttributeNullable(&self) -> Option<i32> {
|
|
Some(0)
|
|
}
|
|
fn SetLongAttributeNullable(&self, _: Option<i32>) {}
|
|
fn GetUnsignedLongAttributeNullable(&self) -> Option<u32> {
|
|
Some(0)
|
|
}
|
|
fn SetUnsignedLongAttributeNullable(&self, _: Option<u32>) {}
|
|
fn GetLongLongAttributeNullable(&self) -> Option<i64> {
|
|
Some(0)
|
|
}
|
|
fn SetLongLongAttributeNullable(&self, _: Option<i64>) {}
|
|
fn GetUnsignedLongLongAttributeNullable(&self) -> Option<u64> {
|
|
Some(0)
|
|
}
|
|
fn SetUnsignedLongLongAttributeNullable(&self, _: Option<u64>) {}
|
|
fn GetUnrestrictedFloatAttributeNullable(&self) -> Option<f32> {
|
|
Some(0.)
|
|
}
|
|
fn SetUnrestrictedFloatAttributeNullable(&self, _: Option<f32>) {}
|
|
fn GetFloatAttributeNullable(&self) -> Option<Finite<f32>> {
|
|
Some(Finite::wrap(0.))
|
|
}
|
|
fn SetFloatAttributeNullable(&self, _: Option<Finite<f32>>) {}
|
|
fn GetUnrestrictedDoubleAttributeNullable(&self) -> Option<f64> {
|
|
Some(0.)
|
|
}
|
|
fn SetUnrestrictedDoubleAttributeNullable(&self, _: Option<f64>) {}
|
|
fn GetDoubleAttributeNullable(&self) -> Option<Finite<f64>> {
|
|
Some(Finite::wrap(0.))
|
|
}
|
|
fn SetDoubleAttributeNullable(&self, _: Option<Finite<f64>>) {}
|
|
fn GetByteStringAttributeNullable(&self) -> Option<ByteString> {
|
|
Some(ByteString::new(vec![]))
|
|
}
|
|
fn SetByteStringAttributeNullable(&self, _: Option<ByteString>) {}
|
|
fn GetStringAttributeNullable(&self) -> Option<DOMString> {
|
|
Some(DOMString::new())
|
|
}
|
|
fn SetStringAttributeNullable(&self, _: Option<DOMString>) {}
|
|
fn GetUsvstringAttributeNullable(&self) -> Option<USVString> {
|
|
Some(USVString("".to_owned()))
|
|
}
|
|
fn SetUsvstringAttributeNullable(&self, _: Option<USVString>) {}
|
|
fn SetBinaryRenamedAttribute(&self, _: DOMString) {}
|
|
fn ForwardedAttribute(&self) -> DomRoot<TestBinding> {
|
|
DomRoot::from_ref(self)
|
|
}
|
|
fn BinaryRenamedAttribute(&self) -> DOMString {
|
|
DOMString::new()
|
|
}
|
|
fn SetBinaryRenamedAttribute2(&self, _: DOMString) {}
|
|
fn BinaryRenamedAttribute2(&self) -> DOMString {
|
|
DOMString::new()
|
|
}
|
|
fn Attr_to_automatically_rename(&self) -> DOMString {
|
|
DOMString::new()
|
|
}
|
|
fn SetAttr_to_automatically_rename(&self, _: DOMString) {}
|
|
fn GetEnumAttributeNullable(&self) -> Option<TestEnum> {
|
|
Some(TestEnum::_empty)
|
|
}
|
|
fn GetInterfaceAttributeNullable(&self, can_gc: CanGc) -> Option<DomRoot<Blob>> {
|
|
Some(Blob::new(
|
|
&self.global(),
|
|
BlobImpl::new_from_bytes(vec![], "".to_owned()),
|
|
can_gc,
|
|
))
|
|
}
|
|
fn SetInterfaceAttributeNullable(&self, _: Option<&Blob>) {}
|
|
fn GetInterfaceAttributeWeak(&self) -> Option<DomRoot<URL>> {
|
|
self.url.root()
|
|
}
|
|
fn SetInterfaceAttributeWeak(&self, url: Option<&URL>) {
|
|
self.url.set(url);
|
|
}
|
|
fn GetObjectAttributeNullable(&self, _: SafeJSContext) -> Option<NonNull<JSObject>> {
|
|
None
|
|
}
|
|
fn SetObjectAttributeNullable(&self, _: SafeJSContext, _: *mut JSObject) {}
|
|
fn GetUnionAttributeNullable(&self) -> Option<HTMLElementOrLong> {
|
|
Some(HTMLElementOrLong::Long(0))
|
|
}
|
|
fn SetUnionAttributeNullable(&self, _: Option<HTMLElementOrLong>) {}
|
|
fn GetUnion2AttributeNullable(&self) -> Option<EventOrString> {
|
|
Some(EventOrString::String(DOMString::new()))
|
|
}
|
|
fn SetUnion2AttributeNullable(&self, _: Option<EventOrString>) {}
|
|
fn GetUnion3AttributeNullable(&self) -> Option<BlobOrBoolean> {
|
|
Some(BlobOrBoolean::Boolean(true))
|
|
}
|
|
fn SetUnion3AttributeNullable(&self, _: Option<BlobOrBoolean>) {}
|
|
fn GetUnion4AttributeNullable(&self) -> Option<UnsignedLongOrBoolean> {
|
|
Some(UnsignedLongOrBoolean::Boolean(true))
|
|
}
|
|
fn SetUnion4AttributeNullable(&self, _: Option<UnsignedLongOrBoolean>) {}
|
|
fn GetUnion5AttributeNullable(&self) -> Option<StringOrBoolean> {
|
|
Some(StringOrBoolean::Boolean(true))
|
|
}
|
|
fn SetUnion5AttributeNullable(&self, _: Option<StringOrBoolean>) {}
|
|
fn GetUnion6AttributeNullable(&self) -> Option<ByteStringOrLong> {
|
|
Some(ByteStringOrLong::ByteString(ByteString::new(vec![])))
|
|
}
|
|
fn SetUnion6AttributeNullable(&self, _: Option<ByteStringOrLong>) {}
|
|
fn BinaryRenamedMethod(&self) {}
|
|
fn ReceiveVoid(&self) {}
|
|
fn ReceiveBoolean(&self) -> bool {
|
|
false
|
|
}
|
|
fn ReceiveByte(&self) -> i8 {
|
|
0
|
|
}
|
|
fn ReceiveOctet(&self) -> u8 {
|
|
0
|
|
}
|
|
fn ReceiveShort(&self) -> i16 {
|
|
0
|
|
}
|
|
fn ReceiveUnsignedShort(&self) -> u16 {
|
|
0
|
|
}
|
|
fn ReceiveLong(&self) -> i32 {
|
|
0
|
|
}
|
|
fn ReceiveUnsignedLong(&self) -> u32 {
|
|
0
|
|
}
|
|
fn ReceiveLongLong(&self) -> i64 {
|
|
0
|
|
}
|
|
fn ReceiveUnsignedLongLong(&self) -> u64 {
|
|
0
|
|
}
|
|
fn ReceiveUnrestrictedFloat(&self) -> f32 {
|
|
0.
|
|
}
|
|
fn ReceiveFloat(&self) -> Finite<f32> {
|
|
Finite::wrap(0.)
|
|
}
|
|
fn ReceiveUnrestrictedDouble(&self) -> f64 {
|
|
0.
|
|
}
|
|
fn ReceiveDouble(&self) -> Finite<f64> {
|
|
Finite::wrap(0.)
|
|
}
|
|
fn ReceiveString(&self) -> DOMString {
|
|
DOMString::new()
|
|
}
|
|
fn ReceiveUsvstring(&self) -> USVString {
|
|
USVString("".to_owned())
|
|
}
|
|
fn ReceiveByteString(&self) -> ByteString {
|
|
ByteString::new(vec![])
|
|
}
|
|
fn ReceiveEnum(&self) -> TestEnum {
|
|
TestEnum::_empty
|
|
}
|
|
fn ReceiveInterface(&self, can_gc: CanGc) -> DomRoot<Blob> {
|
|
Blob::new(
|
|
&self.global(),
|
|
BlobImpl::new_from_bytes(vec![], "".to_owned()),
|
|
can_gc,
|
|
)
|
|
}
|
|
fn ReceiveAny(&self, _: SafeJSContext, _: MutableHandleValue) {}
|
|
fn ReceiveObject(&self, cx: SafeJSContext) -> NonNull<JSObject> {
|
|
self.ObjectAttribute(cx)
|
|
}
|
|
fn ReceiveUnion(&self) -> HTMLElementOrLong {
|
|
HTMLElementOrLong::Long(0)
|
|
}
|
|
fn ReceiveUnion2(&self) -> EventOrString {
|
|
EventOrString::String(DOMString::new())
|
|
}
|
|
fn ReceiveUnion3(&self) -> StringOrLongSequence {
|
|
StringOrLongSequence::LongSequence(vec![])
|
|
}
|
|
fn ReceiveUnion4(&self) -> StringOrStringSequence {
|
|
StringOrStringSequence::StringSequence(vec![])
|
|
}
|
|
fn ReceiveUnion5(&self) -> BlobOrBlobSequence {
|
|
BlobOrBlobSequence::BlobSequence(vec![])
|
|
}
|
|
fn ReceiveUnion6(&self) -> StringOrUnsignedLong {
|
|
StringOrUnsignedLong::String(DOMString::new())
|
|
}
|
|
fn ReceiveUnion7(&self) -> StringOrBoolean {
|
|
StringOrBoolean::Boolean(true)
|
|
}
|
|
fn ReceiveUnion8(&self) -> UnsignedLongOrBoolean {
|
|
UnsignedLongOrBoolean::UnsignedLong(0u32)
|
|
}
|
|
fn ReceiveUnion9(&self) -> HTMLElementOrUnsignedLongOrStringOrBoolean {
|
|
HTMLElementOrUnsignedLongOrStringOrBoolean::Boolean(true)
|
|
}
|
|
fn ReceiveUnion10(&self) -> ByteStringOrLong {
|
|
ByteStringOrLong::ByteString(ByteString::new(vec![]))
|
|
}
|
|
fn ReceiveUnion11(&self) -> ByteStringSequenceOrLongOrString {
|
|
ByteStringSequenceOrLongOrString::ByteStringSequence(vec![ByteString::new(vec![])])
|
|
}
|
|
fn ReceiveSequence(&self) -> Vec<i32> {
|
|
vec![1]
|
|
}
|
|
fn ReceiveInterfaceSequence(&self, can_gc: CanGc) -> Vec<DomRoot<Blob>> {
|
|
vec![Blob::new(
|
|
&self.global(),
|
|
BlobImpl::new_from_bytes(vec![], "".to_owned()),
|
|
can_gc,
|
|
)]
|
|
}
|
|
fn ReceiveUnionIdentity(
|
|
&self,
|
|
_: SafeJSContext,
|
|
arg: UnionTypes::StringOrObject,
|
|
) -> UnionTypes::StringOrObject {
|
|
arg
|
|
}
|
|
|
|
fn ReceiveNullableBoolean(&self) -> Option<bool> {
|
|
Some(false)
|
|
}
|
|
fn ReceiveNullableByte(&self) -> Option<i8> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableOctet(&self) -> Option<u8> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableShort(&self) -> Option<i16> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableUnsignedShort(&self) -> Option<u16> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableLong(&self) -> Option<i32> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableUnsignedLong(&self) -> Option<u32> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableLongLong(&self) -> Option<i64> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableUnsignedLongLong(&self) -> Option<u64> {
|
|
Some(0)
|
|
}
|
|
fn ReceiveNullableUnrestrictedFloat(&self) -> Option<f32> {
|
|
Some(0.)
|
|
}
|
|
fn ReceiveNullableFloat(&self) -> Option<Finite<f32>> {
|
|
Some(Finite::wrap(0.))
|
|
}
|
|
fn ReceiveNullableUnrestrictedDouble(&self) -> Option<f64> {
|
|
Some(0.)
|
|
}
|
|
fn ReceiveNullableDouble(&self) -> Option<Finite<f64>> {
|
|
Some(Finite::wrap(0.))
|
|
}
|
|
fn ReceiveNullableString(&self) -> Option<DOMString> {
|
|
Some(DOMString::new())
|
|
}
|
|
fn ReceiveNullableUsvstring(&self) -> Option<USVString> {
|
|
Some(USVString("".to_owned()))
|
|
}
|
|
fn ReceiveNullableByteString(&self) -> Option<ByteString> {
|
|
Some(ByteString::new(vec![]))
|
|
}
|
|
fn ReceiveNullableEnum(&self) -> Option<TestEnum> {
|
|
Some(TestEnum::_empty)
|
|
}
|
|
fn ReceiveNullableInterface(&self, can_gc: CanGc) -> Option<DomRoot<Blob>> {
|
|
Some(Blob::new(
|
|
&self.global(),
|
|
BlobImpl::new_from_bytes(vec![], "".to_owned()),
|
|
can_gc,
|
|
))
|
|
}
|
|
fn ReceiveNullableObject(&self, cx: SafeJSContext) -> Option<NonNull<JSObject>> {
|
|
self.GetObjectAttributeNullable(cx)
|
|
}
|
|
fn ReceiveNullableUnion(&self) -> Option<HTMLElementOrLong> {
|
|
Some(HTMLElementOrLong::Long(0))
|
|
}
|
|
fn ReceiveNullableUnion2(&self) -> Option<EventOrString> {
|
|
Some(EventOrString::String(DOMString::new()))
|
|
}
|
|
fn ReceiveNullableUnion3(&self) -> Option<StringOrLongSequence> {
|
|
Some(StringOrLongSequence::String(DOMString::new()))
|
|
}
|
|
fn ReceiveNullableUnion4(&self) -> Option<LongSequenceOrBoolean> {
|
|
Some(LongSequenceOrBoolean::Boolean(true))
|
|
}
|
|
fn ReceiveNullableUnion5(&self) -> Option<UnsignedLongOrBoolean> {
|
|
Some(UnsignedLongOrBoolean::UnsignedLong(0u32))
|
|
}
|
|
fn ReceiveNullableUnion6(&self) -> Option<ByteStringOrLong> {
|
|
Some(ByteStringOrLong::ByteString(ByteString::new(vec![])))
|
|
}
|
|
fn ReceiveNullableSequence(&self) -> Option<Vec<i32>> {
|
|
Some(vec![1])
|
|
}
|
|
fn ReceiveTestDictionaryWithSuccessOnKeyword(&self) -> RootedTraceableBox<TestDictionary> {
|
|
RootedTraceableBox::new(TestDictionary {
|
|
anyValue: RootedTraceableBox::new(Heap::default()),
|
|
booleanValue: None,
|
|
byteValue: None,
|
|
dict: RootedTraceableBox::new(TestDictionaryDefaults {
|
|
UnrestrictedDoubleValue: 0.0,
|
|
anyValue: RootedTraceableBox::new(Heap::default()),
|
|
arrayValue: Vec::new(),
|
|
booleanValue: false,
|
|
bytestringValue: ByteString::new(vec![]),
|
|
byteValue: 0,
|
|
doubleValue: Finite::new(1.0).unwrap(),
|
|
enumValue: TestEnum::Foo,
|
|
floatValue: Finite::new(1.0).unwrap(),
|
|
longLongValue: 54,
|
|
longValue: 12,
|
|
nullableBooleanValue: None,
|
|
nullableBytestringValue: None,
|
|
nullableByteValue: None,
|
|
nullableDoubleValue: None,
|
|
nullableFloatValue: None,
|
|
nullableLongLongValue: None,
|
|
nullableLongValue: None,
|
|
nullableObjectValue: RootedTraceableBox::new(Heap::default()),
|
|
nullableOctetValue: None,
|
|
nullableShortValue: None,
|
|
nullableStringValue: None,
|
|
nullableUnrestrictedDoubleValue: None,
|
|
nullableUnrestrictedFloatValue: None,
|
|
nullableUnsignedLongLongValue: None,
|
|
nullableUnsignedLongValue: None,
|
|
nullableUnsignedShortValue: None,
|
|
nullableUsvstringValue: None,
|
|
octetValue: 0,
|
|
shortValue: 0,
|
|
stringValue: DOMString::new(),
|
|
unrestrictedFloatValue: 0.0,
|
|
unsignedLongLongValue: 0,
|
|
unsignedLongValue: 0,
|
|
unsignedShortValue: 0,
|
|
usvstringValue: USVString("".to_owned()),
|
|
}),
|
|
doubleValue: None,
|
|
enumValue: None,
|
|
floatValue: None,
|
|
interfaceValue: None,
|
|
longLongValue: None,
|
|
longValue: None,
|
|
objectValue: None,
|
|
octetValue: None,
|
|
requiredValue: true,
|
|
seqDict: None,
|
|
elementSequence: None,
|
|
shortValue: None,
|
|
stringValue: None,
|
|
type_: Some(DOMString::from("success")),
|
|
unrestrictedDoubleValue: None,
|
|
unrestrictedFloatValue: None,
|
|
unsignedLongLongValue: None,
|
|
unsignedLongValue: None,
|
|
unsignedShortValue: None,
|
|
usvstringValue: None,
|
|
nonRequiredNullable: None,
|
|
nonRequiredNullable2: Some(None),
|
|
noCallbackImport: None,
|
|
noCallbackImport2: None,
|
|
})
|
|
}
|
|
|
|
fn DictMatchesPassedValues(&self, arg: RootedTraceableBox<TestDictionary>) -> bool {
|
|
arg.type_.as_ref().map(|s| s == "success").unwrap_or(false) &&
|
|
arg.nonRequiredNullable.is_none() &&
|
|
arg.nonRequiredNullable2 == Some(None) &&
|
|
arg.noCallbackImport.is_none() &&
|
|
arg.noCallbackImport2.is_none()
|
|
}
|
|
|
|
fn PassBoolean(&self, _: bool) {}
|
|
fn PassByte(&self, _: i8) {}
|
|
fn PassOctet(&self, _: u8) {}
|
|
fn PassShort(&self, _: i16) {}
|
|
fn PassUnsignedShort(&self, _: u16) {}
|
|
fn PassLong(&self, _: i32) {}
|
|
fn PassUnsignedLong(&self, _: u32) {}
|
|
fn PassLongLong(&self, _: i64) {}
|
|
fn PassUnsignedLongLong(&self, _: u64) {}
|
|
fn PassUnrestrictedFloat(&self, _: f32) {}
|
|
fn PassFloat(&self, _: Finite<f32>) {}
|
|
fn PassUnrestrictedDouble(&self, _: f64) {}
|
|
fn PassDouble(&self, _: Finite<f64>) {}
|
|
fn PassString(&self, _: DOMString) {}
|
|
fn PassUsvstring(&self, _: USVString) {}
|
|
fn PassByteString(&self, _: ByteString) {}
|
|
fn PassEnum(&self, _: TestEnum) {}
|
|
fn PassInterface(&self, _: &Blob) {}
|
|
fn PassTypedArray(&self, _: CustomAutoRooterGuard<typedarray::Int8Array>) {}
|
|
fn PassTypedArray2(&self, _: CustomAutoRooterGuard<typedarray::ArrayBuffer>) {}
|
|
fn PassTypedArray3(&self, _: CustomAutoRooterGuard<typedarray::ArrayBufferView>) {}
|
|
fn PassUnion(&self, _: HTMLElementOrLong) {}
|
|
fn PassUnion2(&self, _: EventOrString) {}
|
|
fn PassUnion3(&self, _: BlobOrString) {}
|
|
fn PassUnion4(&self, _: StringOrStringSequence) {}
|
|
fn PassUnion5(&self, _: StringOrBoolean) {}
|
|
fn PassUnion6(&self, _: UnsignedLongOrBoolean) {}
|
|
fn PassUnion7(&self, _: StringSequenceOrUnsignedLong) {}
|
|
fn PassUnion8(&self, _: ByteStringSequenceOrLong) {}
|
|
fn PassUnion9(&self, _: UnionTypes::TestDictionaryOrLong) {}
|
|
fn PassUnion10(&self, _: SafeJSContext, _: UnionTypes::StringOrObject) {}
|
|
fn PassUnion11(&self, _: UnionTypes::ArrayBufferOrArrayBufferView) {}
|
|
fn PassUnionWithTypedef(&self, _: UnionTypes::DocumentOrStringOrURLOrBlob) {}
|
|
fn PassUnionWithTypedef2(&self, _: UnionTypes::LongSequenceOrStringOrURLOrBlob) {}
|
|
fn PassAny(&self, _: SafeJSContext, _: HandleValue) {}
|
|
fn PassObject(&self, _: SafeJSContext, _: *mut JSObject) {}
|
|
fn PassCallbackFunction(&self, _: Rc<Function>) {}
|
|
fn PassCallbackInterface(&self, _: Rc<EventListener>) {}
|
|
fn PassSequence(&self, _: Vec<i32>) {}
|
|
fn PassAnySequence(&self, _: SafeJSContext, _: CustomAutoRooterGuard<Vec<JSVal>>) {}
|
|
fn AnySequencePassthrough(
|
|
&self,
|
|
_: SafeJSContext,
|
|
seq: CustomAutoRooterGuard<Vec<JSVal>>,
|
|
) -> Vec<JSVal> {
|
|
(*seq).clone()
|
|
}
|
|
fn PassObjectSequence(&self, _: SafeJSContext, _: CustomAutoRooterGuard<Vec<*mut JSObject>>) {}
|
|
fn PassStringSequence(&self, _: Vec<DOMString>) {}
|
|
fn PassInterfaceSequence(&self, _: Vec<DomRoot<Blob>>) {}
|
|
|
|
fn PassOverloaded(&self, _: CustomAutoRooterGuard<typedarray::ArrayBuffer>) {}
|
|
fn PassOverloaded_(&self, _: DOMString) {}
|
|
|
|
fn PassOverloadedDict(&self, _: &Node) -> DOMString {
|
|
"node".into()
|
|
}
|
|
|
|
fn PassOverloadedDict_(&self, u: &TestURLLike) -> DOMString {
|
|
u.href.clone()
|
|
}
|
|
|
|
fn PassNullableBoolean(&self, _: Option<bool>) {}
|
|
fn PassNullableByte(&self, _: Option<i8>) {}
|
|
fn PassNullableOctet(&self, _: Option<u8>) {}
|
|
fn PassNullableShort(&self, _: Option<i16>) {}
|
|
fn PassNullableUnsignedShort(&self, _: Option<u16>) {}
|
|
fn PassNullableLong(&self, _: Option<i32>) {}
|
|
fn PassNullableUnsignedLong(&self, _: Option<u32>) {}
|
|
fn PassNullableLongLong(&self, _: Option<i64>) {}
|
|
fn PassNullableUnsignedLongLong(&self, _: Option<u64>) {}
|
|
fn PassNullableUnrestrictedFloat(&self, _: Option<f32>) {}
|
|
fn PassNullableFloat(&self, _: Option<Finite<f32>>) {}
|
|
fn PassNullableUnrestrictedDouble(&self, _: Option<f64>) {}
|
|
fn PassNullableDouble(&self, _: Option<Finite<f64>>) {}
|
|
fn PassNullableString(&self, _: Option<DOMString>) {}
|
|
fn PassNullableUsvstring(&self, _: Option<USVString>) {}
|
|
fn PassNullableByteString(&self, _: Option<ByteString>) {}
|
|
// fn PassNullableEnum(self, _: Option<TestEnum>) {}
|
|
fn PassNullableInterface(&self, _: Option<&Blob>) {}
|
|
fn PassNullableObject(&self, _: SafeJSContext, _: *mut JSObject) {}
|
|
fn PassNullableTypedArray(&self, _: CustomAutoRooterGuard<Option<typedarray::Int8Array>>) {}
|
|
fn PassNullableUnion(&self, _: Option<HTMLElementOrLong>) {}
|
|
fn PassNullableUnion2(&self, _: Option<EventOrString>) {}
|
|
fn PassNullableUnion3(&self, _: Option<StringOrLongSequence>) {}
|
|
fn PassNullableUnion4(&self, _: Option<LongSequenceOrBoolean>) {}
|
|
fn PassNullableUnion5(&self, _: Option<UnsignedLongOrBoolean>) {}
|
|
fn PassNullableUnion6(&self, _: Option<ByteStringOrLong>) {}
|
|
fn PassNullableCallbackFunction(&self, _: Option<Rc<Function>>) {}
|
|
fn PassNullableCallbackInterface(&self, _: Option<Rc<EventListener>>) {}
|
|
fn PassNullableSequence(&self, _: Option<Vec<i32>>) {}
|
|
|
|
fn PassOptionalBoolean(&self, _: Option<bool>) {}
|
|
fn PassOptionalByte(&self, _: Option<i8>) {}
|
|
fn PassOptionalOctet(&self, _: Option<u8>) {}
|
|
fn PassOptionalShort(&self, _: Option<i16>) {}
|
|
fn PassOptionalUnsignedShort(&self, _: Option<u16>) {}
|
|
fn PassOptionalLong(&self, _: Option<i32>) {}
|
|
fn PassOptionalUnsignedLong(&self, _: Option<u32>) {}
|
|
fn PassOptionalLongLong(&self, _: Option<i64>) {}
|
|
fn PassOptionalUnsignedLongLong(&self, _: Option<u64>) {}
|
|
fn PassOptionalUnrestrictedFloat(&self, _: Option<f32>) {}
|
|
fn PassOptionalFloat(&self, _: Option<Finite<f32>>) {}
|
|
fn PassOptionalUnrestrictedDouble(&self, _: Option<f64>) {}
|
|
fn PassOptionalDouble(&self, _: Option<Finite<f64>>) {}
|
|
fn PassOptionalString(&self, _: Option<DOMString>) {}
|
|
fn PassOptionalUsvstring(&self, _: Option<USVString>) {}
|
|
fn PassOptionalByteString(&self, _: Option<ByteString>) {}
|
|
fn PassOptionalEnum(&self, _: Option<TestEnum>) {}
|
|
fn PassOptionalInterface(&self, _: Option<&Blob>) {}
|
|
fn PassOptionalUnion(&self, _: Option<HTMLElementOrLong>) {}
|
|
fn PassOptionalUnion2(&self, _: Option<EventOrString>) {}
|
|
fn PassOptionalUnion3(&self, _: Option<StringOrLongSequence>) {}
|
|
fn PassOptionalUnion4(&self, _: Option<LongSequenceOrBoolean>) {}
|
|
fn PassOptionalUnion5(&self, _: Option<UnsignedLongOrBoolean>) {}
|
|
fn PassOptionalUnion6(&self, _: Option<ByteStringOrLong>) {}
|
|
fn PassOptionalAny(&self, _: SafeJSContext, _: HandleValue) {}
|
|
fn PassOptionalObject(&self, _: SafeJSContext, _: Option<*mut JSObject>) {}
|
|
fn PassOptionalCallbackFunction(&self, _: Option<Rc<Function>>) {}
|
|
fn PassOptionalCallbackInterface(&self, _: Option<Rc<EventListener>>) {}
|
|
fn PassOptionalSequence(&self, _: Option<Vec<i32>>) {}
|
|
|
|
fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>) {}
|
|
fn PassOptionalNullableByte(&self, _: Option<Option<i8>>) {}
|
|
fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>) {}
|
|
fn PassOptionalNullableShort(&self, _: Option<Option<i16>>) {}
|
|
fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>) {}
|
|
fn PassOptionalNullableLong(&self, _: Option<Option<i32>>) {}
|
|
fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>) {}
|
|
fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>) {}
|
|
fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>) {}
|
|
fn PassOptionalNullableUnrestrictedFloat(&self, _: Option<Option<f32>>) {}
|
|
fn PassOptionalNullableFloat(&self, _: Option<Option<Finite<f32>>>) {}
|
|
fn PassOptionalNullableUnrestrictedDouble(&self, _: Option<Option<f64>>) {}
|
|
fn PassOptionalNullableDouble(&self, _: Option<Option<Finite<f64>>>) {}
|
|
fn PassOptionalNullableString(&self, _: Option<Option<DOMString>>) {}
|
|
fn PassOptionalNullableUsvstring(&self, _: Option<Option<USVString>>) {}
|
|
fn PassOptionalNullableByteString(&self, _: Option<Option<ByteString>>) {}
|
|
// fn PassOptionalNullableEnum(self, _: Option<Option<TestEnum>>) {}
|
|
fn PassOptionalNullableInterface(&self, _: Option<Option<&Blob>>) {}
|
|
fn PassOptionalNullableObject(&self, _: SafeJSContext, _: Option<*mut JSObject>) {}
|
|
fn PassOptionalNullableUnion(&self, _: Option<Option<HTMLElementOrLong>>) {}
|
|
fn PassOptionalNullableUnion2(&self, _: Option<Option<EventOrString>>) {}
|
|
fn PassOptionalNullableUnion3(&self, _: Option<Option<StringOrLongSequence>>) {}
|
|
fn PassOptionalNullableUnion4(&self, _: Option<Option<LongSequenceOrBoolean>>) {}
|
|
fn PassOptionalNullableUnion5(&self, _: Option<Option<UnsignedLongOrBoolean>>) {}
|
|
fn PassOptionalNullableUnion6(&self, _: Option<Option<ByteStringOrLong>>) {}
|
|
fn PassOptionalNullableCallbackFunction(&self, _: Option<Option<Rc<Function>>>) {}
|
|
fn PassOptionalNullableCallbackInterface(&self, _: Option<Option<Rc<EventListener>>>) {}
|
|
fn PassOptionalNullableSequence(&self, _: Option<Option<Vec<i32>>>) {}
|
|
|
|
fn PassOptionalBooleanWithDefault(&self, _: bool) {}
|
|
fn PassOptionalByteWithDefault(&self, _: i8) {}
|
|
fn PassOptionalOctetWithDefault(&self, _: u8) {}
|
|
fn PassOptionalShortWithDefault(&self, _: i16) {}
|
|
fn PassOptionalUnsignedShortWithDefault(&self, _: u16) {}
|
|
fn PassOptionalLongWithDefault(&self, _: i32) {}
|
|
fn PassOptionalUnsignedLongWithDefault(&self, _: u32) {}
|
|
fn PassOptionalLongLongWithDefault(&self, _: i64) {}
|
|
fn PassOptionalUnsignedLongLongWithDefault(&self, _: u64) {}
|
|
fn PassOptionalStringWithDefault(&self, _: DOMString) {}
|
|
fn PassOptionalUsvstringWithDefault(&self, _: USVString) {}
|
|
fn PassOptionalBytestringWithDefault(&self, _: ByteString) {}
|
|
fn PassOptionalEnumWithDefault(&self, _: TestEnum) {}
|
|
fn PassOptionalSequenceWithDefault(&self, _: Vec<i32>) {}
|
|
|
|
fn PassOptionalNullableBooleanWithDefault(&self, _: Option<bool>) {}
|
|
fn PassOptionalNullableByteWithDefault(&self, _: Option<i8>) {}
|
|
fn PassOptionalNullableOctetWithDefault(&self, _: Option<u8>) {}
|
|
fn PassOptionalNullableShortWithDefault(&self, _: Option<i16>) {}
|
|
fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option<u16>) {}
|
|
fn PassOptionalNullableLongWithDefault(&self, _: Option<i32>) {}
|
|
fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option<u32>) {}
|
|
fn PassOptionalNullableLongLongWithDefault(&self, _: Option<i64>) {}
|
|
fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option<u64>) {}
|
|
// fn PassOptionalNullableUnrestrictedFloatWithDefault(self, _: Option<f32>) {}
|
|
// fn PassOptionalNullableFloatWithDefault(self, _: Option<Finite<f32>>) {}
|
|
// fn PassOptionalNullableUnrestrictedDoubleWithDefault(self, _: Option<f64>) {}
|
|
// fn PassOptionalNullableDoubleWithDefault(self, _: Option<Finite<f64>>) {}
|
|
fn PassOptionalNullableStringWithDefault(&self, _: Option<DOMString>) {}
|
|
fn PassOptionalNullableUsvstringWithDefault(&self, _: Option<USVString>) {}
|
|
fn PassOptionalNullableByteStringWithDefault(&self, _: Option<ByteString>) {}
|
|
// fn PassOptionalNullableEnumWithDefault(self, _: Option<TestEnum>) {}
|
|
fn PassOptionalNullableInterfaceWithDefault(&self, _: Option<&Blob>) {}
|
|
fn PassOptionalNullableObjectWithDefault(&self, _: SafeJSContext, _: *mut JSObject) {}
|
|
fn PassOptionalNullableUnionWithDefault(&self, _: Option<HTMLElementOrLong>) {}
|
|
fn PassOptionalNullableUnion2WithDefault(&self, _: Option<EventOrString>) {}
|
|
// fn PassOptionalNullableCallbackFunctionWithDefault(self, _: Option<Function>) {}
|
|
fn PassOptionalNullableCallbackInterfaceWithDefault(&self, _: Option<Rc<EventListener>>) {}
|
|
fn PassOptionalAnyWithDefault(&self, _: SafeJSContext, _: HandleValue) {}
|
|
|
|
fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option<bool>) {}
|
|
fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option<i8>) {}
|
|
fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option<u8>) {}
|
|
fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option<i16>) {}
|
|
fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option<u16>) {}
|
|
fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option<i32>) {}
|
|
fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option<u32>) {}
|
|
fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option<i64>) {}
|
|
fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option<u64>) {}
|
|
// fn PassOptionalNullableUnrestrictedFloatWithNonNullDefault(self, _: Option<f32>) {}
|
|
// fn PassOptionalNullableFloatWithNonNullDefault(self, _: Option<Finite<f32>>) {}
|
|
// fn PassOptionalNullableUnrestrictedDoubleWithNonNullDefault(self, _: Option<f64>) {}
|
|
// fn PassOptionalNullableDoubleWithNonNullDefault(self, _: Option<Finite<f64>>) {}
|
|
fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option<DOMString>) {}
|
|
fn PassOptionalNullableUsvstringWithNonNullDefault(&self, _: Option<USVString>) {}
|
|
// fn PassOptionalNullableEnumWithNonNullDefault(self, _: Option<TestEnum>) {}
|
|
fn PassOptionalOverloaded(&self, a: &TestBinding, _: u32, _: u32) -> DomRoot<TestBinding> {
|
|
DomRoot::from_ref(a)
|
|
}
|
|
fn PassOptionalOverloaded_(&self, _: &Blob, _: u32) {}
|
|
|
|
fn PassVariadicBoolean(&self, _: Vec<bool>) {}
|
|
fn PassVariadicBooleanAndDefault(&self, _: bool, _: Vec<bool>) {}
|
|
fn PassVariadicByte(&self, _: Vec<i8>) {}
|
|
fn PassVariadicOctet(&self, _: Vec<u8>) {}
|
|
fn PassVariadicShort(&self, _: Vec<i16>) {}
|
|
fn PassVariadicUnsignedShort(&self, _: Vec<u16>) {}
|
|
fn PassVariadicLong(&self, _: Vec<i32>) {}
|
|
fn PassVariadicUnsignedLong(&self, _: Vec<u32>) {}
|
|
fn PassVariadicLongLong(&self, _: Vec<i64>) {}
|
|
fn PassVariadicUnsignedLongLong(&self, _: Vec<u64>) {}
|
|
fn PassVariadicUnrestrictedFloat(&self, _: Vec<f32>) {}
|
|
fn PassVariadicFloat(&self, _: Vec<Finite<f32>>) {}
|
|
fn PassVariadicUnrestrictedDouble(&self, _: Vec<f64>) {}
|
|
fn PassVariadicDouble(&self, _: Vec<Finite<f64>>) {}
|
|
fn PassVariadicString(&self, _: Vec<DOMString>) {}
|
|
fn PassVariadicUsvstring(&self, _: Vec<USVString>) {}
|
|
fn PassVariadicByteString(&self, _: Vec<ByteString>) {}
|
|
fn PassVariadicEnum(&self, _: Vec<TestEnum>) {}
|
|
fn PassVariadicInterface(&self, _: &[&Blob]) {}
|
|
fn PassVariadicUnion(&self, _: Vec<HTMLElementOrLong>) {}
|
|
fn PassVariadicUnion2(&self, _: Vec<EventOrString>) {}
|
|
fn PassVariadicUnion3(&self, _: Vec<BlobOrString>) {}
|
|
fn PassVariadicUnion4(&self, _: Vec<BlobOrBoolean>) {}
|
|
fn PassVariadicUnion5(&self, _: Vec<StringOrUnsignedLong>) {}
|
|
fn PassVariadicUnion6(&self, _: Vec<UnsignedLongOrBoolean>) {}
|
|
fn PassVariadicUnion7(&self, _: Vec<ByteStringOrLong>) {}
|
|
fn PassVariadicAny(&self, _: SafeJSContext, _: Vec<HandleValue>) {}
|
|
fn PassVariadicObject(&self, _: SafeJSContext, _: Vec<*mut JSObject>) {}
|
|
fn BooleanMozPreference(&self, pref_name: DOMString) -> bool {
|
|
prefs::get()
|
|
.get_value(pref_name.as_ref())
|
|
.try_into()
|
|
.unwrap_or(false)
|
|
}
|
|
fn StringMozPreference(&self, pref_name: DOMString) -> DOMString {
|
|
DOMString::from_string(
|
|
prefs::get()
|
|
.get_value(pref_name.as_ref())
|
|
.try_into()
|
|
.unwrap_or_default(),
|
|
)
|
|
}
|
|
fn PrefControlledAttributeDisabled(&self) -> bool {
|
|
false
|
|
}
|
|
fn PrefControlledAttributeEnabled(&self) -> bool {
|
|
false
|
|
}
|
|
fn PrefControlledMethodDisabled(&self) {}
|
|
fn PrefControlledMethodEnabled(&self) {}
|
|
fn FuncControlledAttributeDisabled(&self) -> bool {
|
|
false
|
|
}
|
|
fn FuncControlledAttributeEnabled(&self) -> bool {
|
|
false
|
|
}
|
|
fn FuncControlledMethodDisabled(&self) {}
|
|
fn FuncControlledMethodEnabled(&self) {}
|
|
|
|
fn PassRecordPromise(&self, _: Record<DOMString, Rc<Promise>>) {}
|
|
fn PassRecord(&self, _: Record<DOMString, i32>) {}
|
|
fn PassRecordWithUSVStringKey(&self, _: Record<USVString, i32>) {}
|
|
fn PassRecordWithByteStringKey(&self, _: Record<ByteString, i32>) {}
|
|
fn PassNullableRecord(&self, _: Option<Record<DOMString, i32>>) {}
|
|
fn PassRecordOfNullableInts(&self, _: Record<DOMString, Option<i32>>) {}
|
|
fn PassOptionalRecordOfNullableInts(&self, _: Option<Record<DOMString, Option<i32>>>) {}
|
|
fn PassOptionalNullableRecordOfNullableInts(
|
|
&self,
|
|
_: Option<Option<Record<DOMString, Option<i32>>>>,
|
|
) {
|
|
}
|
|
fn PassCastableObjectRecord(&self, _: Record<DOMString, DomRoot<TestBinding>>) {}
|
|
fn PassNullableCastableObjectRecord(&self, _: Record<DOMString, Option<DomRoot<TestBinding>>>) {
|
|
}
|
|
fn PassCastableObjectNullableRecord(&self, _: Option<Record<DOMString, DomRoot<TestBinding>>>) {
|
|
}
|
|
fn PassNullableCastableObjectNullableRecord(
|
|
&self,
|
|
_: Option<Record<DOMString, Option<DomRoot<TestBinding>>>>,
|
|
) {
|
|
}
|
|
fn PassOptionalRecord(&self, _: Option<Record<DOMString, i32>>) {}
|
|
fn PassOptionalNullableRecord(&self, _: Option<Option<Record<DOMString, i32>>>) {}
|
|
fn PassOptionalNullableRecordWithDefaultValue(&self, _: Option<Record<DOMString, i32>>) {}
|
|
fn PassOptionalObjectRecord(&self, _: Option<Record<DOMString, DomRoot<TestBinding>>>) {}
|
|
fn PassStringRecord(&self, _: Record<DOMString, DOMString>) {}
|
|
fn PassByteStringRecord(&self, _: Record<DOMString, ByteString>) {}
|
|
fn PassRecordOfRecords(&self, _: Record<DOMString, Record<DOMString, i32>>) {}
|
|
fn PassRecordUnion(&self, _: UnionTypes::LongOrStringByteStringRecord) {}
|
|
fn PassRecordUnion2(&self, _: UnionTypes::TestBindingOrStringByteStringRecord) {}
|
|
fn PassRecordUnion3(
|
|
&self,
|
|
_: UnionTypes::TestBindingOrByteStringSequenceSequenceOrStringByteStringRecord,
|
|
) {
|
|
}
|
|
fn ReceiveRecord(&self) -> Record<DOMString, i32> {
|
|
Record::new()
|
|
}
|
|
fn ReceiveRecordWithUSVStringKey(&self) -> Record<USVString, i32> {
|
|
Record::new()
|
|
}
|
|
fn ReceiveRecordWithByteStringKey(&self) -> Record<ByteString, i32> {
|
|
Record::new()
|
|
}
|
|
fn ReceiveNullableRecord(&self) -> Option<Record<DOMString, i32>> {
|
|
Some(Record::new())
|
|
}
|
|
fn ReceiveRecordOfNullableInts(&self) -> Record<DOMString, Option<i32>> {
|
|
Record::new()
|
|
}
|
|
fn ReceiveNullableRecordOfNullableInts(&self) -> Option<Record<DOMString, Option<i32>>> {
|
|
Some(Record::new())
|
|
}
|
|
fn ReceiveRecordOfRecords(&self) -> Record<DOMString, Record<DOMString, i32>> {
|
|
Record::new()
|
|
}
|
|
fn ReceiveAnyRecord(&self) -> Record<DOMString, JSVal> {
|
|
Record::new()
|
|
}
|
|
|
|
#[cfg_attr(crown, allow(crown::unrooted_must_root))]
|
|
fn ReturnResolvedPromise(&self, cx: SafeJSContext, v: HandleValue) -> Rc<Promise> {
|
|
Promise::new_resolved(&self.global(), cx, v, CanGc::note())
|
|
}
|
|
|
|
#[cfg_attr(crown, allow(crown::unrooted_must_root))]
|
|
fn ReturnRejectedPromise(&self, cx: SafeJSContext, v: HandleValue) -> Rc<Promise> {
|
|
Promise::new_rejected(&self.global(), cx, v, CanGc::note())
|
|
}
|
|
|
|
fn PromiseResolveNative(&self, cx: SafeJSContext, p: &Promise, v: HandleValue, can_gc: CanGc) {
|
|
p.resolve(cx, v, can_gc);
|
|
}
|
|
|
|
fn PromiseRejectNative(&self, cx: SafeJSContext, p: &Promise, v: HandleValue, can_gc: CanGc) {
|
|
p.reject(cx, v, can_gc);
|
|
}
|
|
|
|
fn PromiseRejectWithTypeError(&self, p: &Promise, s: USVString, can_gc: CanGc) {
|
|
p.reject_error(Error::Type(s.0), can_gc);
|
|
}
|
|
|
|
#[cfg_attr(crown, allow(crown::unrooted_must_root))]
|
|
fn ResolvePromiseDelayed(&self, p: &Promise, value: DOMString, delay: u64) {
|
|
let promise = p.duplicate();
|
|
let cb = TestBindingCallback {
|
|
promise: TrustedPromise::new(promise),
|
|
value,
|
|
};
|
|
let _ = self.global().schedule_callback(
|
|
OneshotTimerCallback::TestBindingCallback(cb),
|
|
Duration::from_millis(delay),
|
|
);
|
|
}
|
|
|
|
fn PromiseNativeHandler(
|
|
&self,
|
|
resolve: Option<Rc<SimpleCallback>>,
|
|
reject: Option<Rc<SimpleCallback>>,
|
|
comp: InRealm,
|
|
can_gc: CanGc,
|
|
) -> Rc<Promise> {
|
|
let global = self.global();
|
|
let handler = PromiseNativeHandler::new(
|
|
&global,
|
|
resolve.map(SimpleHandler::new_boxed),
|
|
reject.map(SimpleHandler::new_boxed),
|
|
can_gc,
|
|
);
|
|
let p = Promise::new_in_current_realm(comp, can_gc);
|
|
p.append_native_handler(&handler, comp, can_gc);
|
|
return p;
|
|
|
|
#[derive(JSTraceable, MallocSizeOf)]
|
|
struct SimpleHandler {
|
|
#[ignore_malloc_size_of = "Rc has unclear ownership semantics"]
|
|
handler: Rc<SimpleCallback>,
|
|
}
|
|
impl SimpleHandler {
|
|
fn new_boxed(callback: Rc<SimpleCallback>) -> Box<dyn Callback> {
|
|
Box::new(SimpleHandler { handler: callback })
|
|
}
|
|
}
|
|
impl Callback for SimpleHandler {
|
|
fn callback(&self, cx: SafeJSContext, v: HandleValue, realm: InRealm, can_gc: CanGc) {
|
|
let global = GlobalScope::from_safe_context(cx, realm);
|
|
let _ = self
|
|
.handler
|
|
.Call_(&*global, v, ExceptionHandling::Report, can_gc);
|
|
}
|
|
}
|
|
}
|
|
|
|
fn PromiseAttribute(&self, comp: InRealm, can_gc: CanGc) -> Rc<Promise> {
|
|
Promise::new_in_current_realm(comp, can_gc)
|
|
}
|
|
|
|
fn AcceptPromise(&self, _promise: &Promise) {}
|
|
|
|
fn PassSequenceSequence(&self, _seq: Vec<Vec<i32>>) {}
|
|
fn ReturnSequenceSequence(&self) -> Vec<Vec<i32>> {
|
|
vec![]
|
|
}
|
|
fn PassUnionSequenceSequence(&self, seq: LongOrLongSequenceSequence) {
|
|
match seq {
|
|
LongOrLongSequenceSequence::Long(_) => (),
|
|
LongOrLongSequenceSequence::LongSequenceSequence(seq) => {
|
|
let _seq: Vec<Vec<i32>> = seq;
|
|
},
|
|
}
|
|
}
|
|
|
|
#[allow(unsafe_code)]
|
|
fn CrashHard(&self) {
|
|
unsafe { std::ptr::null_mut::<i32>().write(42) }
|
|
}
|
|
|
|
fn AdvanceClock(&self, ms: i32) {
|
|
self.global().as_window().advance_animation_clock(ms);
|
|
}
|
|
|
|
fn Panic(&self) {
|
|
panic!("explicit panic from script")
|
|
}
|
|
|
|
fn EntryGlobal(&self) -> DomRoot<GlobalScope> {
|
|
GlobalScope::entry()
|
|
}
|
|
fn IncumbentGlobal(&self) -> DomRoot<GlobalScope> {
|
|
GlobalScope::incumbent().unwrap()
|
|
}
|
|
|
|
fn SemiExposedBoolFromInterface(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn BoolFromSemiExposedPartialInterface(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn SemiExposedBoolFromPartialInterface(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn GetDictionaryWithParent(&self, s1: DOMString, s2: DOMString) -> TestDictionaryWithParent {
|
|
TestDictionaryWithParent {
|
|
parent: TestDictionaryParent {
|
|
parentStringMember: Some(s1),
|
|
},
|
|
stringMember: Some(s2),
|
|
}
|
|
}
|
|
|
|
fn MethodThrowToRejectPromise(&self) -> Fallible<Rc<Promise>> {
|
|
Err(Error::Type("test".to_string()))
|
|
}
|
|
|
|
fn GetGetterThrowToRejectPromise(&self) -> Fallible<Rc<Promise>> {
|
|
Err(Error::Type("test".to_string()))
|
|
}
|
|
|
|
fn MethodInternalThrowToRejectPromise(&self, _arg: u64) -> Rc<Promise> {
|
|
unreachable!("Method should already throw")
|
|
}
|
|
|
|
fn StaticThrowToRejectPromise(_: &GlobalScope) -> Fallible<Rc<Promise>> {
|
|
Err(Error::Type("test".to_string()))
|
|
}
|
|
|
|
fn StaticInternalThrowToRejectPromise(_: &GlobalScope, _arg: u64) -> Rc<Promise> {
|
|
unreachable!("Method should already throw")
|
|
}
|
|
|
|
fn BooleanAttributeStatic(_: &GlobalScope) -> bool {
|
|
false
|
|
}
|
|
fn SetBooleanAttributeStatic(_: &GlobalScope, _: bool) {}
|
|
fn ReceiveVoidStatic(_: &GlobalScope) {}
|
|
fn PrefControlledStaticAttributeDisabled(_: &GlobalScope) -> bool {
|
|
false
|
|
}
|
|
fn PrefControlledStaticAttributeEnabled(_: &GlobalScope) -> bool {
|
|
false
|
|
}
|
|
fn PrefControlledStaticMethodDisabled(_: &GlobalScope) {}
|
|
fn PrefControlledStaticMethodEnabled(_: &GlobalScope) {}
|
|
fn FuncControlledStaticAttributeDisabled(_: &GlobalScope) -> bool {
|
|
false
|
|
}
|
|
fn FuncControlledStaticAttributeEnabled(_: &GlobalScope) -> bool {
|
|
false
|
|
}
|
|
fn FuncControlledStaticMethodDisabled(_: &GlobalScope) {}
|
|
fn FuncControlledStaticMethodEnabled(_: &GlobalScope) {}
|
|
}
|
|
|
|
impl TestBinding {
|
|
pub(crate) fn condition_satisfied(_: SafeJSContext, _: HandleObject) -> bool {
|
|
true
|
|
}
|
|
pub(crate) fn condition_unsatisfied(_: SafeJSContext, _: HandleObject) -> bool {
|
|
false
|
|
}
|
|
}
|
|
|
|
#[derive(JSTraceable, MallocSizeOf)]
|
|
pub(crate) struct TestBindingCallback {
|
|
#[ignore_malloc_size_of = "unclear ownership semantics"]
|
|
promise: TrustedPromise,
|
|
value: DOMString,
|
|
}
|
|
|
|
impl TestBindingCallback {
|
|
#[cfg_attr(crown, allow(crown::unrooted_must_root))]
|
|
pub(crate) fn invoke(self) {
|
|
self.promise
|
|
.root()
|
|
.resolve_native(&self.value, CanGc::note());
|
|
}
|
|
}
|
|
|
|
impl TestBindingHelpers for TestBinding {
|
|
fn condition_satisfied(cx: SafeJSContext, global: HandleObject) -> bool {
|
|
Self::condition_satisfied(cx, global)
|
|
}
|
|
fn condition_unsatisfied(cx: SafeJSContext, global: HandleObject) -> bool {
|
|
Self::condition_unsatisfied(cx, global)
|
|
}
|
|
}
|