From 7ab5df11064ccfb44158b168ae1719392b24e8fd Mon Sep 17 00:00:00 2001 From: nupurbaghel Date: Wed, 19 Sep 2018 19:01:43 +0000 Subject: [PATCH] implement missing steps for complete api --- components/script/dom/htmlimageelement.rs | 15 ++++-- .../dom/webidls/HTMLImageElement.webidl | 4 +- tests/wpt/metadata/MANIFEST.json | 2 +- .../viewport-change.html.ini | 23 +------- ...-with-responsive-images.tentative.html.ini | 6 +-- ...se-a-sizes-attribute-display-none.html.ini | 52 ------------------- ...rse-a-sizes-attribute-quirks-mode.html.ini | 52 ------------------- ...-a-sizes-attribute-standards-mode.html.ini | 52 ------------------- ...se-a-sizes-attribute-width-1000px.html.ini | 52 ------------------- .../the-img-element/img.complete.html | 21 +++++++- 10 files changed, 37 insertions(+), 242 deletions(-) delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 8107d8bcb5d..4ef2fccc79d 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -1414,6 +1414,11 @@ impl HTMLImageElementMethods for HTMLImageElement { // https://html.spec.whatwg.org/multipage/#dom-img-src make_setter!(SetSrc, "src"); + // https://html.spec.whatwg.org/multipage/#dom-img-srcset + make_getter!(Srcset, "srcset"); + // https://html.spec.whatwg.org/multipage/#dom-img-src + make_setter!(SetSrcset, "srcset"); + // https://html.spec.whatwg.org/multipage/#dom-img-crossOrigin fn GetCrossOrigin(&self) -> Option { reflect_cross_origin_attribute(self.upcast::()) @@ -1487,13 +1492,13 @@ impl HTMLImageElementMethods for HTMLImageElement { // https://html.spec.whatwg.org/multipage/#dom-img-complete fn Complete(&self) -> bool { let elem = self.upcast::(); - // TODO: take srcset into account - if !elem.has_attribute(&local_name!("src")) { - return true; + let srcset_absent = !elem.has_attribute(&local_name!("srcset")); + if !elem.has_attribute(&local_name!("src")) && srcset_absent { + return true } let src = elem.get_string_attribute(&local_name!("src")); - if src.is_empty() { - return true; + if srcset_absent && src.is_empty() { + return true } let request = self.current_request.borrow(); let request_state = request.state; diff --git a/components/script/dom/webidls/HTMLImageElement.webidl b/components/script/dom/webidls/HTMLImageElement.webidl index 4f5be4daf7c..b7dddd07b9f 100644 --- a/components/script/dom/webidls/HTMLImageElement.webidl +++ b/components/script/dom/webidls/HTMLImageElement.webidl @@ -9,8 +9,8 @@ interface HTMLImageElement : HTMLElement { attribute DOMString alt; [CEReactions] attribute DOMString src; - // [CEReactions] - // attribute DOMString srcset; + [CEReactions] + attribute DOMString srcset; [CEReactions] attribute DOMString? crossOrigin; [CEReactions] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 5a657e8f587..1bdfe665e83 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -610714,7 +610714,7 @@ "support" ], "html/semantics/embedded-content/the-img-element/img.complete.html": [ - "4be8d4db848ad259a508e1a8091feaae7733e784", + "ee043a8c94fa4f69b0648d5d31e17f5cc591ec5f", "testharness" ], "html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-with-responsive-images.tentative.html": [ diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini index 0f1a214d0ee..18999a2cf7b 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini @@ -1,33 +1,14 @@ [viewport-change.html] type: testharness - expected: TIMEOUT [picture: source (max-width:500px) broken image, img valid image, resize to wide] - expected: TIMEOUT + expected: FAIL [picture: source (max-width:500px) valid image, img valid image, resize to wide] expected: FAIL [picture: source (max-width:500px) valid image, img broken image, resize to narrow] - expected: TIMEOUT + expected: FAIL [picture: source (max-width:500px) valid image, img valid image, resize to narrow] expected: FAIL - [picture: source (max-width:500px) broken image, img valid image, resize to narrow] - expected: FAIL - - [img (srcset 1 cand) valid image, resize to wide] - expected: FAIL - - [picture: same URL in source (max-width:500px) and img, resize to wide] - expected: FAIL - - [img (srcset 1 cand) valid image, resize to narrow] - expected: FAIL - - [picture: source (max-width:500px) valid image, img broken image, resize to wide] - expected: FAIL - - [picture: same URL in source (max-width:500px) and img, resize to narrow] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-with-responsive-images.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-with-responsive-images.tentative.html.ini index ce02e674b67..8e027c0cd4e 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-with-responsive-images.tentative.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-with-responsive-images.tentative.html.ini @@ -1,7 +1,7 @@ [intrinsicsize-with-responsive-images.tentative.html] expected: TIMEOUT [Test image /images/green.png with no specified sizes, width, or height] - expected: TIMEOUT + expected: FAIL [Test image /images/green.svg with no specified sizes, width, or height] expected: TIMEOUT @@ -10,7 +10,7 @@ expected: FAIL [Test image (32 x 32) with sizes = 100 and srcset descriptor = 32w] - expected: TIMEOUT + expected: FAIL [Test image /images/green.svg with width = 800, no specified sizes, or height] expected: TIMEOUT @@ -19,5 +19,5 @@ expected: FAIL [Test image /images/green.png with width = 800, no specified sizes, or height] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini deleted file mode 100644 index 24d7b92b058..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html.ini +++ /dev/null @@ -1,52 +0,0 @@ -[parse-a-sizes-attribute-display-none.html] - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - - [ ref sizes="1px" (display:none)] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini deleted file mode 100644 index d5902a67ea6..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini +++ /dev/null @@ -1,52 +0,0 @@ -[parse-a-sizes-attribute-quirks-mode.html] - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - - [ ref sizes="1px" (quirks mode)] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini deleted file mode 100644 index 779c4de3965..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html.ini +++ /dev/null @@ -1,52 +0,0 @@ -[parse-a-sizes-attribute-standards-mode.html] - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - - [ ref sizes="1px" (standards mode)] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini deleted file mode 100644 index 4ae1d2faf27..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini +++ /dev/null @@ -1,52 +0,0 @@ -[parse-a-sizes-attribute-width-1000px.html] - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - - [ ref sizes="1px" (width:1000px)] - expected: FAIL - diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html index 4be8d4db848..ee043a8c94f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html @@ -11,6 +11,7 @@ +