diff --git a/CHANGELOG.md b/CHANGELOG.md index decff7cc..4b3a76d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,23 @@ Released YYYY-MM-DD. -------------------------------------------------------------------------------- +## 0.2.17 + +Released 2018-08-16. + +### Added + +* Greatly expanded documentation in the wasm-bindgen guide. +* Added bindings to `js-sys` for `Intl.DateTimeFormat` +* Added a number of `extends` attributes for types in `js-sys` + +### Fixed + +* Fixed compile on latest nightly with latest `proc-macro2` +* Fixed compilation in some scenarios on Windows with paths in `module` paths + +-------------------------------------------------------------------------------- + ## 0.2.16 Released 2018-08-13. diff --git a/Cargo.toml b/Cargo.toml index 46f7d514..330a4ce3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" readme = "README.md" @@ -27,12 +27,12 @@ serde-serialize = ["serde", "serde_json", "std"] xxx_debug_only_print_generated_code = ["wasm-bindgen-macro/xxx_debug_only_print_generated_code"] [dependencies] -wasm-bindgen-macro = { path = "crates/macro", version = "=0.2.16" } +wasm-bindgen-macro = { path = "crates/macro", version = "=0.2.17" } serde = { version = "1.0", optional = true } serde_json = { version = "1.0", optional = true } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = { path = 'crates/test', version = '=0.2.16' } +wasm-bindgen-test = { path = 'crates/test', version = '=0.2.17' } serde_derive = "1.0" wasm-bindgen-test-crate-a = { path = 'tests/crates/a' } wasm-bindgen-test-crate-b = { path = 'tests/crates/b' } @@ -50,6 +50,7 @@ members = [ "crates/webidl-tests", "examples/add", "examples/asm.js", + "examples/canvas", "examples/char", "examples/closures", "examples/comments", @@ -64,6 +65,7 @@ members = [ "examples/performance", "examples/smorgasboard", "examples/wasm-in-wasm", + "examples/webaudio", "tests/no-std", ] diff --git a/crates/backend/Cargo.toml b/crates/backend/Cargo.toml index fd17acda..7d61d9ae 100644 --- a/crates/backend/Cargo.toml +++ b/crates/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-backend" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/backend" @@ -21,4 +21,4 @@ proc-macro2 = "0.4.8" quote = '0.6' serde_json = "1.0" syn = { version = '0.14', features = ['full', 'visit'] } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.16" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.17" } diff --git a/crates/backend/src/ast.rs b/crates/backend/src/ast.rs index 7e694230..d8989e35 100644 --- a/crates/backend/src/ast.rs +++ b/crates/backend/src/ast.rs @@ -21,6 +21,10 @@ pub struct Program { pub consts: Vec, /// rust submodules pub modules: Vec, + /// "dictionaries", generated for WebIDL, which are basically just "typed + /// objects" in the sense that they represent a JS object with a particular + /// shape in JIT parlance. + pub dictionaries: Vec, } /// A rust to js interface. Allows interaction with rust objects/functions @@ -253,6 +257,21 @@ pub struct Module { pub imports: Vec, } +#[cfg_attr(feature = "extra-traits", derive(Debug, PartialEq, Eq))] +#[derive(Clone)] +pub struct Dictionary { + pub name: Ident, + pub fields: Vec, +} + +#[cfg_attr(feature = "extra-traits", derive(Debug, PartialEq, Eq))] +#[derive(Clone)] +pub struct DictionaryField { + pub name: Ident, + pub required: bool, + pub ty: syn::Type, +} + impl Program { pub(crate) fn shared(&self) -> Result { Ok(shared::Program { diff --git a/crates/backend/src/codegen.rs b/crates/backend/src/codegen.rs index 7d886514..45711ba3 100644 --- a/crates/backend/src/codegen.rs +++ b/crates/backend/src/codegen.rs @@ -74,6 +74,9 @@ impl TryToTokens for ast::Program { errors.push(e); } } + for d in self.dictionaries.iter() { + d.to_tokens(tokens); + } Diagnostic::from_vec(errors)?; @@ -1135,6 +1138,153 @@ impl<'a> TryToTokens for ast::Module { } } +impl ToTokens for ast::Dictionary { + fn to_tokens(&self, tokens: &mut TokenStream) { + let name = &self.name; + let mut methods = TokenStream::new(); + for field in self.fields.iter() { + field.to_tokens(&mut methods); + } + let required_names = &self.fields.iter() + .filter(|f| f.required) + .map(|f| &f.name) + .collect::>(); + let required_types = &self.fields.iter() + .filter(|f| f.required) + .map(|f| &f.ty) + .collect::>(); + let required_names2 = required_names; + let required_names3 = required_names; + + let const_name = Ident::new(&format!("_CONST_{}", name), Span::call_site()); + (quote! { + #[derive(Clone, Debug)] + #[repr(transparent)] + pub struct #name { + obj: ::js_sys::Object, + } + + impl #name { + pub fn new(#(#required_names: #required_types),*) -> #name { + let mut _ret = #name { obj: ::js_sys::Object::new() }; + #(_ret.#required_names2(#required_names3);)* + return _ret + } + + #methods + } + + #[allow(bad_style)] + const #const_name: () = { + use js_sys::Object; + use wasm_bindgen::describe::WasmDescribe; + use wasm_bindgen::convert::*; + use wasm_bindgen::{JsValue, JsCast}; + use wasm_bindgen::__rt::core::mem::ManuallyDrop; + + // interop w/ JsValue + impl From<#name> for JsValue { + fn from(val: #name) -> JsValue { + val.obj.into() + } + } + impl AsRef for #name { + fn as_ref(&self) -> &JsValue { self.obj.as_ref() } + } + impl AsMut for #name { + fn as_mut(&mut self) -> &mut JsValue { self.obj.as_mut() } + } + + // Boundary conversion impls + impl WasmDescribe for #name { + fn describe() { + Object::describe(); + } + } + + impl IntoWasmAbi for #name { + type Abi = ::Abi; + fn into_abi(self, extra: &mut Stack) -> Self::Abi { + self.obj.into_abi(extra) + } + } + + impl<'a> IntoWasmAbi for &'a #name { + type Abi = <&'a Object as IntoWasmAbi>::Abi; + fn into_abi(self, extra: &mut Stack) -> Self::Abi { + (&self.obj).into_abi(extra) + } + } + + impl FromWasmAbi for #name { + type Abi = ::Abi; + unsafe fn from_abi(abi: Self::Abi, extra: &mut Stack) -> Self { + #name { obj: Object::from_abi(abi, extra) } + } + } + + impl OptionIntoWasmAbi for #name { + fn none() -> Self::Abi { Object::none() } + } + impl<'a> OptionIntoWasmAbi for &'a #name { + fn none() -> Self::Abi { <&'a Object>::none() } + } + impl OptionFromWasmAbi for #name { + fn is_none(abi: &Self::Abi) -> bool { Object::is_none(abi) } + } + + impl RefFromWasmAbi for #name { + type Abi = ::Abi; + type Anchor = ManuallyDrop<#name>; + + unsafe fn ref_from_abi(js: Self::Abi, extra: &mut Stack) -> Self::Anchor { + let tmp = ::ref_from_abi(js, extra); + ManuallyDrop::new(#name { + obj: ManuallyDrop::into_inner(tmp), + }) + } + } + + impl JsCast for #name { + fn instanceof(val: &JsValue) -> bool { + Object::instanceof(val) + } + + fn unchecked_from_js(val: JsValue) -> Self { + #name { obj: Object::unchecked_from_js(val) } + } + + fn unchecked_from_js_ref(val: &JsValue) -> &Self { + unsafe { &*(val as *const JsValue as *const #name) } + } + + fn unchecked_from_js_mut(val: &mut JsValue) -> &mut Self { + unsafe { &mut *(val as *mut JsValue as *mut #name) } + } + } + }; + }).to_tokens(tokens); + } +} + +impl ToTokens for ast::DictionaryField { + fn to_tokens(&self, tokens: &mut TokenStream) { + let name = &self.name; + let ty = &self.ty; + (quote! { + pub fn #name(&mut self, val: #ty) -> &mut Self { + use wasm_bindgen::JsValue; + ::js_sys::Reflect::set( + self.obj.as_ref(), + &JsValue::from(stringify!(#name)), + &JsValue::from(val), + ); + self + } + }).to_tokens(tokens); + } +} + /// Emits the necessary glue tokens for "descriptor", generating an appropriate /// symbol name as well as attributes around the descriptor function itself. struct Descriptor<'a, T>(&'a Ident, T); diff --git a/crates/backend/src/defined.rs b/crates/backend/src/defined.rs index 82f42c09..a7f6359e 100644 --- a/crates/backend/src/defined.rs +++ b/crates/backend/src/defined.rs @@ -84,6 +84,7 @@ impl ImportedTypes for ast::Program { { self.imports.imported_types(f); self.consts.imported_types(f); + self.dictionaries.imported_types(f); } } @@ -298,21 +299,44 @@ impl ImportedTypes for ast::Const { } } +impl ImportedTypes for ast::Dictionary { + fn imported_types(&self, f: &mut F) + where + F: FnMut(&Ident, ImportedTypeKind), + { + f(&self.name, ImportedTypeKind::Definition); + for field in self.fields.iter() { + field.imported_types(f); + } + } +} + +impl ImportedTypes for ast::DictionaryField { + fn imported_types(&self, f: &mut F) + where + F: FnMut(&Ident, ImportedTypeKind), + { + self.ty.imported_types(f); + } +} + /// Remove any methods, statics, &c, that reference types that are *not* /// defined. pub trait RemoveUndefinedImports { - fn remove_undefined_imports(&mut self, is_defined: &F) + fn remove_undefined_imports(&mut self, is_defined: &F) -> bool where F: Fn(&Ident) -> bool; } impl RemoveUndefinedImports for ast::Program { - fn remove_undefined_imports(&mut self, is_defined: &F) + fn remove_undefined_imports(&mut self, is_defined: &F) -> bool where F: Fn(&Ident) -> bool, { - self.imports.remove_undefined_imports(is_defined); - self.consts.remove_undefined_imports(is_defined); + let a = self.imports.remove_undefined_imports(is_defined); + let b = self.consts.remove_undefined_imports(is_defined); + let c = self.dictionaries.remove_undefined_imports(is_defined); + a || b || c } } @@ -320,10 +344,11 @@ impl RemoveUndefinedImports for Vec where T: ImportedTypeReferences, { - fn remove_undefined_imports(&mut self, is_defined: &F) + fn remove_undefined_imports(&mut self, is_defined: &F) -> bool where F: Fn(&Ident) -> bool, { + let before = self.len(); self.retain(|x| { let mut all_defined = true; x.imported_type_references(&mut |id| { @@ -336,5 +361,6 @@ where }); all_defined }); + before != self.len() } } diff --git a/crates/backend/src/error.rs b/crates/backend/src/error.rs index e1ec137e..b0c77763 100644 --- a/crates/backend/src/error.rs +++ b/crates/backend/src/error.rs @@ -1,5 +1,5 @@ use proc_macro2::*; -use quote::ToTokens; +use quote::{ToTokens, TokenStreamExt}; #[macro_export] macro_rules! err_span { @@ -79,13 +79,13 @@ impl ToTokens for Diagnostic { Repr::Single { text, span } => { let cs2 = (Span::call_site(), Span::call_site()); let (start, end) = span.unwrap_or(cs2); - dst.extend(Some(Ident::new("compile_error", start).into())); - dst.extend(Some(Punct::new('!', Spacing::Alone).into())); + dst.append(Ident::new("compile_error", start)); + dst.append(Punct::new('!', Spacing::Alone)); let mut message = TokenStream::new(); - message.extend(Some(Literal::string(text).into())); + message.append(Literal::string(text)); let mut group = Group::new(Delimiter::Brace, message); group.set_span(end); - dst.extend(Some(group.into())); + dst.append(group); } Repr::Multi { diagnostics } => { for diagnostic in diagnostics { diff --git a/crates/cli-support/Cargo.toml b/crates/cli-support/Cargo.toml index fc4a1659..e47dfeb5 100644 --- a/crates/cli-support/Cargo.toml +++ b/crates/cli-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-cli-support" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli-support" @@ -17,6 +17,6 @@ parity-wasm = "0.31" serde = "1.0" serde_json = "1.0" tempfile = "3.0" -wasm-bindgen-shared = { path = "../shared", version = '=0.2.16' } +wasm-bindgen-shared = { path = "../shared", version = '=0.2.17' } wasm-gc-api = "0.1.9" wasmi = "0.3" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 2bb351ea..7f4291fa 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-cli" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli" @@ -23,8 +23,8 @@ rouille = { version = "2.1.0", default-features = false } serde = "1.0" serde_derive = "1.0" serde_json = "1.0" -wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.16" } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.16" } +wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.17" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.17" } openssl = { version = '0.10.11', optional = true } [features] diff --git a/crates/futures/Cargo.toml b/crates/futures/Cargo.toml index d49667a2..1e8fadab 100644 --- a/crates/futures/Cargo.toml +++ b/crates/futures/Cargo.toml @@ -7,12 +7,12 @@ license = "MIT/Apache-2.0" name = "wasm-bindgen-futures" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/futures" readme = "./README.md" -version = "0.2.16" +version = "0.2.17" [dependencies] futures = "0.1.20" js-sys = { path = "../js-sys", version = '0.2.1' } -wasm-bindgen = { path = "../..", version = '0.2.16' } +wasm-bindgen = { path = "../..", version = '0.2.17' } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = { path = '../test', version = '0.2.16' } +wasm-bindgen-test = { path = '../test', version = '0.2.17' } diff --git a/crates/js-sys/Cargo.toml b/crates/js-sys/Cargo.toml index ac8c7c76..fada74bc 100644 --- a/crates/js-sys/Cargo.toml +++ b/crates/js-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "js-sys" -version = "0.2.1" +version = "0.2.2" authors = ["The wasm-bindgen Developers"] readme = "./README.md" categories = ["wasm"] @@ -18,9 +18,9 @@ test = false doctest = false [dependencies] -wasm-bindgen = { path = "../..", version = "0.2.16" } +wasm-bindgen = { path = "../..", version = "0.2.17" } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] futures = "0.1.20" -wasm-bindgen-test = { path = '../test', version = '=0.2.16' } -wasm-bindgen-futures = { path = '../futures', version = '=0.2.16' } +wasm-bindgen-test = { path = '../test', version = '=0.2.17' } +wasm-bindgen-futures = { path = '../futures', version = '=0.2.17' } diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index dbc2f6e0..d9110259 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -683,8 +683,7 @@ extern "C" { // Float32Array #[wasm_bindgen] extern "C" { - // TODO Uncomment this once TypedArray is added: - // #[wasm_bindgen(extends = Object, extends = TypedArray)] + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Float32Array; @@ -737,8 +736,7 @@ extern "C" { // Float64Array #[wasm_bindgen] extern "C" { - // TODO Uncomment this once TypedArray is added: - // #[wasm_bindgen(extends = Object, extends = TypedArray)] + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Float64Array; @@ -914,6 +912,7 @@ extern { // Int8Array #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Int8Array; @@ -966,6 +965,7 @@ extern "C" { // Int16Array #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Int16Array; @@ -1018,6 +1018,7 @@ extern "C" { // Int32Array #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Int32Array; @@ -2539,6 +2540,7 @@ extern { // Uint8Array #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Uint8Array; @@ -2591,6 +2593,7 @@ extern "C" { // Uint8ClampedArray #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Uint8ClampedArray; @@ -2645,6 +2648,7 @@ extern "C" { // Uint16Array #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Uint16Array; @@ -2697,6 +2701,7 @@ extern "C" { // Uint32Array #[wasm_bindgen] extern "C" { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Uint32Array; diff --git a/crates/js-sys/tests/wasm/RangeError.rs b/crates/js-sys/tests/wasm/RangeError.rs index c3470d26..18c7d7d0 100644 --- a/crates/js-sys/tests/wasm/RangeError.rs +++ b/crates/js-sys/tests/wasm/RangeError.rs @@ -8,6 +8,7 @@ fn range_error() { let error = RangeError::new("out of range yo"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "out of range yo"); diff --git a/crates/js-sys/tests/wasm/ReferenceError.rs b/crates/js-sys/tests/wasm/ReferenceError.rs index 22e2518c..218ad52e 100644 --- a/crates/js-sys/tests/wasm/ReferenceError.rs +++ b/crates/js-sys/tests/wasm/ReferenceError.rs @@ -8,6 +8,7 @@ fn reference_error() { let error = ReferenceError::new("bad reference, fool"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "bad reference, fool"); diff --git a/crates/js-sys/tests/wasm/SyntaxError.rs b/crates/js-sys/tests/wasm/SyntaxError.rs index 57d86371..23a211f0 100644 --- a/crates/js-sys/tests/wasm/SyntaxError.rs +++ b/crates/js-sys/tests/wasm/SyntaxError.rs @@ -8,6 +8,7 @@ fn syntax_error() { let error = SyntaxError::new("msg"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/js-sys/tests/wasm/TypeError.rs b/crates/js-sys/tests/wasm/TypeError.rs index e82cf091..ef7b09fb 100644 --- a/crates/js-sys/tests/wasm/TypeError.rs +++ b/crates/js-sys/tests/wasm/TypeError.rs @@ -8,6 +8,7 @@ fn type_error() { let error = TypeError::new("msg"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/js-sys/tests/wasm/TypedArray.rs b/crates/js-sys/tests/wasm/TypedArray.rs index e3b6292a..5c1e88fc 100644 --- a/crates/js-sys/tests/wasm/TypedArray.rs +++ b/crates/js-sys/tests/wasm/TypedArray.rs @@ -1,5 +1,6 @@ use wasm_bindgen::prelude::*; use wasm_bindgen_test::*; +use wasm_bindgen::JsCast; use js_sys::*; macro_rules! each { @@ -16,6 +17,19 @@ macro_rules! each { ) } +macro_rules! test_inheritence { + ($arr:ident) => ({ + let arr = $arr::new(&JsValue::undefined()); + assert!(arr.is_instance_of::<$arr>()); + let _: &Object = arr.as_ref(); + assert!(arr.is_instance_of::()); + }) +} +#[wasm_bindgen_test] +fn inheritence() { + each!(test_inheritence); +} + macro_rules! test_undefined { ($arr:ident) => ({ let arr = $arr::new(&JsValue::undefined()); diff --git a/crates/js-sys/tests/wasm/UriError.rs b/crates/js-sys/tests/wasm/UriError.rs index 86ff417e..ddcafc49 100644 --- a/crates/js-sys/tests/wasm/UriError.rs +++ b/crates/js-sys/tests/wasm/UriError.rs @@ -8,6 +8,7 @@ fn uri_error() { let error = UriError::new("msg"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/macro-support/Cargo.toml b/crates/macro-support/Cargo.toml index c1d4c6eb..49c867d4 100644 --- a/crates/macro-support/Cargo.toml +++ b/crates/macro-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-macro-support" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support" @@ -18,5 +18,5 @@ extra-traits = ["syn/extra-traits"] syn = { version = '0.14', features = ['full'] } quote = '0.6' proc-macro2 = "0.4.9" -wasm-bindgen-backend = { path = "../backend", version = "=0.2.16" } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.16" } +wasm-bindgen-backend = { path = "../backend", version = "=0.2.17" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.17" } diff --git a/crates/macro/Cargo.toml b/crates/macro/Cargo.toml index 091ac82c..2f46fc16 100644 --- a/crates/macro/Cargo.toml +++ b/crates/macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-macro" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro" @@ -18,5 +18,5 @@ spans = ["wasm-bindgen-macro-support/spans"] xxx_debug_only_print_generated_code = [] [dependencies] -wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.16" } +wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.17" } quote = "0.6" diff --git a/crates/macro/ui-tests/invalid-attr.rs b/crates/macro/ui-tests/invalid-attr.rs index 23da4263..74c95a97 100644 --- a/crates/macro/ui-tests/invalid-attr.rs +++ b/crates/macro/ui-tests/invalid-attr.rs @@ -12,12 +12,6 @@ extern "C" { #[wasm_bindgen(y)] fn bar(); - #[wasm_bindgen z] - fn bar(); - - #[wasm_bindgen(z2) x] - fn bar(); - #[wasm_bindgen { }] fn bar(); } diff --git a/crates/macro/ui-tests/invalid-attr.stderr b/crates/macro/ui-tests/invalid-attr.stderr index faec4976..a35479da 100644 --- a/crates/macro/ui-tests/invalid-attr.stderr +++ b/crates/macro/ui-tests/invalid-attr.stderr @@ -13,20 +13,8 @@ error: error parsing #[wasm_bindgen] attribute options: failed to parse anything error: malformed #[wasm_bindgen] attribute --> $DIR/invalid-attr.rs:15:5 | -15 | #[wasm_bindgen z] - | ^^^^^^^^^^^^^^^^^ - -error: malformed #[wasm_bindgen] attribute - --> $DIR/invalid-attr.rs:18:5 - | -18 | #[wasm_bindgen(z2) x] - | ^^^^^^^^^^^^^^^^^^^^^ - -error: malformed #[wasm_bindgen] attribute - --> $DIR/invalid-attr.rs:21:5 - | -21 | #[wasm_bindgen { }] +15 | #[wasm_bindgen { }] | ^^^^^^^^^^^^^^^^^^^^ -error: aborting due to 5 previous errors +error: aborting due to 3 previous errors diff --git a/crates/shared/Cargo.toml b/crates/shared/Cargo.toml index a66d03dd..9b6d9b80 100644 --- a/crates/shared/Cargo.toml +++ b/crates/shared/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-shared" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared" diff --git a/crates/test-macro/Cargo.toml b/crates/test-macro/Cargo.toml index ae45f7f3..14271bb4 100644 --- a/crates/test-macro/Cargo.toml +++ b/crates/test-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-test-macro" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] description = "Internal testing macro for wasm-bindgen" license = "MIT/Apache-2.0" diff --git a/crates/test/Cargo.toml b/crates/test/Cargo.toml index a0d1cea8..274cae20 100644 --- a/crates/test/Cargo.toml +++ b/crates/test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-test" -version = "0.2.16" +version = "0.2.17" authors = ["The wasm-bindgen Developers"] description = "Internal testing crate for wasm-bindgen" license = "MIT/Apache-2.0" @@ -11,9 +11,9 @@ console_error_panic_hook = '0.1' futures = "0.1" js-sys = { path = '../js-sys', version = '0.2.1' } scoped-tls = "0.1" -wasm-bindgen = { path = '../..', version = '0.2.16' } -wasm-bindgen-futures = { path = '../futures', version = '0.2.16' } -wasm-bindgen-test-macro = { path = '../test-macro', version = '=0.2.16' } +wasm-bindgen = { path = '../..', version = '0.2.17' } +wasm-bindgen-futures = { path = '../futures', version = '0.2.17' } +wasm-bindgen-test-macro = { path = '../test-macro', version = '=0.2.17' } [lib] test = false diff --git a/crates/web-sys/Cargo.toml b/crates/web-sys/Cargo.toml index 3c4b9614..25261494 100644 --- a/crates/web-sys/Cargo.toml +++ b/crates/web-sys/Cargo.toml @@ -11,15 +11,15 @@ test = false [build-dependencies] env_logger = "0.5.10" failure = "0.1.2" -wasm-bindgen-webidl = { path = "../webidl", version = "=0.2.16" } +wasm-bindgen-webidl = { path = "../webidl", version = "=0.2.17" } sourcefile = "0.1" [dependencies] -wasm-bindgen = { path = "../..", version = "0.2.16" } +wasm-bindgen = { path = "../..", version = "0.2.17" } js-sys = { path = '../js-sys', version = '0.2.1' } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] futures = "0.1" js-sys = { path = '../js-sys', version = '0.2.1' } -wasm-bindgen-test = { path = '../test', version = '0.2.16' } -wasm-bindgen-futures = { path = '../futures', version = '0.2.16' } +wasm-bindgen-test = { path = '../test', version = '0.2.17' } +wasm-bindgen-futures = { path = '../futures', version = '0.2.17' } diff --git a/crates/web-sys/webidls/enabled/AbstractWorker.webidl b/crates/web-sys/webidls/enabled/AbstractWorker.webidl index 7ea6e367..1475833e 100644 --- a/crates/web-sys/webidls/enabled/AbstractWorker.webidl +++ b/crates/web-sys/webidls/enabled/AbstractWorker.webidl @@ -4,7 +4,7 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -[NoInterfaceObject, Exposed=(Window,Worker,System)] -interface AbstractWorker { +[Exposed=(Window,Worker,System)] +interface mixin AbstractWorker { attribute EventHandler onerror; }; diff --git a/crates/web-sys/webidls/enabled/AnalyserNode.webidl b/crates/web-sys/webidls/enabled/AnalyserNode.webidl index 73c697f0..5834f943 100644 --- a/crates/web-sys/webidls/enabled/AnalyserNode.webidl +++ b/crates/web-sys/webidls/enabled/AnalyserNode.webidl @@ -43,6 +43,3 @@ interface AnalyserNode : AudioNode { attribute double smoothingTimeConstant; }; - -// Mozilla extension -AnalyserNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/Attr.webidl b/crates/web-sys/webidls/enabled/Attr.webidl index 921e2df8..28914dd0 100644 --- a/crates/web-sys/webidls/enabled/Attr.webidl +++ b/crates/web-sys/webidls/enabled/Attr.webidl @@ -24,10 +24,3 @@ interface Attr : Node { readonly attribute boolean specified; }; - -// Mozilla extensions - -partial interface Attr { - [GetterThrows] - readonly attribute Element? ownerElement; -}; diff --git a/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl b/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl index 1c30db3d..729550c5 100644 --- a/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl +++ b/crates/web-sys/webidls/enabled/AudioBufferSourceNode.webidl @@ -36,6 +36,3 @@ interface AudioBufferSourceNode : AudioScheduledSourceNode { void start(optional double when = 0, optional double grainOffset = 0, optional double grainDuration); }; - -// Mozilla extensions -AudioBufferSourceNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/AudioNode.webidl b/crates/web-sys/webidls/enabled/AudioNode.webidl index 80b33e50..7f4cbbf8 100644 --- a/crates/web-sys/webidls/enabled/AudioNode.webidl +++ b/crates/web-sys/webidls/enabled/AudioNode.webidl @@ -62,15 +62,3 @@ interface AudioNode : EventTarget { attribute ChannelInterpretation channelInterpretation; }; - -// Mozilla extension -partial interface AudioNode { - [ChromeOnly] - readonly attribute unsigned long id; -}; -[NoInterfaceObject] -interface AudioNodePassThrough { - [ChromeOnly] - attribute boolean passThrough; -}; - diff --git a/crates/web-sys/webidls/enabled/AudioParam.webidl b/crates/web-sys/webidls/enabled/AudioParam.webidl index 7e151b41..c9870438 100644 --- a/crates/web-sys/webidls/enabled/AudioParam.webidl +++ b/crates/web-sys/webidls/enabled/AudioParam.webidl @@ -18,7 +18,7 @@ interface AudioParam { readonly attribute float minValue; readonly attribute float maxValue; - // Parameter automation. + // Parameter automation. [Throws] AudioParam setValueAtTime(float value, double startTime); [Throws] @@ -26,27 +26,17 @@ interface AudioParam { [Throws] AudioParam exponentialRampToValueAtTime(float value, double endTime); - // Exponentially approach the target value with a rate having the given time constant. + // Exponentially approach the target value with a rate having the given time constant. [Throws] AudioParam setTargetAtTime(float target, double startTime, double timeConstant); - // Sets an array of arbitrary parameter values starting at time for the given duration. - // The number of values will be scaled to fit into the desired duration. + // Sets an array of arbitrary parameter values starting at time for the given duration. + // The number of values will be scaled to fit into the desired duration. [Throws] AudioParam setValueCurveAtTime(Float32Array values, double startTime, double duration); - // Cancels all scheduled parameter changes with times greater than or equal to startTime. + // Cancels all scheduled parameter changes with times greater than or equal to startTime. [Throws] AudioParam cancelScheduledValues(double startTime); }; - -// Mozilla extension -partial interface AudioParam { - // The ID of the AudioNode this AudioParam belongs to. - [ChromeOnly] - readonly attribute unsigned long parentNodeId; - // The name of the AudioParam - [ChromeOnly] - readonly attribute DOMString name; -}; diff --git a/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl b/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl index c9ac0f0b..420d3026 100644 --- a/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl +++ b/crates/web-sys/webidls/enabled/BiquadFilterNode.webidl @@ -44,7 +44,3 @@ interface BiquadFilterNode : AudioNode { Float32Array phaseResponse); }; - -// Mozilla extension -BiquadFilterNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/BoxObject.webidl b/crates/web-sys/webidls/enabled/BoxObject.webidl deleted file mode 100644 index 8bebd6c9..00000000 --- a/crates/web-sys/webidls/enabled/BoxObject.webidl +++ /dev/null @@ -1,33 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 http://mozilla.org/MPL/2.0/. - */ - -[Func="IsChromeOrXBL"] -interface BoxObject { - readonly attribute Element? element; - - readonly attribute long x; - readonly attribute long y; - [Throws] - readonly attribute long screenX; - [Throws] - readonly attribute long screenY; - readonly attribute long width; - readonly attribute long height; - - nsISupports? getPropertyAsSupports(DOMString propertyName); - void setPropertyAsSupports(DOMString propertyName, nsISupports value); - [Throws] - DOMString? getProperty(DOMString propertyName); - void setProperty(DOMString propertyName, DOMString propertyValue); - void removeProperty(DOMString propertyName); - - // for stepping through content in the expanded dom with box-ordinal-group order - readonly attribute Element? parentBox; - readonly attribute Element? firstChild; - readonly attribute Element? lastChild; - readonly attribute Element? nextSibling; - readonly attribute Element? previousSibling; -}; diff --git a/crates/web-sys/webidls/enabled/BrowserElement.webidl b/crates/web-sys/webidls/enabled/BrowserElement.webidl index 8a683d94..c899d667 100644 --- a/crates/web-sys/webidls/enabled/BrowserElement.webidl +++ b/crates/web-sys/webidls/enabled/BrowserElement.webidl @@ -19,15 +19,13 @@ dictionary BrowserElementExecuteScriptOptions { DOMString? origin; }; -[NoInterfaceObject] -interface BrowserElement { +interface mixin BrowserElement { }; -BrowserElement implements BrowserElementCommon; -BrowserElement implements BrowserElementPrivileged; +BrowserElement includes BrowserElementCommon; +BrowserElement includes BrowserElementPrivileged; -[NoInterfaceObject] -interface BrowserElementCommon { +interface mixin BrowserElementCommon { [Throws, Pref="dom.mozBrowserFramesEnabled", ChromeOnly] @@ -39,8 +37,7 @@ interface BrowserElementCommon { void removeNextPaintListener(BrowserElementNextPaintEventCallback listener); }; -[NoInterfaceObject] -interface BrowserElementPrivileged { +interface mixin BrowserElementPrivileged { [Throws, Pref="dom.mozBrowserFramesEnabled", ChromeOnly] diff --git a/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl b/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl index 6d33baf0..14572809 100644 --- a/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl +++ b/crates/web-sys/webidls/enabled/CSSPseudoElement.webidl @@ -22,4 +22,4 @@ interface CSSPseudoElement { }; // https://drafts.csswg.org/web-animations/#extensions-to-the-pseudoelement-interface -CSSPseudoElement implements Animatable; +CSSPseudoElement includes Animatable; diff --git a/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl b/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl index 13f61d4f..26ae81b7 100644 --- a/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl +++ b/crates/web-sys/webidls/enabled/CanvasRenderingContext2D.webidl @@ -40,21 +40,6 @@ interface CanvasRenderingContext2D { // associated with a canvas. readonly attribute HTMLCanvasElement? canvas; - // Mozilla-specific stuff - // FIXME Bug 768048 mozCurrentTransform/mozCurrentTransformInverse should return a WebIDL array. - [Throws] - attribute object mozCurrentTransform; // [ m11, m12, m21, m22, dx, dy ], i.e. row major - [Throws] - attribute object mozCurrentTransformInverse; - - [SetterThrows] - attribute DOMString mozTextStyle; - - // image smoothing mode -- if disabled, images won't be smoothed - // if scaled. - [Deprecated="PrefixedImageSmoothingEnabled"] - attribute boolean mozImageSmoothingEnabled; - // Show the caret if appropriate when drawing [Func="CanvasUtils::HasDrawWindowPrivilege"] const unsigned long DRAWWINDOW_DRAW_CARET = 0x01; @@ -122,34 +107,31 @@ interface CanvasRenderingContext2D { void demote(); }; -CanvasRenderingContext2D implements CanvasState; -CanvasRenderingContext2D implements CanvasTransform; -CanvasRenderingContext2D implements CanvasCompositing; -CanvasRenderingContext2D implements CanvasImageSmoothing; -CanvasRenderingContext2D implements CanvasFillStrokeStyles; -CanvasRenderingContext2D implements CanvasShadowStyles; -CanvasRenderingContext2D implements CanvasFilters; -CanvasRenderingContext2D implements CanvasRect; -CanvasRenderingContext2D implements CanvasDrawPath; -CanvasRenderingContext2D implements CanvasUserInterface; -CanvasRenderingContext2D implements CanvasText; -CanvasRenderingContext2D implements CanvasDrawImage; -CanvasRenderingContext2D implements CanvasImageData; -CanvasRenderingContext2D implements CanvasPathDrawingStyles; -CanvasRenderingContext2D implements CanvasTextDrawingStyles; -CanvasRenderingContext2D implements CanvasPathMethods; -CanvasRenderingContext2D implements CanvasHitRegions; +CanvasRenderingContext2D includes CanvasState; +CanvasRenderingContext2D includes CanvasTransform; +CanvasRenderingContext2D includes CanvasCompositing; +CanvasRenderingContext2D includes CanvasImageSmoothing; +CanvasRenderingContext2D includes CanvasFillStrokeStyles; +CanvasRenderingContext2D includes CanvasShadowStyles; +CanvasRenderingContext2D includes CanvasFilters; +CanvasRenderingContext2D includes CanvasRect; +CanvasRenderingContext2D includes CanvasDrawPath; +CanvasRenderingContext2D includes CanvasUserInterface; +CanvasRenderingContext2D includes CanvasText; +CanvasRenderingContext2D includes CanvasDrawImage; +CanvasRenderingContext2D includes CanvasImageData; +CanvasRenderingContext2D includes CanvasPathDrawingStyles; +CanvasRenderingContext2D includes CanvasTextDrawingStyles; +CanvasRenderingContext2D includes CanvasPathMethods; +CanvasRenderingContext2D includes CanvasHitRegions; - -[NoInterfaceObject] -interface CanvasState { +interface mixin CanvasState { // state void save(); // push state on state stack void restore(); // pop state stack and restore state }; -[NoInterfaceObject] -interface CanvasTransform { +interface mixin CanvasTransform { // transformations (default transform is the identity matrix) // NOT IMPLEMENTED attribute SVGMatrix currentTransform; [Throws, LenientFloat] @@ -167,20 +149,18 @@ interface CanvasTransform { }; [NoInterfaceObject] -interface CanvasCompositing { +interface mixin CanvasCompositing { attribute unrestricted double globalAlpha; // (default 1.0) [Throws] attribute DOMString globalCompositeOperation; // (default source-over) }; -[NoInterfaceObject] -interface CanvasImageSmoothing { +interface mixin CanvasImageSmoothing { // drawing images attribute boolean imageSmoothingEnabled; }; -[NoInterfaceObject] -interface CanvasFillStrokeStyles { +interface mixin CanvasFillStrokeStyles { // colors and styles (see also the CanvasPathDrawingStyles interface) attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) @@ -192,8 +172,7 @@ interface CanvasFillStrokeStyles { CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition); }; -[NoInterfaceObject] -interface CanvasShadowStyles { +interface mixin CanvasShadowStyles { [LenientFloat] attribute double shadowOffsetX; // (default 0) [LenientFloat] @@ -203,14 +182,12 @@ interface CanvasShadowStyles { attribute DOMString shadowColor; // (default transparent black) }; -[NoInterfaceObject] -interface CanvasFilters { +interface mixin CanvasFilters { [Pref="canvas.filters.enabled", SetterThrows] attribute DOMString filter; // (default empty string = no filter) }; -[NoInterfaceObject] -interface CanvasRect { +interface mixin CanvasRect { [LenientFloat] void clearRect(double x, double y, double w, double h); [LenientFloat] @@ -219,8 +196,7 @@ interface CanvasRect { void strokeRect(double x, double y, double w, double h); }; -[NoInterfaceObject] -interface CanvasDrawPath { +interface mixin CanvasDrawPath { // path API (see also CanvasPathMethods) void beginPath(); void fill(optional CanvasWindingRule winding = "nonzero"); @@ -240,8 +216,7 @@ interface CanvasDrawPath { boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); }; -[NoInterfaceObject] -interface CanvasUserInterface { +interface mixin CanvasUserInterface { [Pref="canvas.focusring.enabled", Throws] void drawFocusIfNeeded(Element element); // NOT IMPLEMENTED void drawSystemFocusRing(Path path, HTMLElement element); [Pref="canvas.customfocusring.enabled"] boolean drawCustomFocusRing(Element element); @@ -250,8 +225,7 @@ interface CanvasUserInterface { // NOT IMPLEMENTED void scrollPathIntoView(Path path); }; -[NoInterfaceObject] -interface CanvasText { +interface mixin CanvasText { // text (see also the CanvasPathDrawingStyles interface) [Throws, LenientFloat] void fillText(DOMString text, double x, double y, optional double maxWidth); @@ -261,8 +235,7 @@ interface CanvasText { TextMetrics measureText(DOMString text); }; -[NoInterfaceObject] -interface CanvasDrawImage { +interface mixin CanvasDrawImage { [Throws, LenientFloat] void drawImage(CanvasImageSource image, double dx, double dy); [Throws, LenientFloat] @@ -271,8 +244,7 @@ interface CanvasDrawImage { void drawImage(CanvasImageSource image, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh); }; -[NoInterfaceObject] -interface CanvasImageData { +interface mixin CanvasImageData { // pixel manipulation [NewObject, Throws] ImageData createImageData(double sw, double sh); @@ -286,8 +258,7 @@ interface CanvasImageData { void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight); }; -[NoInterfaceObject] -interface CanvasPathDrawingStyles { +interface mixin CanvasPathDrawingStyles { // line caps/joins [LenientFloat] attribute double lineWidth; // (default 1) @@ -303,8 +274,7 @@ interface CanvasPathDrawingStyles { [LenientFloat] attribute double lineDashOffset; }; -[NoInterfaceObject] -interface CanvasTextDrawingStyles { +interface mixin CanvasTextDrawingStyles { // text [SetterThrows] attribute DOMString font; // (default 10px sans-serif) @@ -312,8 +282,7 @@ interface CanvasTextDrawingStyles { attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") }; -[NoInterfaceObject] -interface CanvasPathMethods { +interface mixin CanvasPathMethods { // shared path API methods void closePath(); [LenientFloat] @@ -340,8 +309,7 @@ interface CanvasPathMethods { void ellipse(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, optional boolean anticlockwise = false); }; -[NoInterfaceObject] -interface CanvasHitRegions { +interface mixin CanvasHitRegions { // hit regions [Pref="canvas.hitregions.enabled", Throws] void addHitRegion(optional HitRegionOptions options); [Pref="canvas.hitregions.enabled"] void removeHitRegion(DOMString id); @@ -397,4 +365,4 @@ interface Path2D { void addPath(Path2D path, optional SVGMatrix transformation); }; -Path2D implements CanvasPathMethods; +Path2D includes CanvasPathMethods; diff --git a/crates/web-sys/webidls/enabled/CharacterData.webidl b/crates/web-sys/webidls/enabled/CharacterData.webidl index 8d6a214e..a07bd0a1 100644 --- a/crates/web-sys/webidls/enabled/CharacterData.webidl +++ b/crates/web-sys/webidls/enabled/CharacterData.webidl @@ -27,5 +27,5 @@ interface CharacterData : Node { void replaceData(unsigned long offset, unsigned long count, DOMString data); }; -CharacterData implements ChildNode; -CharacterData implements NonDocumentTypeChildNode; +CharacterData includes ChildNode; +CharacterData includes NonDocumentTypeChildNode; diff --git a/crates/web-sys/webidls/enabled/ChildNode.webidl b/crates/web-sys/webidls/enabled/ChildNode.webidl index ae36cd93..3b125463 100644 --- a/crates/web-sys/webidls/enabled/ChildNode.webidl +++ b/crates/web-sys/webidls/enabled/ChildNode.webidl @@ -7,8 +7,7 @@ * http://dom.spec.whatwg.org/#interface-childnode */ -[NoInterfaceObject] -interface ChildNode { +interface mixin ChildNode { [CEReactions, Throws, Unscopable] void before((Node or DOMString)... nodes); [CEReactions, Throws, Unscopable] @@ -19,8 +18,7 @@ interface ChildNode { void remove(); }; -[NoInterfaceObject] -interface NonDocumentTypeChildNode { +interface mixin NonDocumentTypeChildNode { [Pure] readonly attribute Element? previousElementSibling; [Pure] diff --git a/crates/web-sys/webidls/enabled/ChromeNodeList.webidl b/crates/web-sys/webidls/enabled/ChromeNodeList.webidl deleted file mode 100644 index 3f062f2a..00000000 --- a/crates/web-sys/webidls/enabled/ChromeNodeList.webidl +++ /dev/null @@ -1,13 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 http://mozilla.org/MPL/2.0/. - */ - -[Constructor, Func="IsChromeOrXBL"] -interface ChromeNodeList : NodeList { - [Throws] - void append(Node aNode); - [Throws] - void remove(Node aNode); -}; diff --git a/crates/web-sys/webidls/enabled/CommandEvent.webidl b/crates/web-sys/webidls/enabled/CommandEvent.webidl deleted file mode 100644 index 0ce0a4e0..00000000 --- a/crates/web-sys/webidls/enabled/CommandEvent.webidl +++ /dev/null @@ -1,10 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 http://mozilla.org/MPL/2.0/. - */ - -[Func="IsChromeOrXBL"] -interface CommandEvent : Event { - readonly attribute DOMString? command; -}; diff --git a/crates/web-sys/webidls/enabled/ConvolverNode.webidl b/crates/web-sys/webidls/enabled/ConvolverNode.webidl index 0e0e1137..1e66d535 100644 --- a/crates/web-sys/webidls/enabled/ConvolverNode.webidl +++ b/crates/web-sys/webidls/enabled/ConvolverNode.webidl @@ -24,7 +24,3 @@ interface ConvolverNode : AudioNode { attribute boolean normalize; }; - -// Mozilla extension -ConvolverNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/Crypto.webidl b/crates/web-sys/webidls/enabled/Crypto.webidl index 31574a21..448a8631 100644 --- a/crates/web-sys/webidls/enabled/Crypto.webidl +++ b/crates/web-sys/webidls/enabled/Crypto.webidl @@ -7,8 +7,8 @@ * https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#crypto-interface */ -[NoInterfaceObject, Exposed=(Window,Worker)] -interface GlobalCrypto { +[Exposed=(Window,Worker)] +interface mixin GlobalCrypto { [Throws] readonly attribute Crypto crypto; }; diff --git a/crates/web-sys/webidls/enabled/DOMException.webidl b/crates/web-sys/webidls/enabled/DOMException.webidl index cc6aa624..7e979187 100644 --- a/crates/web-sys/webidls/enabled/DOMException.webidl +++ b/crates/web-sys/webidls/enabled/DOMException.webidl @@ -16,9 +16,8 @@ // invalid widl //interface StackFrame; -[NoInterfaceObject, - Exposed=(Window,Worker,System)] -interface ExceptionMembers +[Exposed=(Window,Worker,System)] +interface mixin ExceptionMembers { // The nsresult associated with this exception. readonly attribute unsigned long result; @@ -34,7 +33,7 @@ interface ExceptionMembers readonly attribute DOMString filename; // Valid line numbers begin at '1'. '0' indicates unknown. readonly attribute unsigned long lineNumber; - // Valid column numbers begin at 0. + // Valid column numbers begin at 0. // We don't have an unambiguous indicator for unknown. readonly attribute unsigned long columnNumber; @@ -62,7 +61,7 @@ interface Exception { stringifier; }; -Exception implements ExceptionMembers; +Exception includes ExceptionMembers; // XXXkhuey this is an 'exception', not an interface, but we don't have any // parser or codegen mechanisms for dealing with exceptions. @@ -105,4 +104,4 @@ interface DOMException { // XXXkhuey copy all of Gecko's non-standard stuff onto DOMException, but leave // the prototype chain sane. -DOMException implements ExceptionMembers; +DOMException includes ExceptionMembers; diff --git a/crates/web-sys/webidls/enabled/DOMParser.webidl b/crates/web-sys/webidls/enabled/DOMParser.webidl index 9340acab..61c55a0f 100644 --- a/crates/web-sys/webidls/enabled/DOMParser.webidl +++ b/crates/web-sys/webidls/enabled/DOMParser.webidl @@ -19,23 +19,13 @@ enum SupportedType { "image/svg+xml" }; -// the latter is Mozilla-specific [Constructor] interface DOMParser { [NewObject, Throws] Document parseFromString(DOMString str, SupportedType type); - // Mozilla-specific stuff - [NewObject, Throws, ChromeOnly] - Document parseFromBuffer(sequence buf, SupportedType type); - [NewObject, Throws, ChromeOnly] - Document parseFromBuffer(Uint8Array buf, SupportedType type); - [NewObject, Throws, ChromeOnly] - Document parseFromStream(InputStream stream, DOMString? charset, - long contentLength, SupportedType type); // Can be used to allow a DOMParser to parse XUL/XBL no matter what // principal it's using for the document. [ChromeOnly] void forceEnableXULXBL(); }; - diff --git a/crates/web-sys/webidls/enabled/DOMRequest.webidl b/crates/web-sys/webidls/enabled/DOMRequest.webidl index 2e25fc19..6445f09b 100644 --- a/crates/web-sys/webidls/enabled/DOMRequest.webidl +++ b/crates/web-sys/webidls/enabled/DOMRequest.webidl @@ -5,8 +5,8 @@ enum DOMRequestReadyState { "pending", "done" }; -[Exposed=(Window,Worker,System), NoInterfaceObject] -interface DOMRequestShared { +[Exposed=(Window,Worker,System)] +interface mixin DOMRequestShared { readonly attribute DOMRequestReadyState readyState; readonly attribute any result; @@ -29,4 +29,4 @@ interface DOMRequest : EventTarget { void fireDetailedError(DOMException aError); }; -DOMRequest implements DOMRequestShared; +DOMRequest includes DOMRequestShared; diff --git a/crates/web-sys/webidls/enabled/DataTransfer.webidl b/crates/web-sys/webidls/enabled/DataTransfer.webidl index 0fbec23a..903f916b 100644 --- a/crates/web-sys/webidls/enabled/DataTransfer.webidl +++ b/crates/web-sys/webidls/enabled/DataTransfer.webidl @@ -37,142 +37,3 @@ partial interface DataTransfer { [Throws, Pref="dom.input.dirpicker", NeedsSubjectPrincipal] Promise> getFiles(optional boolean recursiveFlag = false); }; - -// Mozilla specific stuff -partial interface DataTransfer { - /* - * Set the drag source. Usually you would not change this, but it will - * affect which node the drag and dragend events are fired at. The - * default target is the node that was dragged. - * - * @param element drag source to use - * @throws NO_MODIFICATION_ALLOWED_ERR if the item cannot be modified - */ - [Throws, UseCounter] - void addElement(Element element); - - /** - * The number of items being dragged. - */ - [UseCounter] - readonly attribute unsigned long mozItemCount; - - /** - * Sets the drag cursor state. Primarily used to control the cursor during - * tab drags, but could be expanded to other uses. XXX Currently implemented - * on Win32 only. - * - * Possible values: - * auto - use default system behavior. - * default - set the cursor to an arrow during the drag operation. - * - * Values other than 'default' are indentical to setting mozCursor to - * 'auto'. - */ - [UseCounter] - attribute DOMString mozCursor; - - /** - * Holds a list of the format types of the data that is stored for an item - * at the specified index. If the index is not in the range from 0 to - * itemCount - 1, an empty string list is returned. - */ - [Throws, NeedsCallerType, UseCounter] - DOMStringList mozTypesAt(unsigned long index); - - /** - * Remove the data associated with the given format for an item at the - * specified index. The index is in the range from zero to itemCount - 1. - * - * If the last format for the item is removed, the entire item is removed, - * reducing the itemCount by one. - * - * If format is empty, then the data associated with all formats is removed. - * If the format is not found, then this method has no effect. - * - * @param format the format to remove - * @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater or equal than itemCount - * @throws NO_MODIFICATION_ALLOWED_ERR if the item cannot be modified - */ - [Throws, NeedsSubjectPrincipal, UseCounter] - void mozClearDataAt(DOMString format, unsigned long index); - - /* - * A data transfer may store multiple items, each at a given zero-based - * index. setDataAt may only be called with an index argument less than - * itemCount in which case an existing item is modified, or equal to - * itemCount in which case a new item is added, and the itemCount is - * incremented by one. - * - * Data should be added in order of preference, with the most specific - * format added first and the least specific format added last. If data of - * the given format already exists, it is replaced in the same position as - * the old data. - * - * The data should be either a string, a primitive boolean or number type - * (which will be converted into a string) or an nsISupports. - * - * @param format the format to add - * @param data the data to add - * @throws NS_ERROR_NULL_POINTER if the data is null - * @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater than itemCount - * @throws NO_MODIFICATION_ALLOWED_ERR if the item cannot be modified - */ - [Throws, NeedsSubjectPrincipal, UseCounter] - void mozSetDataAt(DOMString format, any data, unsigned long index); - - /** - * Retrieve the data associated with the given format for an item at the - * specified index, or null if it does not exist. The index should be in the - * range from zero to itemCount - 1. - * - * @param format the format of the data to look up - * @returns the data of the given format, or null if it doesn't exist. - * @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater or equal than itemCount - */ - [Throws, NeedsSubjectPrincipal, UseCounter] - any mozGetDataAt(DOMString format, unsigned long index); - - /** - * Update the drag image. Arguments are the same as setDragImage. This is only - * valid within the parent chrome process. - */ - [ChromeOnly] - void updateDragImage(Element image, long x, long y); - - /** - * Will be true when the user has cancelled the drag (typically by pressing - * Escape) and when the drag has been cancelled unexpectedly. This will be - * false otherwise, including when the drop has been rejected by its target. - * This property is only relevant for the dragend event. - */ - [UseCounter] - readonly attribute boolean mozUserCancelled; - - /** - * The node that the mouse was pressed over to begin the drag. For external - * drags, or if the caller cannot access this node, this will be null. - */ - [UseCounter] - readonly attribute Node? mozSourceNode; - - /** - * The URI spec of the triggering principal. This may be different than - * sourceNode's principal when sourceNode is xul:browser and the drag is - * triggered in a browsing context inside it. - */ - [ChromeOnly] - readonly attribute DOMString mozTriggeringPrincipalURISpec; - - /** - * Copy the given DataTransfer for the given event. Used by testing code for - * creating emulated Drag and Drop events in the UI. - * - * NOTE: Don't expose a DataTransfer produced with this method to the web or - * use this for non-testing purposes. It can easily be used to get the - * DataTransfer into an invalid state, and is an unstable implementation - * detail of EventUtils.synthesizeDrag. - */ - [Throws, ChromeOnly] - DataTransfer mozCloneForEvent(DOMString event); -}; diff --git a/crates/web-sys/webidls/enabled/DelayNode.webidl b/crates/web-sys/webidls/enabled/DelayNode.webidl index 02575bc5..75056316 100644 --- a/crates/web-sys/webidls/enabled/DelayNode.webidl +++ b/crates/web-sys/webidls/enabled/DelayNode.webidl @@ -22,7 +22,3 @@ interface DelayNode : AudioNode { readonly attribute AudioParam delayTime; }; - -// Mozilla extension -DelayNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl b/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl index 851b913e..d5267814 100644 --- a/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl +++ b/crates/web-sys/webidls/enabled/DeviceMotionEvent.webidl @@ -44,14 +44,3 @@ dictionary DeviceMotionEventInit : EventInit { DeviceRotationRateInit rotationRate; double? interval = null; }; - -// Mozilla extensions. -partial interface DeviceMotionEvent { - void initDeviceMotionEvent(DOMString type, - optional boolean canBubble = false, - optional boolean cancelable = false, - optional DeviceAccelerationInit acceleration, - optional DeviceAccelerationInit accelerationIncludingGravity, - optional DeviceRotationRateInit rotationRate, - optional double? interval = null); -}; diff --git a/crates/web-sys/webidls/enabled/Document.webidl b/crates/web-sys/webidls/enabled/Document.webidl index 5266c3df..98e63de7 100644 --- a/crates/web-sys/webidls/enabled/Document.webidl +++ b/crates/web-sys/webidls/enabled/Document.webidl @@ -185,13 +185,6 @@ partial interface Document { [Pref="dom.select_events.enabled"] attribute EventHandler onselectionchange; - /** - * True if this document is synthetic : stand alone image, video, audio file, - * etc. - */ -/*Non standard - [Func="IsChromeOrXBL"] readonly attribute boolean mozSyntheticDocument; -*/ /** * Returns the script element whose script is currently being processed. * @@ -361,85 +354,6 @@ partial interface Document { readonly attribute SVGSVGElement? rootElement; }; -// Mozilla extensions of various sorts -partial interface Document { - // XBL support. Wish we could make these [ChromeOnly], but - // that would likely break bindings running with the page principal. -/*Non standard - [Func="IsChromeOrXBL"] - NodeList? getAnonymousNodes(Element elt); - [Func="IsChromeOrXBL"] - Element? getAnonymousElementByAttribute(Element elt, DOMString attrName, - DOMString attrValue); - [Func="IsChromeOrXBL"] - Element? getBindingParent(Node node); - [Throws, Func="IsChromeOrXBL", NeedsSubjectPrincipal] - void loadBindingDocument(DOMString documentURL); -*/ - - // Touch bits - // XXXbz I can't find the sane spec for this stuff, so just cribbing - // from our xpidl for now. - [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] - Touch createTouch(optional Window? view = null, - optional EventTarget? target = null, - optional long identifier = 0, - optional long pageX = 0, - optional long pageY = 0, - optional long screenX = 0, - optional long screenY = 0, - optional long clientX = 0, - optional long clientY = 0, - optional long radiusX = 0, - optional long radiusY = 0, - optional float rotationAngle = 0, - optional float force = 0); - // XXXbz a hack to get around the fact that we don't support variadics as - // distinguishing arguments yet. Once this hack is removed. we can also - // remove the corresponding overload on nsIDocument, since Touch... and - // sequence look the same in the C++. - [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] - TouchList createTouchList(Touch touch, Touch... touches); - // XXXbz and another hack for the fact that we can't usefully have optional - // distinguishing arguments but need a working zero-arg form of - // createTouchList(). -/*TODO - [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] - TouchList createTouchList(); - [NewObject, Func="nsGenericHTMLElement::TouchEventsEnabled"] - TouchList createTouchList(sequence touches); -*/ - - [ChromeOnly] - attribute boolean styleSheetChangeEventsEnabled; - - [ChromeOnly, Throws] - void obsoleteSheet(URI sheetURI); - [ChromeOnly, Throws] - void obsoleteSheet(DOMString sheetURI); - - [ChromeOnly] readonly attribute nsIDocShell? docShell; - - [ChromeOnly] readonly attribute DOMString contentLanguage; - - [ChromeOnly] readonly attribute nsILoadGroup? documentLoadGroup; - - // Blocks the initial document parser until the given promise is settled. - [ChromeOnly, Throws] - Promise blockParsing(Promise promise, - optional BlockParsingOptions options); - - // like documentURI, except that for error pages, it returns the URI we were - // trying to load when we hit an error, rather than the error page's own URI. - [ChromeOnly] readonly attribute URI? mozDocumentURIIfNotForErrorPages; - - // A promise that is resolved, with this document itself, when we have both - // fired DOMContentLoaded and are ready to start layout. This is used for the - // "document_idle" webextension script injection point. - [ChromeOnly, Throws] - readonly attribute Promise documentReadyForIdle; -}; - dictionary BlockParsingOptions { /** * If true, blocks script-created parsers (created via document.open()) in @@ -507,16 +421,6 @@ partial interface Document { void notifyUserGestureActivation(); }; -// Extension to give chrome and XBL JS the ability to determine whether -// the document is sandboxed without permission to run scripts -// and whether inline scripts are blocked by the document's CSP. -/*Non standard -partial interface Document { - [Func="IsChromeOrXBL"] readonly attribute boolean hasScriptsBlockedBySandbox; - [Func="IsChromeOrXBL"] readonly attribute boolean inlineScriptAllowedByCSP; -}; -*/ - // For more information on Flash classification, see // toolkit/components/url-classifier/flash-block-lists.rst enum FlashClassification { @@ -531,12 +435,12 @@ partial interface Document { readonly attribute FlashClassification documentFlashClassification; }; -Document implements XPathEvaluator; -Document implements GlobalEventHandlers; -Document implements DocumentAndElementEventHandlers; -Document implements TouchEventHandlers; -Document implements ParentNode; -Document implements OnErrorEventHandlerForNodes; -Document implements GeometryUtils; -Document implements FontFaceSource; -Document implements DocumentOrShadowRoot; +Document includes XPathEvaluator; +Document includes GlobalEventHandlers; +Document includes DocumentAndElementEventHandlers; +Document includes TouchEventHandlers; +Document includes ParentNode; +Document includes OnErrorEventHandlerForNodes; +Document includes GeometryUtils; +Document includes FontFaceSource; +Document includes DocumentOrShadowRoot; diff --git a/crates/web-sys/webidls/enabled/DocumentFragment.webidl b/crates/web-sys/webidls/enabled/DocumentFragment.webidl index 0f814666..68a69c51 100644 --- a/crates/web-sys/webidls/enabled/DocumentFragment.webidl +++ b/crates/web-sys/webidls/enabled/DocumentFragment.webidl @@ -24,4 +24,4 @@ partial interface DocumentFragment { NodeList querySelectorAll(DOMString selectors); }; -DocumentFragment implements ParentNode; +DocumentFragment includes ParentNode; diff --git a/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl b/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl index 8a288f61..34776eff 100644 --- a/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl +++ b/crates/web-sys/webidls/enabled/DocumentOrShadowRoot.webidl @@ -8,8 +8,7 @@ * http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin */ -[NoInterfaceObject] -interface DocumentOrShadowRoot { +interface mixin DocumentOrShadowRoot { // Not implemented yet: bug 1430308. // Selection? getSelection(); Element? elementFromPoint (float x, float y); diff --git a/crates/web-sys/webidls/enabled/DocumentType.webidl b/crates/web-sys/webidls/enabled/DocumentType.webidl index 89190266..b19b319c 100644 --- a/crates/web-sys/webidls/enabled/DocumentType.webidl +++ b/crates/web-sys/webidls/enabled/DocumentType.webidl @@ -16,4 +16,4 @@ interface DocumentType : Node { readonly attribute DOMString systemId; }; -DocumentType implements ChildNode; +DocumentType includes ChildNode; diff --git a/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl b/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl index 78170756..2a19e35f 100644 --- a/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl +++ b/crates/web-sys/webidls/enabled/DynamicsCompressorNode.webidl @@ -30,7 +30,3 @@ interface DynamicsCompressorNode : AudioNode { readonly attribute AudioParam release; // in Seconds }; - -// Mozilla extension -DynamicsCompressorNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/Element.webidl b/crates/web-sys/webidls/enabled/Element.webidl index f374c92d..7b6952b6 100644 --- a/crates/web-sys/webidls/enabled/Element.webidl +++ b/crates/web-sys/webidls/enabled/Element.webidl @@ -143,8 +143,6 @@ interface Element : Node { [ChromeOnly] void setCaptureAlways(optional boolean retargetToElement = false); - // Mozilla extensions - // Obsolete methods. Attr? getAttributeNode(DOMString name); [CEReactions, Throws] @@ -225,15 +223,6 @@ partial interface Element { readonly attribute long clientLeft; readonly attribute long clientWidth; readonly attribute long clientHeight; - - // Mozilla specific stuff - /* The minimum/maximum offset that the element can be scrolled to - (i.e., the value that scrollLeft/scrollTop would be clamped to if they were - set to arbitrarily large values. */ - [ChromeOnly] readonly attribute long scrollTopMin; - readonly attribute long scrollTopMax; - [ChromeOnly] readonly attribute long scrollLeftMin; - readonly attribute long scrollLeftMax; }; // http://domparsing.spec.whatwg.org/#extensions-to-the-element-interface @@ -276,11 +265,11 @@ partial interface Element { attribute DOMString slot; }; -Element implements ChildNode; -Element implements NonDocumentTypeChildNode; -Element implements ParentNode; -Element implements Animatable; -Element implements GeometryUtils; +Element includes ChildNode; +Element includes NonDocumentTypeChildNode; +Element includes ParentNode; +Element includes Animatable; +Element includes GeometryUtils; // https://fullscreen.spec.whatwg.org/#api partial interface Element { diff --git a/crates/web-sys/webidls/enabled/Event.webidl b/crates/web-sys/webidls/enabled/Event.webidl index f66e084d..26277c8f 100644 --- a/crates/web-sys/webidls/enabled/Event.webidl +++ b/crates/web-sys/webidls/enabled/Event.webidl @@ -58,31 +58,6 @@ interface Event { attribute boolean cancelBubble; }; -// Mozilla specific legacy stuff. -partial interface Event { - const long ALT_MASK = 0x00000001; - const long CONTROL_MASK = 0x00000002; - const long SHIFT_MASK = 0x00000004; - const long META_MASK = 0x00000008; - - /** The original target of the event, before any retargetings. */ - readonly attribute EventTarget? originalTarget; - /** - * The explicit original target of the event. If the event was retargeted - * for some reason other than an anonymous boundary crossing, this will be set - * to the target before the retargeting occurs. For example, mouse events - * are retargeted to their parent node when they happen over text nodes (bug - * 185889), and in that case .target will show the parent and - * .explicitOriginalTarget will show the text node. - * .explicitOriginalTarget differs from .originalTarget in that it will never - * contain anonymous content. - */ - readonly attribute EventTarget? explicitOriginalTarget; - [ChromeOnly] readonly attribute EventTarget? composedTarget; - [ChromeOnly] readonly attribute boolean multipleActionsPrevented; - [ChromeOnly] readonly attribute boolean isSynthesized; -}; - dictionary EventInit { boolean bubbles = false; boolean cancelable = false; diff --git a/crates/web-sys/webidls/enabled/EventHandler.webidl b/crates/web-sys/webidls/enabled/EventHandler.webidl index bbddbd50..5d28db0a 100644 --- a/crates/web-sys/webidls/enabled/EventHandler.webidl +++ b/crates/web-sys/webidls/enabled/EventHandler.webidl @@ -22,8 +22,7 @@ typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; -[NoInterfaceObject] -interface GlobalEventHandlers { +interface mixin GlobalEventHandlers { attribute EventHandler onabort; attribute EventHandler onblur; // We think the spec is wrong here. See OnErrorEventHandlerForNodes/Window @@ -116,11 +115,6 @@ interface GlobalEventHandlers { [Pref="dom.w3c_pointer_events.enabled"] attribute EventHandler onlostpointercapture; - // Mozilla-specific handlers. Unprefixed handlers live in - // Document rather than here. - attribute EventHandler onmozfullscreenchange; - attribute EventHandler onmozfullscreenerror; - // CSS-Animation and CSS-Transition handlers. attribute EventHandler onanimationcancel; attribute EventHandler onanimationend; @@ -139,8 +133,7 @@ interface GlobalEventHandlers { attribute EventHandler onwebkittransitionend; }; -[NoInterfaceObject] -interface WindowEventHandlers { +interface mixin WindowEventHandlers { attribute EventHandler onafterprint; attribute EventHandler onbeforeprint; attribute OnBeforeUnloadEventHandler onbeforeunload; @@ -157,8 +150,7 @@ interface WindowEventHandlers { attribute EventHandler onunload; }; -[NoInterfaceObject] -interface DocumentAndElementEventHandlers { +interface mixin DocumentAndElementEventHandlers { attribute EventHandler oncopy; attribute EventHandler oncut; attribute EventHandler onpaste; @@ -169,12 +161,10 @@ interface DocumentAndElementEventHandlers { // whether an ErrorEvent was fired. We don't do that, and until we do we'll // need to distinguish between onerror on Window or on nodes. -[NoInterfaceObject] -interface OnErrorEventHandlerForNodes { +interface mixin OnErrorEventHandlerForNodes { attribute EventHandler onerror; }; -[NoInterfaceObject] -interface OnErrorEventHandlerForWindow { +interface mixin OnErrorEventHandlerForWindow { attribute OnErrorEventHandler onerror; }; diff --git a/crates/web-sys/webidls/enabled/EventTarget.webidl b/crates/web-sys/webidls/enabled/EventTarget.webidl index 2860168b..c5fb9587 100644 --- a/crates/web-sys/webidls/enabled/EventTarget.webidl +++ b/crates/web-sys/webidls/enabled/EventTarget.webidl @@ -13,11 +13,6 @@ dictionary EventListenerOptions { boolean capture = false; - /* Setting to true make the listener be added to the system group. */ -/*Non standard - [Func="ThreadSafeIsChromeOrXBL"] - boolean mozSystemGroup = false; -*/ }; dictionary AddEventListenerOptions : EventListenerOptions { @@ -44,27 +39,3 @@ interface EventTarget { [Throws, NeedsCallerType] boolean dispatchEvent(Event event); }; - -// Mozilla extensions for use by JS-implemented event targets to -// implement on* properties. -partial interface EventTarget { - // The use of [TreatNonCallableAsNull] here is a bit of a hack: it just makes - // the codegen check whether the type involved is either - // [TreatNonCallableAsNull] or [TreatNonObjectAsNull] and if it is handle it - // accordingly. In particular, it will NOT actually treat a non-null - // non-callable object as null here. - [ChromeOnly, Throws] - void setEventHandler(DOMString type, - [TreatNonCallableAsNull] EventHandler handler); - - [ChromeOnly] - EventHandler getEventHandler(DOMString type); -}; - -// Mozilla extension to make firing events on event targets from -// chrome easier. This returns the window which can be used to create -// events to fire at this EventTarget, or null if there isn't one. -partial interface EventTarget { - [ChromeOnly, Exposed=(Window,System), BinaryName="ownerGlobalForBindings"] - readonly attribute WindowProxy? ownerGlobal; -}; diff --git a/crates/web-sys/webidls/enabled/Fetch.webidl b/crates/web-sys/webidls/enabled/Fetch.webidl index bbb1faf7..66e4b570 100644 --- a/crates/web-sys/webidls/enabled/Fetch.webidl +++ b/crates/web-sys/webidls/enabled/Fetch.webidl @@ -10,8 +10,8 @@ typedef object JSON; typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) BodyInit; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface Body { +[Exposed=(Window,Worker)] +interface mixin Body { readonly attribute boolean bodyUsed; [Throws] Promise arrayBuffer(); diff --git a/crates/web-sys/webidls/enabled/File.webidl b/crates/web-sys/webidls/enabled/File.webidl index 9bb33cbf..5f612aae 100644 --- a/crates/web-sys/webidls/enabled/File.webidl +++ b/crates/web-sys/webidls/enabled/File.webidl @@ -29,28 +29,3 @@ dictionary ChromeFilePropertyBag : FilePropertyBag { DOMString name = ""; boolean existenceCheck = true; }; - -// Mozilla extensions -partial interface File { - [BinaryName="relativePath", Func="mozilla::dom::DOMPrefs::WebkitBlinkDirectoryPickerEnabled"] - readonly attribute USVString webkitRelativePath; - - [GetterThrows, ChromeOnly, NeedsCallerType] - readonly attribute DOMString mozFullPath; -}; - -// Mozilla extensions -// These 2 methods can be used only in these conditions: -// - the main-thread -// - parent process OR file process OR, only for testing, with pref -// `dom.file.createInChild' set to true. -[Exposed=(Window)] -partial interface File { - [ChromeOnly, Throws, NeedsCallerType] - static Promise createFromNsIFile(nsIFile file, - optional ChromeFilePropertyBag options); - - [ChromeOnly, Throws, NeedsCallerType] - static Promise createFromFileName(USVString fileName, - optional ChromeFilePropertyBag options); -}; diff --git a/crates/web-sys/webidls/enabled/FontFaceSource.webidl b/crates/web-sys/webidls/enabled/FontFaceSource.webidl index 96e1c6d7..54f36861 100644 --- a/crates/web-sys/webidls/enabled/FontFaceSource.webidl +++ b/crates/web-sys/webidls/enabled/FontFaceSource.webidl @@ -10,9 +10,7 @@ * liability, trademark and document use rules apply. */ -[NoInterfaceObject] -interface FontFaceSource { - +interface mixin FontFaceSource { [Pref="layout.css.font-loading-api.enabled"] readonly attribute FontFaceSet fonts; }; diff --git a/crates/web-sys/webidls/enabled/FrameLoader.webidl b/crates/web-sys/webidls/enabled/FrameLoader.webidl index 0cfd06bb..293bdb53 100644 --- a/crates/web-sys/webidls/enabled/FrameLoader.webidl +++ b/crates/web-sys/webidls/enabled/FrameLoader.webidl @@ -209,12 +209,11 @@ interface FrameLoader { * The nsIWebBrowserPersistDocumentReceiver is a callback that * will be fired once the document is ready for persisting. */ -[NoInterfaceObject] -interface WebBrowserPersistable +interface mixin WebBrowserPersistable { [Throws] void startPersistence(unsigned long long aOuterWindowID, nsIWebBrowserPersistDocumentReceiver aRecv); }; -FrameLoader implements WebBrowserPersistable; +FrameLoader includes WebBrowserPersistable; diff --git a/crates/web-sys/webidls/enabled/GainNode.webidl b/crates/web-sys/webidls/enabled/GainNode.webidl index 04bba87c..c62417ab 100644 --- a/crates/web-sys/webidls/enabled/GainNode.webidl +++ b/crates/web-sys/webidls/enabled/GainNode.webidl @@ -21,7 +21,3 @@ interface GainNode : AudioNode { readonly attribute AudioParam gain; }; - -// Mozilla extension -GainNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/GeometryUtils.webidl b/crates/web-sys/webidls/enabled/GeometryUtils.webidl index 53a24a78..0eda05c6 100644 --- a/crates/web-sys/webidls/enabled/GeometryUtils.webidl +++ b/crates/web-sys/webidls/enabled/GeometryUtils.webidl @@ -21,8 +21,7 @@ dictionary ConvertCoordinateOptions { CSSBoxType toBox = "border"; }; -[NoInterfaceObject] -interface GeometryUtils { +interface mixin GeometryUtils { [Throws, Func="nsINode::HasBoxQuadsSupport", NeedsCallerType] sequence getBoxQuads(optional BoxQuadOptions options); [Throws, Pref="layout.css.convertFromNode.enabled", NeedsCallerType] @@ -33,6 +32,6 @@ interface GeometryUtils { DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options); }; -// PseudoElement implements GeometryUtils; +// PseudoElement includes GeometryUtils; typedef (Text or Element /* or PseudoElement */ or Document) GeometryNode; diff --git a/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl b/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl index fe1c1a71..d19c8ec5 100644 --- a/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLAnchorElement.webidl @@ -35,7 +35,7 @@ interface HTMLAnchorElement : HTMLElement { attribute DOMString text; }; -HTMLAnchorElement implements HTMLHyperlinkElementUtils; +HTMLAnchorElement includes HTMLHyperlinkElementUtils; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLAnchorElement { diff --git a/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl b/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl index 997535a9..c2c05b72 100644 --- a/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLAreaElement.webidl @@ -35,7 +35,7 @@ interface HTMLAreaElement : HTMLElement { readonly attribute DOMTokenList relList; }; -HTMLAreaElement implements HTMLHyperlinkElementUtils; +HTMLAreaElement includes HTMLHyperlinkElementUtils; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLAreaElement { diff --git a/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl b/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl index f89c287d..9f2dfd9e 100644 --- a/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLBodyElement.webidl @@ -30,4 +30,4 @@ partial interface HTMLBodyElement { attribute DOMString background; }; -HTMLBodyElement implements WindowEventHandlers; +HTMLBodyElement includes WindowEventHandlers; diff --git a/crates/web-sys/webidls/enabled/HTMLCanvasElement.webidl b/crates/web-sys/webidls/enabled/HTMLCanvasElement.webidl index 8b2cba74..c61045ad 100644 --- a/crates/web-sys/webidls/enabled/HTMLCanvasElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLCanvasElement.webidl @@ -33,23 +33,6 @@ interface HTMLCanvasElement : HTMLElement { optional any encoderOptions); }; -// Mozilla specific bits -partial interface HTMLCanvasElement { - [Pure, SetterThrows] - attribute boolean mozOpaque; - [Throws, NeedsSubjectPrincipal] - File mozGetAsFile(DOMString name, optional DOMString? type = null); - // A Mozilla-only extension to get a canvas context backed by double-buffered - // shared memory. Only privileged callers can call this. - [ChromeOnly, Throws] - nsISupports? MozGetIPCContext(DOMString contextId); - - attribute PrintCallback? mozPrintCallback; - - [Throws, Pref="canvas.capturestream.enabled", NeedsSubjectPrincipal] - CanvasCaptureMediaStream captureStream(optional double frameRate); -}; - // For OffscreenCanvas // Reference: https://wiki.whatwg.org/wiki/OffscreenCanvas partial interface HTMLCanvasElement { diff --git a/crates/web-sys/webidls/enabled/HTMLElement.webidl b/crates/web-sys/webidls/enabled/HTMLElement.webidl index 19bb0c34..5b7939fd 100644 --- a/crates/web-sys/webidls/enabled/HTMLElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLElement.webidl @@ -80,8 +80,7 @@ partial interface HTMLElement { readonly attribute long offsetHeight; }; -[NoInterfaceObject] -interface TouchEventHandlers { +interface mixin TouchEventHandlers { [Func="nsGenericHTMLElement::TouchEventsEnabled"] attribute EventHandler ontouchstart; [Func="nsGenericHTMLElement::TouchEventsEnabled"] @@ -92,9 +91,9 @@ interface TouchEventHandlers { attribute EventHandler ontouchcancel; }; -HTMLElement implements GlobalEventHandlers; -HTMLElement implements DocumentAndElementEventHandlers; -HTMLElement implements TouchEventHandlers; -HTMLElement implements OnErrorEventHandlerForNodes; +HTMLElement includes GlobalEventHandlers; +HTMLElement includes DocumentAndElementEventHandlers; +HTMLElement includes TouchEventHandlers; +HTMLElement includes OnErrorEventHandlerForNodes; interface HTMLUnknownElement : HTMLElement {}; diff --git a/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl b/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl index bb6b5c0e..f55ff35e 100644 --- a/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLEmbedElement.webidl @@ -39,6 +39,6 @@ partial interface HTMLEmbedElement { Document? getSVGDocument(); }; -HTMLEmbedElement implements MozImageLoadingContent; -HTMLEmbedElement implements MozFrameLoaderOwner; -HTMLEmbedElement implements MozObjectLoadingContent; +HTMLEmbedElement includes MozImageLoadingContent; +HTMLEmbedElement includes MozFrameLoaderOwner; +HTMLEmbedElement includes MozObjectLoadingContent; diff --git a/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl b/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl index 2d712caf..b662b426 100644 --- a/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLFrameElement.webidl @@ -35,4 +35,4 @@ interface HTMLFrameElement : HTMLElement { attribute DOMString marginWidth; }; -HTMLFrameElement implements MozFrameLoaderOwner; +HTMLFrameElement includes MozFrameLoaderOwner; diff --git a/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl b/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl index afc4465d..d80f2867 100644 --- a/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLFrameSetElement.webidl @@ -19,4 +19,4 @@ interface HTMLFrameSetElement : HTMLElement { attribute DOMString rows; }; -HTMLFrameSetElement implements WindowEventHandlers; +HTMLFrameSetElement includes WindowEventHandlers; diff --git a/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl b/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl index 5801de76..f187887e 100644 --- a/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLIFrameElement.webidl @@ -65,5 +65,5 @@ partial interface HTMLIFrameElement { attribute boolean mozbrowser; }; -HTMLIFrameElement implements MozFrameLoaderOwner; -HTMLIFrameElement implements BrowserElement; +HTMLIFrameElement includes MozFrameLoaderOwner; +HTMLIFrameElement includes BrowserElement; diff --git a/crates/web-sys/webidls/enabled/HTMLImageElement.webidl b/crates/web-sys/webidls/enabled/HTMLImageElement.webidl index 68392173..8744aeb9 100644 --- a/crates/web-sys/webidls/enabled/HTMLImageElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLImageElement.webidl @@ -67,65 +67,3 @@ partial interface HTMLImageElement { attribute DOMString sizes; readonly attribute DOMString currentSrc; }; - -// Mozilla extensions. -partial interface HTMLImageElement { - [CEReactions, SetterThrows] - attribute DOMString lowsrc; - - // These attributes are offsets from the closest view (to mimic - // NS4's "offset-from-layer" behavior). - readonly attribute long x; - readonly attribute long y; -}; - -[NoInterfaceObject] -interface MozImageLoadingContent { - // Mirrored chrome-only nsIImageLoadingContent methods. Please make sure - // to update this list if nsIImageLoadingContent changes. - [ChromeOnly] - const long UNKNOWN_REQUEST = -1; - [ChromeOnly] - const long CURRENT_REQUEST = 0; - [ChromeOnly] - const long PENDING_REQUEST = 1; - - [ChromeOnly] - attribute boolean loadingEnabled; - [ChromeOnly] - readonly attribute short imageBlockingStatus; - /** - * Same as addNativeObserver but intended for scripted observers or observers - * from another or without a document. - */ - [ChromeOnly] - void addObserver(imgINotificationObserver aObserver); - /** - * Same as removeNativeObserver but intended for scripted observers or - * observers from another or without a document. - */ - [ChromeOnly] - void removeObserver(imgINotificationObserver aObserver); - [ChromeOnly,Throws] - imgIRequest? getRequest(long aRequestType); - [ChromeOnly,Throws] - long getRequestType(imgIRequest aRequest); - [ChromeOnly,Throws] - readonly attribute URI? currentURI; - // Gets the final URI of the current request, if available. - // Otherwise, returns null. - [ChromeOnly] - readonly attribute URI? currentRequestFinalURI; - /** - * forceReload forces reloading of the image pointed to by currentURI - * - * @param aNotify request should notify - * @throws NS_ERROR_NOT_AVAILABLE if there is no current URI to reload - */ - [ChromeOnly,Throws] - void forceReload(optional boolean aNotify = true); - [ChromeOnly] - void forceImageState(boolean aForce, unsigned long long aState); -}; - -HTMLImageElement implements MozImageLoadingContent; diff --git a/crates/web-sys/webidls/enabled/HTMLInputElement.webidl b/crates/web-sys/webidls/enabled/HTMLInputElement.webidl index a5cade68..e31413ab 100644 --- a/crates/web-sys/webidls/enabled/HTMLInputElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLInputElement.webidl @@ -147,67 +147,7 @@ partial interface HTMLInputElement { attribute DOMString useMap; }; -// Mozilla extensions - -partial interface HTMLInputElement { - [GetterThrows, ChromeOnly] - readonly attribute XULControllers controllers; - // Binaryname because we have a FragmentOrElement function named "TextLength()". - [NeedsCallerType, BinaryName="inputTextLength"] - readonly attribute long textLength; - - [Throws, ChromeOnly] - sequence mozGetFileNameArray(); - - [ChromeOnly, Throws] - void mozSetFileNameArray(sequence fileNames); - - [ChromeOnly] - void mozSetFileArray(sequence files); - - // This method is meant to use for testing only. - [ChromeOnly, Throws] - void mozSetDirectory(DOMString directoryPath); - - // This method is meant to use for testing only. - [ChromeOnly] - void mozSetDndFilesAndDirectories(sequence<(File or Directory)> list); - - // Number controls () have an anonymous text control - // () in the anonymous shadow tree that they contain. On - // such an anonymous text control this property provides access to the - // number control that owns the text control. This is useful, for example, - // in code that looks at the currently focused element to make decisions - // about which IME to bring up. Such code needs to be able to check for any - // owning number control since it probably wants to bring up a number pad - // instead of the standard keyboard, even when the anonymous text control has - // focus. - [ChromeOnly] - readonly attribute HTMLInputElement? ownerNumberControl; - - boolean mozIsTextField(boolean aExcludePassword); - - [ChromeOnly] - // This function will return null if @autocomplete is not defined for the - // current @type - AutocompleteInfo? getAutocompleteInfo(); -}; - -[NoInterfaceObject] -interface MozEditableElement { - [Pure, ChromeOnly] - readonly attribute nsIEditor? editor; - -/*Non standard - // This is similar to set .value on nsIDOMInput/TextAreaElements, but handling - // of the value change is closer to the normal user input, so 'change' event - // for example will be dispatched when focusing out the element. - [Func="IsChromeOrXBL", NeedsSubjectPrincipal] - void setUserInput(DOMString input); -*/ -}; - -HTMLInputElement implements MozEditableElement; +HTMLInputElement includes MozEditableElement; /*Non standard partial interface HTMLInputElement { @@ -228,7 +168,7 @@ partial interface HTMLInputElement { }; */ -HTMLInputElement implements MozImageLoadingContent; +HTMLInputElement includes MozImageLoadingContent; // Webkit/Blink partial interface HTMLInputElement { @@ -264,31 +204,6 @@ partial interface HTMLInputElement { [Pref="dom.forms.datetime", ChromeOnly, BinaryName="getMaximumAsDouble"] double getMaximum(); - -/*Non standard - [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] - void openDateTimePicker(optional DateTimeValue initialValue); - - [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] - void updateDateTimePicker(optional DateTimeValue value); - - [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] - void closeDateTimePicker(); - - [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] - void setFocusState(boolean aIsFocused); - - [Pref="dom.forms.datetime", Func="IsChromeOrXBL"] - void updateValidityState(); - - [Pref="dom.forms.datetime", Func="IsChromeOrXBL", - BinaryName="getStepAsDouble"] - double getStep(); - - [Pref="dom.forms.datetime", Func="IsChromeOrXBL", - BinaryName="getStepBaseAsDouble"] - double getStepBase(); -*/ }; partial interface HTMLInputElement { diff --git a/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl b/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl index 0fc7890d..0d484de1 100644 --- a/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLLinkElement.webidl @@ -34,7 +34,7 @@ interface HTMLLinkElement : HTMLElement { attribute DOMString referrerPolicy; [PutForwards=value] readonly attribute DOMTokenList sizes; }; -HTMLLinkElement implements LinkStyle; +HTMLLinkElement includes LinkStyle; // http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis partial interface HTMLLinkElement { diff --git a/crates/web-sys/webidls/enabled/HTMLMediaElement.webidl b/crates/web-sys/webidls/enabled/HTMLMediaElement.webidl index 3a2257af..8ad32d0b 100644 --- a/crates/web-sys/webidls/enabled/HTMLMediaElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLMediaElement.webidl @@ -98,55 +98,6 @@ interface HTMLMediaElement : HTMLElement { optional DOMString language = ""); }; -// Mozilla extensions: -partial interface HTMLMediaElement { - [Func="HasDebuggerOrTabsPrivilege"] - readonly attribute MediaSource? mozMediaSourceObject; - [Func="HasDebuggerOrTabsPrivilege"] - readonly attribute DOMString mozDebugReaderData; - [Func="HasDebuggerOrTabsPrivilege", NewObject] - Promise mozRequestDebugInfo(); - - [Func="HasDebuggerOrTabsPrivilege", NewObject] - static void mozEnableDebugLog(); - [Func="HasDebuggerOrTabsPrivilege", NewObject] - Promise mozRequestDebugLog(); - - [Pref="media.test.dumpDebugInfo"] - Promise mozDumpDebugInfo(); - - attribute MediaStream? srcObject; - - attribute boolean mozPreservesPitch; - -/*Non standard - // NB: for internal use with the video controls: - [Func="IsChromeOrXBL"] attribute boolean mozAllowCasting; - [Func="IsChromeOrXBL"] attribute boolean mozIsCasting; -*/ - - // Mozilla extension: stream capture - [Throws] - MediaStream mozCaptureStream(); - [Throws] - MediaStream mozCaptureStreamUntilEnded(); - readonly attribute boolean mozAudioCaptured; - - // Mozilla extension: return embedded metadata from the stream as a - // JSObject with key:value pairs for each tag. This can be used by - // player interfaces to display the song title, artist, etc. - [Throws] - object? mozGetMetadata(); - - // Mozilla extension: provides access to the fragment end time if - // the media element has a fragment URI for the currentSrc, otherwise - // it is equal to the media duration. - readonly attribute double mozFragmentEnd; - - [ChromeOnly] - void reportCanPlayTelemetry(); -}; - // Encrypted Media Extensions partial interface HTMLMediaElement { readonly attribute MediaKeys? mediaKeys; @@ -160,16 +111,6 @@ partial interface HTMLMediaElement { attribute EventHandler onwaitingforkey; }; -// This is just for testing -partial interface HTMLMediaElement { - [Pref="media.useAudioChannelService.testing"] - readonly attribute double computedVolume; - [Pref="media.useAudioChannelService.testing"] - readonly attribute boolean computedMuted; - [Pref="media.useAudioChannelService.testing"] - readonly attribute unsigned long computedSuspended; -}; - /* * HTMLMediaElement::seekToNextFrame() is a Mozilla experimental feature. * diff --git a/crates/web-sys/webidls/enabled/HTMLMenuElement.webidl b/crates/web-sys/webidls/enabled/HTMLMenuElement.webidl index fbcff9da..5f1f1308 100644 --- a/crates/web-sys/webidls/enabled/HTMLMenuElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLMenuElement.webidl @@ -30,33 +30,3 @@ partial interface HTMLMenuElement { [CEReactions, SetterThrows] attribute boolean compact; }; - -// Mozilla specific stuff -partial interface HTMLMenuElement { - /** - * Creates and dispatches a trusted event named "show". - * The event is not cancelable and does not bubble. - * See http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus - */ - [ChromeOnly] - void sendShowEvent(); - - /** - * Creates a native menu builder. The builder type is dependent on menu type. - * Currently, it returns the @mozilla.org/content/html-menu-builder;1 - * component. Toolbar menus are not yet supported (the method returns null). - */ - [ChromeOnly] - MenuBuilder? createBuilder(); - - /* - * Builds a menu by iterating over menu children. - * See http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#building-menus-and-toolbars - * The caller can use a native builder by calling createBuilder() or provide - * a custom builder that implements the nsIMenuBuilder interface. - * A custom builder can be used for example to build native context menus - * that are not defined using . - */ - [ChromeOnly] - void build(MenuBuilder aBuilder); -}; diff --git a/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl b/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl index b5bcddc8..34f5559a 100644 --- a/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLObjectElement.webidl @@ -78,145 +78,6 @@ partial interface HTMLObjectElement { Document? getSVGDocument(); }; -[NoInterfaceObject] -interface MozObjectLoadingContent { - // Mirrored chrome-only scriptable nsIObjectLoadingContent methods. Please - // make sure to update this list if nsIObjectLoadingContent changes. Also, - // make sure everything on here is [ChromeOnly]. - [ChromeOnly] - const unsigned long TYPE_LOADING = 0; - [ChromeOnly] - const unsigned long TYPE_IMAGE = 1; - [ChromeOnly] - const unsigned long TYPE_PLUGIN = 2; - [ChromeOnly] - const unsigned long TYPE_FAKE_PLUGIN = 3; - [ChromeOnly] - const unsigned long TYPE_DOCUMENT = 4; - [ChromeOnly] - const unsigned long TYPE_NULL = 5; - - // The content type is not supported (e.g. plugin not installed) - [ChromeOnly] - const unsigned long PLUGIN_UNSUPPORTED = 0; - // Showing alternate content - [ChromeOnly] - const unsigned long PLUGIN_ALTERNATE = 1; - // The plugin exists, but is disabled - [ChromeOnly] - const unsigned long PLUGIN_DISABLED = 2; - // The plugin is blocklisted and disabled - [ChromeOnly] - const unsigned long PLUGIN_BLOCKLISTED = 3; - // The plugin is considered outdated, but not disabled - [ChromeOnly] - const unsigned long PLUGIN_OUTDATED = 4; - // The plugin has crashed - [ChromeOnly] - const unsigned long PLUGIN_CRASHED = 5; - // Suppressed by security policy - [ChromeOnly] - const unsigned long PLUGIN_SUPPRESSED = 6; - // Blocked by content policy - [ChromeOnly] - const unsigned long PLUGIN_USER_DISABLED = 7; - /// ** All values >= PLUGIN_CLICK_TO_PLAY are plugin placeholder types that - /// would be replaced by a real plugin if activated (playPlugin()) - /// ** Furthermore, values >= PLUGIN_CLICK_TO_PLAY and - /// <= PLUGIN_VULNERABLE_NO_UPDATE are click-to-play types. - // The plugin is disabled until the user clicks on it - [ChromeOnly] - const unsigned long PLUGIN_CLICK_TO_PLAY = 8; - // The plugin is vulnerable (update available) - [ChromeOnly] - const unsigned long PLUGIN_VULNERABLE_UPDATABLE = 9; - // The plugin is vulnerable (no update available) - [ChromeOnly] - const unsigned long PLUGIN_VULNERABLE_NO_UPDATE = 10; - - /** - * The actual mime type (the one we got back from the network - * request) for the element. - */ - [ChromeOnly] - readonly attribute DOMString actualType; - - /** - * Gets the type of the content that's currently loaded. See - * the constants above for the list of possible values. - */ - [ChromeOnly] - readonly attribute unsigned long displayedType; - - /** - * Gets the content type that corresponds to the give MIME type. See the - * constants above for the list of possible values. If nothing else fits, - * TYPE_NULL will be returned. - */ - [ChromeOnly] - unsigned long getContentTypeForMIMEType(DOMString aMimeType); - - - [ChromeOnly] - sequence getPluginAttributes(); - - [ChromeOnly] - sequence getPluginParameters(); - - /** - * This method will play a plugin that has been stopped by the click-to-play - * feature. - */ - [ChromeOnly, Throws, NeedsCallerType] - void playPlugin(); - - /** - * Forces a re-evaluation and reload of the tag, optionally invalidating its - * click-to-play state. This can be used when the MIME type that provides a - * type has changed, for instance, to force the tag to re-evalulate the - * handler to use. - */ - [ChromeOnly, Throws] - void reload(boolean aClearActivation); - - /** - * This attribute will return true if the current content type has been - * activated, either explicitly or by passing checks that would have it be - * click-to-play. - */ - [ChromeOnly] - readonly attribute boolean activated; - - /** - * The URL of the data/src loaded in the object. This may be null (i.e. - * an with no src). - */ - [ChromeOnly] - readonly attribute URI? srcURI; - - [ChromeOnly] - readonly attribute unsigned long defaultFallbackType; - - [ChromeOnly] - readonly attribute unsigned long pluginFallbackType; - - /** - * If this object currently owns a running plugin, regardless of whether or - * not one is pending spawn/despawn. - */ - [ChromeOnly] - readonly attribute boolean hasRunningPlugin; - - /** - * Disable the use of fake plugins and reload the tag if necessary - */ - [ChromeOnly, Throws] - void skipFakePlugins(); - - [ChromeOnly, Throws, NeedsCallerType] - readonly attribute unsigned long runID; -}; - /** * Name:Value pair type used for passing parameters to NPAPI or javascript * plugins. @@ -226,6 +87,6 @@ dictionary MozPluginParameter { DOMString value = ""; }; -HTMLObjectElement implements MozImageLoadingContent; -HTMLObjectElement implements MozFrameLoaderOwner; -HTMLObjectElement implements MozObjectLoadingContent; +HTMLObjectElement includes MozImageLoadingContent; +HTMLObjectElement includes MozFrameLoaderOwner; +HTMLObjectElement includes MozObjectLoadingContent; diff --git a/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl b/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl index c0c8b985..6dc1a835 100644 --- a/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLStyleElement.webidl @@ -17,5 +17,4 @@ interface HTMLStyleElement : HTMLElement { [CEReactions, SetterThrows, Pure] attribute DOMString type; }; -HTMLStyleElement implements LinkStyle; - +HTMLStyleElement includes LinkStyle; diff --git a/crates/web-sys/webidls/enabled/HTMLTableCellElement.webidl b/crates/web-sys/webidls/enabled/HTMLTableCellElement.webidl index aff94914..ffb04d72 100644 --- a/crates/web-sys/webidls/enabled/HTMLTableCellElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLTableCellElement.webidl @@ -21,12 +21,6 @@ interface HTMLTableCellElement : HTMLElement { [CEReactions, SetterThrows] attribute DOMString headers; readonly attribute long cellIndex; - - // Mozilla-specific extensions - [CEReactions, SetterThrows] - attribute DOMString abbr; - [CEReactions, SetterThrows] - attribute DOMString scope; }; partial interface HTMLTableCellElement { diff --git a/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl b/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl index 4b50b4e7..7d2dd0a5 100644 --- a/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLTextAreaElement.webidl @@ -81,16 +81,4 @@ interface HTMLTextAreaElement : HTMLElement { void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); }; -partial interface HTMLTextAreaElement { - // Chrome-only Mozilla extensions - - [Throws, ChromeOnly] - readonly attribute XULControllers controllers; -}; - -HTMLTextAreaElement implements MozEditableElement; - -partial interface HTMLTextAreaElement { - [ChromeOnly] - attribute DOMString previewValue; -}; +HTMLTextAreaElement includes MozEditableElement; diff --git a/crates/web-sys/webidls/enabled/HTMLVideoElement.webidl b/crates/web-sys/webidls/enabled/HTMLVideoElement.webidl index a447e135..f7e05f54 100644 --- a/crates/web-sys/webidls/enabled/HTMLVideoElement.webidl +++ b/crates/web-sys/webidls/enabled/HTMLVideoElement.webidl @@ -23,40 +23,6 @@ interface HTMLVideoElement : HTMLMediaElement { attribute DOMString poster; }; -partial interface HTMLVideoElement { - // A count of the number of video frames that have demuxed from the media - // resource. If we were playing perfectly, we'd be able to paint this many - // frames. - readonly attribute unsigned long mozParsedFrames; - - // A count of the number of frames that have been decoded. We may drop - // frames if the decode is taking too much time. - readonly attribute unsigned long mozDecodedFrames; - - // A count of the number of frames that have been presented to the rendering - // pipeline. We may drop frames if they arrive late at the renderer. - readonly attribute unsigned long mozPresentedFrames; - - // Number of presented frames which were painted on screen. - readonly attribute unsigned long mozPaintedFrames; - - // Time which the last painted video frame was late by, in seconds. - readonly attribute double mozFrameDelay; - - // True if the video has an audio track available. - readonly attribute boolean mozHasAudio; - -/*Non standard - // Attributes for builtin video controls to lock screen orientation. - // True if video controls should lock orientation when fullscreen. - [Pref="media.videocontrols.lock-video-orientation", Func="IsChromeOrXBL"] - readonly attribute boolean mozOrientationLockEnabled; - // True if screen orientation is locked by video controls. - [Pref="media.videocontrols.lock-video-orientation", Func="IsChromeOrXBL"] - attribute boolean mozIsOrientationLocked; -*/ -}; - // https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#idl-def-HTMLVideoElement partial interface HTMLVideoElement { [Func="mozilla::dom::MediaSource::Enabled", NewObject] diff --git a/crates/web-sys/webidls/enabled/IIRFilterNode.webidl b/crates/web-sys/webidls/enabled/IIRFilterNode.webidl index 8a005794..2c17a6d9 100644 --- a/crates/web-sys/webidls/enabled/IIRFilterNode.webidl +++ b/crates/web-sys/webidls/enabled/IIRFilterNode.webidl @@ -19,6 +19,3 @@ Constructor(BaseAudioContext context, IIRFilterOptions options)] interface IIRFilterNode : AudioNode { void getFrequencyResponse(Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse); }; - -// Mozilla extension -IIRFilterNode implements AudioNodePassThrough; diff --git a/crates/web-sys/webidls/enabled/KeyboardEvent.webidl b/crates/web-sys/webidls/enabled/KeyboardEvent.webidl index 28e35c74..d1bbf3ab 100644 --- a/crates/web-sys/webidls/enabled/KeyboardEvent.webidl +++ b/crates/web-sys/webidls/enabled/KeyboardEvent.webidl @@ -66,6 +66,3 @@ dictionary KeyboardEventInit : EventModifierInit unsigned long keyCode = 0; unsigned long which = 0; }; - -// Mozilla extensions -KeyboardEvent implements KeyEvent; diff --git a/crates/web-sys/webidls/enabled/LegacyQueryInterface.webidl b/crates/web-sys/webidls/enabled/LegacyQueryInterface.webidl deleted file mode 100644 index 00fd76df..00000000 --- a/crates/web-sys/webidls/enabled/LegacyQueryInterface.webidl +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 http://mozilla.org/MPL/2.0/. - */ - -// invalid widl -//interface nsISupports; -//interface IID; - -[NoInterfaceObject, - // Need Exposed here, because this is a mixin onto things like Event - // that are exposed in workers. - Exposed=(Window,Worker,System)] -interface LegacyQueryInterface { - // Legacy QueryInterface, only exposed to chrome code on the main thread. - [Exposed=(Window,System), ChromeOnly] - nsISupports QueryInterface(IID iid); -}; - -BoxObject implements LegacyQueryInterface; -DOMParser implements LegacyQueryInterface; -Document implements LegacyQueryInterface; -DocumentFragment implements LegacyQueryInterface; -Element implements LegacyQueryInterface; -Event implements LegacyQueryInterface; -Selection implements LegacyQueryInterface; -TreeColumns implements LegacyQueryInterface; -TreeContentView implements LegacyQueryInterface; -Window implements LegacyQueryInterface; -XMLHttpRequest implements LegacyQueryInterface; diff --git a/crates/web-sys/webidls/enabled/LinkStyle.webidl b/crates/web-sys/webidls/enabled/LinkStyle.webidl index db0bc031..b57eb7e7 100644 --- a/crates/web-sys/webidls/enabled/LinkStyle.webidl +++ b/crates/web-sys/webidls/enabled/LinkStyle.webidl @@ -7,8 +7,6 @@ * http://dev.w3.org/csswg/cssom/#the-linkstyle-interface */ -[NoInterfaceObject] -interface LinkStyle { +interface mixin LinkStyle { readonly attribute StyleSheet? sheet; }; - diff --git a/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl b/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl index 37de3253..191ac6da 100644 --- a/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl +++ b/crates/web-sys/webidls/enabled/MediaElementAudioSourceNode.webidl @@ -19,7 +19,3 @@ dictionary MediaElementAudioSourceOptions { interface MediaElementAudioSourceNode : AudioNode { }; - -// Mozilla extensions -MediaElementAudioSourceNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl b/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl index 06727a5d..003ef853 100644 --- a/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl +++ b/crates/web-sys/webidls/enabled/MediaStreamAudioSourceNode.webidl @@ -19,7 +19,3 @@ dictionary MediaStreamAudioSourceOptions { interface MediaStreamAudioSourceNode : AudioNode { }; - -// Mozilla extensions -MediaStreamAudioSourceNode implements AudioNodePassThrough; - diff --git a/crates/web-sys/webidls/enabled/MediaTrackSettings.webidl b/crates/web-sys/webidls/enabled/MediaTrackSettings.webidl index 977e0f01..8c4de6a1 100644 --- a/crates/web-sys/webidls/enabled/MediaTrackSettings.webidl +++ b/crates/web-sys/webidls/enabled/MediaTrackSettings.webidl @@ -17,21 +17,4 @@ dictionary MediaTrackSettings { boolean noiseSuppression; boolean autoGainControl; long channelCount; - - // Mozilla-specific extensions: - - // http://fluffy.github.io/w3c-screen-share/#screen-based-video-constraints - // OBE by http://w3c.github.io/mediacapture-screen-share - - DOMString mediaSource; - - // Experimental https://bugzilla.mozilla.org/show_bug.cgi?id=1131568#c3 - // https://bugzilla.mozilla.org/show_bug.cgi?id=1193075 - - long long browserWindow; - boolean scrollWithPage; - long viewportOffsetX; - long viewportOffsetY; - long viewportWidth; - long viewportHeight; }; diff --git a/crates/web-sys/webidls/enabled/MediaTrackSupportedConstraints.webidl b/crates/web-sys/webidls/enabled/MediaTrackSupportedConstraints.webidl index ac2d4b83..6cc109f8 100644 --- a/crates/web-sys/webidls/enabled/MediaTrackSupportedConstraints.webidl +++ b/crates/web-sys/webidls/enabled/MediaTrackSupportedConstraints.webidl @@ -23,21 +23,4 @@ dictionary MediaTrackSupportedConstraints { boolean channelCount = true; boolean deviceId = true; boolean groupId; // to be supported - - // Mozilla-specific extensions: - - // http://fluffy.github.io/w3c-screen-share/#screen-based-video-constraints - // OBE by http://w3c.github.io/mediacapture-screen-share - - boolean mediaSource = true; - - // Experimental https://bugzilla.mozilla.org/show_bug.cgi?id=1131568#c3 - // https://bugzilla.mozilla.org/show_bug.cgi?id=1193075 - - boolean browserWindow = true; - boolean scrollWithPage = true; - boolean viewportOffsetX = true; - boolean viewportOffsetY = true; - boolean viewportWidth = true; - boolean viewportHeight = true; }; diff --git a/crates/web-sys/webidls/enabled/MenuBoxObject.webidl b/crates/web-sys/webidls/enabled/MenuBoxObject.webidl deleted file mode 100644 index 449cadc5..00000000 --- a/crates/web-sys/webidls/enabled/MenuBoxObject.webidl +++ /dev/null @@ -1,19 +0,0 @@ - -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 http://mozilla.org/MPL/2.0/. - */ - -[Func="IsChromeOrXBL"] -interface MenuBoxObject : BoxObject { - - void openMenu(boolean openFlag); - - attribute Element? activeChild; - - boolean handleKeyPress(KeyboardEvent keyEvent); - - readonly attribute boolean openedWithKey; - -}; diff --git a/crates/web-sys/webidls/enabled/MessagePort.webidl b/crates/web-sys/webidls/enabled/MessagePort.webidl index f8b3de62..7811487c 100644 --- a/crates/web-sys/webidls/enabled/MessagePort.webidl +++ b/crates/web-sys/webidls/enabled/MessagePort.webidl @@ -19,4 +19,4 @@ interface MessagePort : EventTarget { attribute EventHandler onmessage; attribute EventHandler onmessageerror; }; -// MessagePort implements Transferable; +// MessagePort includes Transferable; diff --git a/crates/web-sys/webidls/enabled/MouseEvent.webidl b/crates/web-sys/webidls/enabled/MouseEvent.webidl index 712e0b90..86bc48b1 100644 --- a/crates/web-sys/webidls/enabled/MouseEvent.webidl +++ b/crates/web-sys/webidls/enabled/MouseEvent.webidl @@ -73,43 +73,3 @@ dictionary MouseEventInit : EventModifierInit { long movementX = 0; long movementY = 0; }; - -// Mozilla extensions -partial interface MouseEvent -{ - // Finger or touch pressure event value - // ranges between 0.0 and 1.0 - readonly attribute float mozPressure; - - const unsigned short MOZ_SOURCE_UNKNOWN = 0; - const unsigned short MOZ_SOURCE_MOUSE = 1; - const unsigned short MOZ_SOURCE_PEN = 2; - const unsigned short MOZ_SOURCE_ERASER = 3; - const unsigned short MOZ_SOURCE_CURSOR = 4; - const unsigned short MOZ_SOURCE_TOUCH = 5; - const unsigned short MOZ_SOURCE_KEYBOARD = 6; - - readonly attribute unsigned short mozInputSource; - - void initNSMouseEvent(DOMString typeArg, - optional boolean canBubbleArg = false, - optional boolean cancelableArg = false, - optional Window? viewArg = null, - optional long detailArg = 0, - optional long screenXArg = 0, - optional long screenYArg = 0, - optional long clientXArg = 0, - optional long clientYArg = 0, - optional boolean ctrlKeyArg = false, - optional boolean altKeyArg = false, - optional boolean shiftKeyArg = false, - optional boolean metaKeyArg = false, - optional short buttonArg = 0, - optional EventTarget? relatedTargetArg = null, - optional float pressure = 0, - optional unsigned short inputSourceArg = 0); - [ChromeOnly] - readonly attribute boolean hitCluster; // True when touch occurs in a cluster of links - -}; - diff --git a/crates/web-sys/webidls/enabled/Navigator.webidl b/crates/web-sys/webidls/enabled/Navigator.webidl index 6546609e..f0950789 100644 --- a/crates/web-sys/webidls/enabled/Navigator.webidl +++ b/crates/web-sys/webidls/enabled/Navigator.webidl @@ -28,17 +28,17 @@ interface Navigator { // objects implementing this interface also implement the interfaces given below }; -Navigator implements NavigatorID; -Navigator implements NavigatorLanguage; -Navigator implements NavigatorOnLine; -Navigator implements NavigatorContentUtils; -Navigator implements NavigatorStorageUtils; -Navigator implements NavigatorConcurrentHardware; -Navigator implements NavigatorStorage; -Navigator implements NavigatorAutomationInformation; +Navigator includes NavigatorID; +Navigator includes NavigatorLanguage; +Navigator includes NavigatorOnLine; +Navigator includes NavigatorContentUtils; +Navigator includes NavigatorStorageUtils; +Navigator includes NavigatorConcurrentHardware; +Navigator includes NavigatorStorage; +Navigator includes NavigatorAutomationInformation; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorID { +[Exposed=(Window,Worker)] +interface mixin NavigatorID { // WebKit/Blink/Trident/Presto support this (hardcoded "Mozilla"). [Constant, Cached, Throws] readonly attribute DOMString appCodeName; // constant "Mozilla" @@ -58,8 +58,8 @@ interface NavigatorID { boolean taintEnabled(); // constant false }; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorLanguage { +[Exposed=(Window,Worker)] +interface mixin NavigatorLanguage { // These two attributes are cached because this interface is also implemented // by Workernavigator and this way we don't have to go back to the @@ -72,13 +72,12 @@ interface NavigatorLanguage { readonly attribute sequence languages; }; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorOnLine { +[Exposed=(Window,Worker)] +interface mixin NavigatorOnLine { readonly attribute boolean onLine; }; -[NoInterfaceObject] -interface NavigatorContentUtils { +interface mixin NavigatorContentUtils { // content handler registration [Throws, Func="nsGlobalWindowInner::RegisterProtocolHandlerAllowedForContext"] void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title); @@ -91,14 +90,13 @@ interface NavigatorContentUtils { //void unregisterContentHandler(DOMString mimeType, DOMString url); }; -[SecureContext, NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorStorage { +[SecureContext, Exposed=(Window,Worker)] +interface mixin NavigatorStorage { [Func="mozilla::dom::DOMPrefs::StorageManagerEnabled"] readonly attribute StorageManager storage; }; -[NoInterfaceObject] -interface NavigatorStorageUtils { +interface mixin NavigatorStorageUtils { // NOT IMPLEMENTED //void yieldForStorageUpdates(); }; @@ -123,12 +121,11 @@ partial interface Navigator { }; // http://www.w3.org/TR/geolocation-API/#geolocation_interface -[NoInterfaceObject] -interface NavigatorGeolocation { +interface mixin NavigatorGeolocation { [Throws, Pref="geo.enabled"] readonly attribute Geolocation geolocation; }; -Navigator implements NavigatorGeolocation; +Navigator includes NavigatorGeolocation; // http://www.w3.org/TR/battery-status/#navigatorbattery-interface partial interface Navigator { @@ -158,58 +155,6 @@ partial interface Navigator { readonly attribute MediaCapabilities mediaCapabilities; }; -// Mozilla-specific extensions - -// Chrome-only interface for Vibration API permission handling. -partial interface Navigator { - /* Set permission state to device vibration. - * @param permitted permission state (true for allowing vibration) - * @param persistent make the permission session-persistent - */ - [ChromeOnly] - void setVibrationPermission(boolean permitted, - optional boolean persistent = true); -}; - -callback interface MozIdleObserver { - // Time is in seconds and is read only when idle observers are added - // and removed. - readonly attribute unsigned long time; - void onidle(); - void onactive(); -}; - -partial interface Navigator { - [Throws, Constant, Cached, NeedsCallerType] - readonly attribute DOMString oscpu; - // WebKit/Blink support this; Trident/Presto do not. - readonly attribute DOMString vendor; - // WebKit/Blink supports this (hardcoded ""); Trident/Presto do not. - readonly attribute DOMString vendorSub; - // WebKit/Blink supports this (hardcoded "20030107"); Trident/Presto don't - readonly attribute DOMString productSub; - // WebKit/Blink/Trident/Presto support this. - readonly attribute boolean cookieEnabled; - [Throws, Constant, Cached, NeedsCallerType] - readonly attribute DOMString buildID; - - // WebKit/Blink/Trident/Presto support this. - [Affects=Nothing, DependsOn=Nothing] - boolean javaEnabled(); - - /** - * Navigator requests to add an idle observer to the existing window. - */ - [Throws, ChromeOnly] - void addIdleObserver(MozIdleObserver aIdleObserver); - - /** - * Navigator requests to remove an idle observer from the existing window. - */ - [Throws, ChromeOnly] - void removeIdleObserver(MozIdleObserver aIdleObserver); -}; - // NetworkInformation partial interface Navigator { [Throws, Pref="dom.netinfo.enabled"] @@ -314,8 +259,8 @@ partial interface Navigator { sequence supportedConfigurations); }; -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorConcurrentHardware { +[Exposed=(Window,Worker)] +interface mixin NavigatorConcurrentHardware { readonly attribute unsigned long long hardwareConcurrency; }; diff --git a/crates/web-sys/webidls/enabled/Node.webidl b/crates/web-sys/webidls/enabled/Node.webidl index 3aed1f93..7b7a14e6 100644 --- a/crates/web-sys/webidls/enabled/Node.webidl +++ b/crates/web-sys/webidls/enabled/Node.webidl @@ -101,122 +101,6 @@ interface Node : EventTarget { DOMString? lookupNamespaceURI(DOMString? prefix); [Pure] boolean isDefaultNamespace(DOMString? namespace); - - // Mozilla-specific stuff - [ChromeOnly] - readonly attribute Principal nodePrincipal; - [ChromeOnly] - readonly attribute URI? baseURIObject; - [ChromeOnly] - DOMString generateXPath(); - - /** - * This method provides a fast-path for the Fluent localization system to - * bypass the slowdowns in performance during initial document translation. - * The slowdowns are specific to XBL+Stylo. - * To learn more, see bug 1441037. - * - * The API is designed to fit into the DOMLocalization flow with minimal - * overhead, which dictates much of its signature. - * It takes the following steps: - * - * 1) The API can be called at any point on any DOM element and it - * synchronously scans the element subtree for all children with - * `data-l10n-id` attribute set. - * - * 2) Next, the API collects all of the l10n attributes - * (l10n-id, l10n-args and l10n-attrs), and passes them to the - * callback function together with three `Element` properties: - * `name` - name of the element as lowercase - * `namespaceURI` - namespace URI - * `type` - the type prop of the element (used for input sanitization) - * - * 3) The callback function is responsible for (asynchronously) collecting - * the translations for all l10n id+args pairs, sanitizing them and then - * return them back to this API. - * - * 4) The API takes the list of elements collected in step (1) and their - * translations and applies all of the translation values onto - * the elements. - * - * 5) The API returns a list with empty slots for all translated elements - * and references to elements that could not be translated. - * - * 6) The JS handles the translations of remaining elements. - * - * - * Through the whole cycle, the API uses the same list of elements and - * corresponding translations. It means that after step (1), the element - * at index 1 will match the l10nData at index 1, translations at index 1 - * and in the final return list, the element will be also stored at index 1 - * or the slot will be empty if the translations was applied on the C++ side. - * - * Note: There are several reasons why the JS callback may pass undefined for - * a given element including missing translation, or the need to - * translate the element using DOM Overlays. - * - * - * Example of use from JS: - * - * async function translateFragment(frag) { - * let untranslatedElements = await frag.localize( - * async cb(l10nItems) => { // 1 - * let trans = await getTranslations(l10nItems); // 2 - * return trans; - * } - * ); - * - * annotateMissingTranslations(untranslatedElements); // 3 - * } - * - * [1] l10nItems == [ - * { - * l10nId: "key1", - * l10nArgs: null, - * l10nAttrs: null, - * name: "button" - * namespaceURI: "..." - * type: null - * }, - * { - * l10nId: "key2", - * l10nArgs: {unreadCount: 5}, - * l10nAttrs: null, - * name: "label" - * namespaceURI: "..." - * type: null - * }, - * { - * l10nId: "key3", - * l10nArgs: null, - * l10nAttrs: "title", - * name: "window" - * namespaceURI: "..." - * type: null - * }, - * ] - * [2] trans == [ - * {value: "Key 1", attributes: {accesskey: "K"} }, - * undefined, - * {value: null, attributes: {title: "Unread emails: 5"} }, - * ] - * [3] untranslatedElements == [ - * , - *