From 31dafcc5f3e503655cc3e72ae10a815c47f55801 Mon Sep 17 00:00:00 2001 From: SendilKumar N Date: Fri, 10 Mar 2017 13:55:24 +0800 Subject: [PATCH] making image element areas good at finding areas linting errors replaced with map fixes comments moving to document added test cases linting and updating manifest changing test cases linting fixes manifest update linting fixes splitting the test cases into two --- components/script/dom/htmlimageelement.rs | 14 +++++------- components/script/dom/htmlmapelement.rs | 9 ++++++++ tests/wpt/mozilla/meta/MANIFEST.json | 20 +++++++++++++++++ .../mozilla/img_find_non_sibling_map.html | 22 +++++++++++++++++++ .../tests/mozilla/img_no_panic_on_no_map.html | 18 +++++++++++++++ 5 files changed, 74 insertions(+), 9 deletions(-) create mode 100644 tests/wpt/mozilla/tests/mozilla/img_find_non_sibling_map.html create mode 100644 tests/wpt/mozilla/tests/mozilla/img_no_panic_on_no_map.html diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index acf1d2ed9ce..7cebebade0a 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -429,16 +429,12 @@ impl HTMLImageElement { return None } - let map = self.upcast::() - .following_siblings() - .filter_map(Root::downcast::) - .find(|n| n.upcast::().get_string_attribute(&LocalName::from("name")) == last); + let useMapElements = document_from_node(self).upcast::() + .traverse_preorder() + .filter_map(Root::downcast::) + .find(|n| n.upcast::().get_string_attribute(&LocalName::from("name")) == last); - let elements: Vec> = map.unwrap().upcast::() - .children() - .filter_map(Root::downcast::) - .collect(); - Some(elements) + useMapElements.map(|mapElem| mapElem.get_area_elements()) } } diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs index c6bcb615431..9a2ae807619 100644 --- a/components/script/dom/htmlmapelement.rs +++ b/components/script/dom/htmlmapelement.rs @@ -3,9 +3,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLMapElementBinding; +use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::bindings::str::DOMString; use dom::document::Document; +use dom::htmlareaelement::HTMLAreaElement; use dom::htmlelement::HTMLElement; use dom::node::Node; use dom_struct::dom_struct; @@ -33,4 +35,11 @@ impl HTMLMapElement { document, HTMLMapElementBinding::Wrap) } + + pub fn get_area_elements(&self) -> Vec> { + self.upcast::() + .traverse_preorder() + .filter_map(Root::downcast::).collect() + } } + diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index aeb28a8527b..3e7ec3422b6 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -12960,12 +12960,24 @@ {} ] ], + "mozilla/img_find_non_sibling_map.html": [ + [ + "/_mozilla/mozilla/img_find_non_sibling_map.html", + {} + ] + ], "mozilla/img_multiple_request.html": [ [ "/_mozilla/mozilla/img_multiple_request.html", {} ] ], + "mozilla/img_no_panic_on_no_map.html": [ + [ + "/_mozilla/mozilla/img_no_panic_on_no_map.html", + {} + ] + ], "mozilla/img_width_height.html": [ [ "/_mozilla/mozilla/img_width_height.html", @@ -25489,10 +25501,18 @@ "3c4f36abed83367c851d943b1f25b8394de6fe75", "testharness" ], + "mozilla/img_find_non_sibling_map.html": [ + "d34100c4cc22adcaa1014095ba4b7b929b8e079d", + "testharness" + ], "mozilla/img_multiple_request.html": [ "0a6263ad87c9b3307f2dc694747b094a0517b79b", "testharness" ], + "mozilla/img_no_panic_on_no_map.html": [ + "be2ae22f4664b4577224ba6c7f3c4df8589c160a", + "testharness" + ], "mozilla/img_width_height.html": [ "37a04735261a6d2b36c3d529ce81eda46ed6967e", "testharness" diff --git a/tests/wpt/mozilla/tests/mozilla/img_find_non_sibling_map.html b/tests/wpt/mozilla/tests/mozilla/img_find_non_sibling_map.html new file mode 100644 index 00000000000..9b88509ecce --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/img_find_non_sibling_map.html @@ -0,0 +1,22 @@ + + +Test for issue #15884 + + + + + + + + + + + diff --git a/tests/wpt/mozilla/tests/mozilla/img_no_panic_on_no_map.html b/tests/wpt/mozilla/tests/mozilla/img_no_panic_on_no_map.html new file mode 100644 index 00000000000..e9f1b56ac4c --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/img_no_panic_on_no_map.html @@ -0,0 +1,18 @@ + + + Test for issue #15884 + + + + + + +