diff options
7 files changed, 34 insertions, 48 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index ec29a59c9d4..e0a5df68882 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5263,7 +5263,7 @@ class CGDOMJSProxyHandler_defineProperty(CGAbstractExternMethod): CGIndenter(CGProxyNamedSetter(self.descriptor)).define() + " return (*opresult).succeed();\n" + "}\n") - else: + elif self.descriptor.operations['NamedGetter']: set += ("if RUST_JSID_IS_STRING(id) || RUST_JSID_IS_INT(id) {\n" + CGIndenter(CGProxyNamedGetter(self.descriptor)).define() + " if result.is_some() {\n" diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 0ef500ccb1a..f6330b9b65a 100755 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -12,6 +12,7 @@ use crate::dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelec use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use crate::dom::bindings::codegen::UnionTypes::HTMLElementOrLong; use crate::dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement; +use crate::dom::bindings::error::ErrorResult; use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; use crate::dom::bindings::str::DOMString; @@ -203,13 +204,13 @@ impl HTMLSelectElementMethods for HTMLSelectElement { ValidityState::new(&window, self.upcast()) } - // Note: this function currently only exists for union.html. // https://html.spec.whatwg.org/multipage/#dom-select-add fn Add( &self, - _element: HTMLOptionElementOrHTMLOptGroupElement, - _before: Option<HTMLElementOrLong>, - ) { + element: HTMLOptionElementOrHTMLOptGroupElement, + before: Option<HTMLElementOrLong>, + ) -> ErrorResult { + self.Options().Add(element, before) } // https://html.spec.whatwg.org/multipage/#dom-fe-disabled @@ -281,6 +282,11 @@ impl HTMLSelectElementMethods for HTMLSelectElement { self.Options().IndexedGetter(index) } + // https://html.spec.whatwg.org/multipage/#dom-select-setter + fn IndexedSetter(&self, index: u32, value: Option<&HTMLOptionElement>) -> ErrorResult { + self.Options().IndexedSetter(index, value) + } + // https://html.spec.whatwg.org/multipage/#dom-select-nameditem fn NamedItem(&self, name: DOMString) -> Option<DomRoot<HTMLOptionElement>> { self.Options() diff --git a/components/script/dom/webidls/HTMLSelectElement.webidl b/components/script/dom/webidls/HTMLSelectElement.webidl index 975d198f764..1fe48bcefb2 100644 --- a/components/script/dom/webidls/HTMLSelectElement.webidl +++ b/components/script/dom/webidls/HTMLSelectElement.webidl @@ -28,15 +28,14 @@ interface HTMLSelectElement : HTMLElement { attribute unsigned long length; getter Element? item(unsigned long index); HTMLOptionElement? namedItem(DOMString name); - // Note: this function currently only exists for union.html. - [CEReactions] + + [CEReactions, Throws] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); [CEReactions] void remove(); // ChildNode overload [CEReactions] void remove(long index); - // [CEReactions] - // setter void (unsigned long index, HTMLOptionElement? option); + [CEReactions, Throws] setter void (unsigned long index, HTMLOptionElement? option); // readonly attribute HTMLCollection selectedOptions; attribute long selectedIndex; diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLSelectElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLSelectElement.html.ini deleted file mode 100644 index bd93572e6b1..00000000000 --- a/tests/wpt/metadata/custom-elements/reactions/HTMLSelectElement.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[HTMLSelectElement.html] - type: testharness - [The indexed setter on HTMLSelectElement must enqueue connectedCallback when inserting a custom element] - expected: FAIL - - [The indexed setter on HTMLSelectElement must enqueue disconnectedCallback when removing a custom element] - expected: FAIL - - [add on HTMLSelectElement must enqueue connectedCallback when inserting a custom element] - expected: FAIL - - [Custom Elements: CEReactions on HTMLSelectElement interface] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-add.html.ini b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-add.html.ini deleted file mode 100644 index 510c23a07de..00000000000 --- a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-add.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[select-add.html] - [test that HTMLSelectElement.add method can add option element] - expected: FAIL - - [test that HierarchyRequestError exception must be thrown when element is an ancestor of the element into which it is to be inserted] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 559e6baff6c..a829b0114b8 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -827,6 +827,18 @@ {} ] ], + "css/border_black_groove.html": [ + [ + "css/border_black_groove.html", + [ + [ + "/_mozilla/css/border_black_solid.html", + "!=" + ] + ], + {} + ] + ], "css/border_black_ridge_a.html": [ [ "css/border_black_ridge_a.html", @@ -7662,20 +7674,6 @@ ] ] }, - "reftest_node": { - "css/border_black_groove.html": [ - [ - "css/border_black_groove.html", - [ - [ - "/_mozilla/css/border_black_solid.html", - "!=" - ] - ], - {} - ] - ] - }, "support": { ".gitignore": [ [] @@ -14053,7 +14051,7 @@ ], "css/border_black_groove.html": [ "49e1647a6f71e320770225ad537b4fd4020bd700", - "reftest_node" + "reftest" ], "css/border_black_ridge_a.html": [ "90cdda1dca8793a1c01b72f1ad27398903cfd823", @@ -19552,7 +19550,7 @@ "testharness" ], "mozilla/union.html": [ - "42012add68c355c81e793492e59b05c1ca728f2d", + "dec25d03b8e46791c8044c67bca93036c3e8bdeb", "testharness" ], "mozilla/unitless-length.html": [ diff --git a/tests/wpt/mozilla/tests/mozilla/union.html b/tests/wpt/mozilla/tests/mozilla/union.html index 42012add68c..dec25d03b8e 100644 --- a/tests/wpt/mozilla/tests/mozilla/union.html +++ b/tests/wpt/mozilla/tests/mozilla/union.html @@ -6,14 +6,18 @@ <script> test(function() { var div = document.createElement('div'); + var div2 = document.createElement('div'); var optgroup = document.createElement('optgroup'); var sel = document.getElementById('sel'); + sel.appendChild(div2); var opt = document.createElement('option'); sel.add(opt); sel.add(optgroup); - sel.add(opt, div); - sel.add(optgroup, div); + assert_throws("NotFoundError", function() { sel.add(opt, div); }); + assert_throws("NotFoundError", function() { sel.add(optgroup, div); }); + sel.add(opt, div2); + sel.add(optgroup, div2); sel.add(opt, 5); sel.add(optgroup, 5); assert_throws(new TypeError(), function() { sel.add(div) }); |