From 8b0f58c8af3fd5f0a328ac9286d2719328cadbd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 27 Sep 2017 20:42:40 +0200 Subject: [PATCH] script: Remove HTMLAppletElement. It was removed from the spec, there's no reason to keep it in tree. --- components/script/dom/create.rs | 15 ++- components/script/dom/document.rs | 24 +---- components/script/dom/htmlappletelement.rs | 62 ------------ components/script/dom/htmlcollection.rs | 13 +++ components/script/dom/mod.rs | 1 - components/script/dom/virtualmethods.rs | 4 - components/script/dom/webidls/Document.webidl | 1 + .../dom/webidls/HTMLAppletElement.webidl | 19 ---- resources/presentational-hints.css | 22 ++--- ...transform-2d-getComputedStyle-001.html.ini | 1 + .../dom-tree-accessors/nameditem-03.html.ini | 5 - .../wpt/metadata/html/dom/historical.html.ini | 12 --- .../html/dom/reflection-obsolete.html.ini | 96 +++++++++++++++++++ .../html/semantics/interfaces.html.ini | 6 -- tests/wpt/mozilla/meta/MANIFEST.json | 4 +- .../mozilla/tests/mozilla/collections.html | 2 - .../wpt/mozilla/tests/mozilla/interfaces.html | 1 - 17 files changed, 132 insertions(+), 156 deletions(-) delete mode 100644 components/script/dom/htmlappletelement.rs delete mode 100644 components/script/dom/webidls/HTMLAppletElement.webidl delete mode 100644 tests/wpt/metadata/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 39e91a215e5..4790088b009 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -10,7 +10,6 @@ use dom::document::Document; use dom::element::{CustomElementCreationMode, CustomElementState, Element, ElementCreator}; use dom::globalscope::GlobalScope; use dom::htmlanchorelement::HTMLAnchorElement; -use dom::htmlappletelement::HTMLAppletElement; use dom::htmlareaelement::HTMLAreaElement; use dom::htmlaudioelement::HTMLAudioElement; use dom::htmlbaseelement::HTMLBaseElement; @@ -191,12 +190,13 @@ fn create_html_element(name: QualName, result } -pub fn create_native_html_element(name: QualName, - prefix: Option, - document: &Document, - creator: ElementCreator) - -> DomRoot { - assert!(name.ns == ns!(html)); +pub fn create_native_html_element( + name: QualName, + prefix: Option, + document: &Document, + creator: ElementCreator, +) -> DomRoot { + assert_eq!(name.ns, ns!(html)); macro_rules! make( ($ctor:ident) => ({ @@ -217,7 +217,6 @@ pub fn create_native_html_element(name: QualName, local_name!("abbr") => make!(HTMLElement), local_name!("acronym") => make!(HTMLElement), local_name!("address") => make!(HTMLElement), - local_name!("applet") => make!(HTMLAppletElement), local_name!("area") => make!(HTMLAreaElement), local_name!("article") => make!(HTMLElement), local_name!("aside") => make!(HTMLElement), diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index a43a7044ca0..7731afb6a5e 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -47,7 +47,6 @@ use dom::forcetouchevent::ForceTouchEvent; use dom::globalscope::GlobalScope; use dom::hashchangeevent::HashChangeEvent; use dom::htmlanchorelement::HTMLAnchorElement; -use dom::htmlappletelement::HTMLAppletElement; use dom::htmlareaelement::HTMLAreaElement; use dom::htmlbaseelement::HTMLBaseElement; use dom::htmlbodyelement::HTMLBodyElement; @@ -413,14 +412,6 @@ impl CollectionFilter for AnchorsFilter { } } -#[derive(JSTraceable, MallocSizeOf)] -struct AppletsFilter; -impl CollectionFilter for AppletsFilter { - fn filter(&self, elem: &Element, _root: &Node) -> bool { - elem.is::() - } -} - impl Document { #[inline] pub fn loader(&self) -> Ref { @@ -3373,10 +3364,8 @@ impl DocumentMethods for Document { // https://html.spec.whatwg.org/multipage/#dom-document-applets fn Applets(&self) -> DomRoot { - // FIXME: This should be return OBJECT elements containing applets. self.applets.or_init(|| { - let filter = Box::new(AppletsFilter); - HTMLCollection::create(&self.window, self.upcast(), filter) + HTMLCollection::always_empty(&self.window, self.upcast()) }) } @@ -3530,17 +3519,6 @@ impl DocumentMethods for Document { None => return false, }; match html_elem_type { - HTMLElementTypeId::HTMLAppletElement => { - match elem.get_attribute(&ns!(), &local_name!("name")) { - Some(ref attr) if attr.value().as_atom() == name => true, - _ => { - match elem.get_attribute(&ns!(), &local_name!("id")) { - Some(ref attr) => attr.value().as_atom() == name, - None => false, - } - }, - } - }, HTMLElementTypeId::HTMLFormElement => { match elem.get_attribute(&ns!(), &local_name!("name")) { Some(ref attr) => attr.value().as_atom() == name, diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs deleted file mode 100644 index 5ab56b9616d..00000000000 --- a/components/script/dom/htmlappletelement.rs +++ /dev/null @@ -1,62 +0,0 @@ -/* 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/. */ - -use dom::bindings::codegen::Bindings::HTMLAppletElementBinding; -use dom::bindings::codegen::Bindings::HTMLAppletElementBinding::HTMLAppletElementMethods; -use dom::bindings::inheritance::Castable; -use dom::bindings::root::DomRoot; -use dom::bindings::str::DOMString; -use dom::document::Document; -use dom::htmlelement::HTMLElement; -use dom::node::Node; -use dom::virtualmethods::VirtualMethods; -use dom_struct::dom_struct; -use html5ever::{LocalName, Prefix}; -use style::attr::AttrValue; - -#[dom_struct] -pub struct HTMLAppletElement { - htmlelement: HTMLElement -} - -impl HTMLAppletElement { - fn new_inherited(local_name: LocalName, - prefix: Option, - document: &Document) -> HTMLAppletElement { - HTMLAppletElement { - htmlelement: - HTMLElement::new_inherited(local_name, prefix, document) - } - } - - #[allow(unrooted_must_root)] - pub fn new(local_name: LocalName, - prefix: Option, - document: &Document) -> DomRoot { - Node::reflect_node(Box::new(HTMLAppletElement::new_inherited(local_name, prefix, document)), - document, - HTMLAppletElementBinding::Wrap) - } -} - -impl HTMLAppletElementMethods for HTMLAppletElement { - // https://html.spec.whatwg.org/multipage/#the-applet-element:dom-applet-name - make_getter!(Name, "name"); - - // https://html.spec.whatwg.org/multipage/#the-applet-element:dom-applet-name - make_atomic_setter!(SetName, "name"); -} - -impl VirtualMethods for HTMLAppletElement { - fn super_type(&self) -> Option<&VirtualMethods> { - Some(self.upcast::() as &VirtualMethods) - } - - fn parse_plain_attribute(&self, name: &LocalName, value: DOMString) -> AttrValue { - match name { - &local_name!("name") => AttrValue::from_atomic(value.into()), - _ => self.super_type().unwrap().parse_plain_attribute(name, value), - } - } -} diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index 3da4503cb0e..1d5298a9e47 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -80,6 +80,19 @@ impl HTMLCollection { } } + /// Returns a collection which is always empty. + pub fn always_empty(window: &Window, root: &Node) -> DomRoot { + #[derive(JSTraceable)] + struct NoFilter; + impl CollectionFilter for NoFilter { + fn filter<'a>(&self, _: &'a Element, _: &'a Node) -> bool { + false + } + } + + Self::new(window, root, Box::new(NoFilter)) + } + #[allow(unrooted_must_root)] pub fn new(window: &Window, root: &Node, filter: Box) -> DomRoot { reflect_dom_object(Box::new(HTMLCollection::new_inherited(root, filter)), diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index 5ae3f477a06..4b34a6f3cac 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -301,7 +301,6 @@ pub mod hashchangeevent; pub mod headers; pub mod history; pub mod htmlanchorelement; -pub mod htmlappletelement; pub mod htmlareaelement; pub mod htmlaudioelement; pub mod htmlbaseelement; diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs index 294a791671c..03193415cb4 100644 --- a/components/script/dom/virtualmethods.rs +++ b/components/script/dom/virtualmethods.rs @@ -14,7 +14,6 @@ use dom::document::Document; use dom::element::{AttributeMutation, Element}; use dom::event::Event; use dom::htmlanchorelement::HTMLAnchorElement; -use dom::htmlappletelement::HTMLAppletElement; use dom::htmlareaelement::HTMLAreaElement; use dom::htmlbaseelement::HTMLBaseElement; use dom::htmlbodyelement::HTMLBodyElement; @@ -154,9 +153,6 @@ pub fn vtable_for(node: &Node) -> &VirtualMethods { NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAnchorElement)) => { node.downcast::().unwrap() as &VirtualMethods } - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAppletElement)) => { - node.downcast::().unwrap() as &VirtualMethods - } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAreaElement)) => { node.downcast::().unwrap() as &VirtualMethods } diff --git a/components/script/dom/webidls/Document.webidl b/components/script/dom/webidls/Document.webidl index 37bfc3a12d0..40df23b734c 100644 --- a/components/script/dom/webidls/Document.webidl +++ b/components/script/dom/webidls/Document.webidl @@ -171,6 +171,7 @@ partial interface Document { [SameObject] readonly attribute HTMLCollection anchors; + [SameObject] readonly attribute HTMLCollection applets; diff --git a/components/script/dom/webidls/HTMLAppletElement.webidl b/components/script/dom/webidls/HTMLAppletElement.webidl deleted file mode 100644 index 822bbc25744..00000000000 --- a/components/script/dom/webidls/HTMLAppletElement.webidl +++ /dev/null @@ -1,19 +0,0 @@ -/* 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/. */ - -// https://html.spec.whatwg.org/multipage/#htmlappletelement -// Note: intentionally not [HTMLConstructor] -interface HTMLAppletElement : HTMLElement { - // attribute DOMString align; - // attribute DOMString alt; - // attribute DOMString archive; - // attribute DOMString code; - // attribute DOMString codeBase; - // attribute DOMString height; - // attribute unsigned long hspace; - attribute DOMString name; - // attribute DOMString _object; // the underscore is not part of the identifier - // attribute unsigned long vspace; - // attribute DOMString width; -}; diff --git a/resources/presentational-hints.css b/resources/presentational-hints.css index 63f42491dd3..3c32bba4bcd 100644 --- a/resources/presentational-hints.css +++ b/resources/presentational-hints.css @@ -139,31 +139,31 @@ hr[color], hr[noshade] { border-style: solid; } iframe[frameborder="0"], iframe[frameborder=no i] { border: none; } -applet[align=left i], embed[align=left i], iframe[align=left i], img[type=image i][align=left i], object[align=left i] { +embed[align=left i], iframe[align=left i], img[type=image i][align=left i], object[align=left i] { float: left; } -applet[align=right i], embed[align=right i], iframe[align=right i], img[type=image i][align=right i], object[align=right i] { +embed[align=right i], iframe[align=right i], img[type=image i][align=right i], object[align=right i] { float: right; } -applet[align=top i], embed[align=top i], iframe[align=top i], img[type=image i][align=top i], object[align=top i] { +embed[align=top i], iframe[align=top i], img[type=image i][align=top i], object[align=top i] { vertical-align: top; } -applet[align=baseline i], embed[align=baseline i], iframe[align=baseline i], img[type=image i][align=baseline i], object[align=baseline i] { +embed[align=baseline i], iframe[align=baseline i], img[type=image i][align=baseline i], object[align=baseline i] { vertical-align: baseline; } -applet[align=texttop i], embed[align=texttop i], iframe[align=texttop i], img[type=image i][align=texttop i], object[align=texttop i] { +embed[align=texttop i], iframe[align=texttop i], img[type=image i][align=texttop i], object[align=texttop i] { vertical-align: text-top; } -applet[align=absmiddle i], embed[align=absmiddle i], iframe[align=absmiddle i], img[type=image i][align=absmiddle i], object[align=absmiddle i], -applet[align=abscenter i], embed[align=abscenter i], iframe[align=abscenter i], img[type=image i][align=abscenter i], object[align=abscenter i] { +embed[align=absmiddle i], iframe[align=absmiddle i], img[type=image i][align=absmiddle i], object[align=absmiddle i], +embed[align=abscenter i], iframe[align=abscenter i], img[type=image i][align=abscenter i], object[align=abscenter i] { vertical-align: middle; } -applet[align=bottom i], embed[align=bottom i], iframe[align=bottom i], img[type=image i][align=bottom i], object[align=bottom i] { +embed[align=bottom i], iframe[align=bottom i], img[type=image i][align=bottom i], object[align=bottom i] { vertical-align: bottom; } /* FIXME: -:matches(applet, embed, iframe, img, input[type=image i], object):matches([align=center i], [align=middle i]) { +:matches(embed, iframe, img, input[type=image i], object):matches([align=center i], [align=middle i]) { vertical-align: "aligns the vertical middle of the element with the parent element's baseline." } */ @@ -235,14 +235,14 @@ hr legend align -applet, embed, iframe, img, input[type=image i], object +embed, iframe, img, input[type=image i], object hspace vspace img, input[type=image i], object border -applet, embed, iframe, img, input[type=image i], object, video +embed, iframe, img, input[type=image i], object, video width height diff --git a/tests/wpt/metadata/css/css-transforms/transform-2d-getComputedStyle-001.html.ini b/tests/wpt/metadata/css/css-transforms/transform-2d-getComputedStyle-001.html.ini index ee407f81468..0aa5f4ebabc 100644 --- a/tests/wpt/metadata/css/css-transforms/transform-2d-getComputedStyle-001.html.ini +++ b/tests/wpt/metadata/css/css-transforms/transform-2d-getComputedStyle-001.html.ini @@ -11,3 +11,4 @@ [Matrix for skew] expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini b/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini deleted file mode 100644 index 2958573f6ca..00000000000 --- a/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[nameditem-03.html] - type: testharness - [applet elements are (mostly) gone] - expected: FAIL - diff --git a/tests/wpt/metadata/html/dom/historical.html.ini b/tests/wpt/metadata/html/dom/historical.html.ini index 461ce9164b9..0abf6ace116 100644 --- a/tests/wpt/metadata/html/dom/historical.html.ini +++ b/tests/wpt/metadata/html/dom/historical.html.ini @@ -1,17 +1,5 @@ [historical.html] type: testharness - [document.applets is always empty] - expected: FAIL - - [HTMLAppletElement is no more] - expected: FAIL - [document.all cannot find applet] expected: FAIL - [document cannot find applet] - expected: FAIL - - [applet is not styled] - expected: FAIL - diff --git a/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini b/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini index af184eb4318..c032f447b00 100644 --- a/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-obsolete.html.ini @@ -16314,3 +16314,99 @@ [font.tabIndex: IDL set to -2147483648] expected: FAIL + [applet.name: typeof IDL attribute] + expected: FAIL + + [applet.name: IDL get with DOM attribute unset] + expected: FAIL + + [applet.name: setAttribute() to ""] + expected: FAIL + + [applet.name: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [applet.name: setAttribute() to undefined] + expected: FAIL + + [applet.name: setAttribute() to 7] + expected: FAIL + + [applet.name: setAttribute() to 1.5] + expected: FAIL + + [applet.name: setAttribute() to true] + expected: FAIL + + [applet.name: setAttribute() to false] + expected: FAIL + + [applet.name: setAttribute() to object "[object Object\]"] + expected: FAIL + + [applet.name: setAttribute() to NaN] + expected: FAIL + + [applet.name: setAttribute() to Infinity] + expected: FAIL + + [applet.name: setAttribute() to -Infinity] + expected: FAIL + + [applet.name: setAttribute() to "\\0"] + expected: FAIL + + [applet.name: setAttribute() to null] + expected: FAIL + + [applet.name: setAttribute() to object "test-toString"] + expected: FAIL + + [applet.name: setAttribute() to object "test-valueOf"] + expected: FAIL + + [applet.name: IDL set to ""] + expected: FAIL + + [applet.name: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [applet.name: IDL set to undefined] + expected: FAIL + + [applet.name: IDL set to 7] + expected: FAIL + + [applet.name: IDL set to 1.5] + expected: FAIL + + [applet.name: IDL set to true] + expected: FAIL + + [applet.name: IDL set to false] + expected: FAIL + + [applet.name: IDL set to object "[object Object\]"] + expected: FAIL + + [applet.name: IDL set to NaN] + expected: FAIL + + [applet.name: IDL set to Infinity] + expected: FAIL + + [applet.name: IDL set to -Infinity] + expected: FAIL + + [applet.name: IDL set to "\\0"] + expected: FAIL + + [applet.name: IDL set to null] + expected: FAIL + + [applet.name: IDL set to object "test-toString"] + expected: FAIL + + [applet.name: IDL set to object "test-valueOf"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/interfaces.html.ini b/tests/wpt/metadata/html/semantics/interfaces.html.ini index 1993c6141ed..2ebff96f036 100644 --- a/tests/wpt/metadata/html/semantics/interfaces.html.ini +++ b/tests/wpt/metadata/html/semantics/interfaces.html.ini @@ -72,9 +72,3 @@ [Interfaces for TH] expected: FAIL - [Interfaces for applet] - expected: FAIL - - [Interfaces for APPLET] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index b292757f89e..eb77c69ee4d 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -65606,7 +65606,7 @@ "testharness" ], "mozilla/collections.html": [ - "aa060d1e5d1364224f2c2151e5f8b9580ac4427e", + "d0bebe808ebb45b6c853f4b88e1a6ebbf9b91345", "testharness" ], "mozilla/createEvent-storageevent.html": [ @@ -66342,7 +66342,7 @@ "testharness" ], "mozilla/interfaces.html": [ - "66e66d3bdfa3bebd5bf3d711c0737fb394efe973", + "ad914ab4c7a794b251c03f7b0f50aaef1ea78df0", "testharness" ], "mozilla/interfaces.js": [ diff --git a/tests/wpt/mozilla/tests/mozilla/collections.html b/tests/wpt/mozilla/tests/mozilla/collections.html index d10ec90360d..4011ee6bf32 100644 --- a/tests/wpt/mozilla/tests/mozilla/collections.html +++ b/tests/wpt/mozilla/tests/mozilla/collections.html @@ -27,7 +27,6 @@

pppppppppp

qqqqqqqqqqqqqqqqqqqqqqqqqqq 80% -
    @@ -100,7 +99,6 @@ test(function() { check_collection(document.embeds, 1, [HTMLEmbedElement], "EMBED"); check_collection(document.plugins, 1, [HTMLEmbedElement], "EMBED"); check_collection(document.scripts, 3, [HTMLScriptElement], "SCRIPT"); - check_collection(document.applets, 1, [HTMLAppletElement], "APPLET"); check_collection(document.forms, 1, [HTMLFormElement], "FORM"); check_collection(document.getElementsByTagName("nosuchtag"), 0); diff --git a/tests/wpt/mozilla/tests/mozilla/interfaces.html b/tests/wpt/mozilla/tests/mozilla/interfaces.html index 6fa817e559d..b28ff618699 100644 --- a/tests/wpt/mozilla/tests/mozilla/interfaces.html +++ b/tests/wpt/mozilla/tests/mozilla/interfaces.html @@ -67,7 +67,6 @@ test_interfaces([ "Headers", "History", "HTMLAnchorElement", - "HTMLAppletElement", "HTMLAreaElement", "HTMLAudioElement", "HTMLBaseElement",