diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-04-27 11:51:27 -0500 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-04-27 11:51:27 -0500 |
commit | 5773b0bcdf7fa632938001ce1d42f3f217d010be (patch) | |
tree | b6df9f36f635c8131f1aade3be307a18e23cbf14 | |
parent | 92359c7b9addfe7ee161760aad20368bafd76c26 (diff) | |
parent | 93b883e1dbfe26d2fa2f92dbb55f6e8f2b8876d1 (diff) | |
download | servo-5773b0bcdf7fa632938001ce1d42f3f217d010be.tar.gz servo-5773b0bcdf7fa632938001ce1d42f3f217d010be.zip |
Auto merge of #5866 - Ms2ger:wpt_20150427, r=jdm
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/5866)
<!-- Reviewable:end -->
27 files changed, 1021 insertions, 165 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 59233ae40ce..6425a7fd530 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -1768,6 +1768,46 @@ "url": "/html/rendering/bindings/the-select-element-0/option-label.html" }, { + "path": "html/rendering/bindings/the-textarea-element-0/cols-default.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/cols-default.html" + }, + { + "path": "html/rendering/bindings/the-textarea-element-0/cols-zero.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/cols-zero.html" + }, + { + "path": "html/rendering/bindings/the-textarea-element-0/rows-default.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/rows-default.html" + }, + { + "path": "html/rendering/bindings/the-textarea-element-0/rows-zero.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/rows-zero.html" + }, + { "path": "html/rendering/non-replaced-elements/flow-content-0/figure.html", "references": [ [ @@ -11764,6 +11804,10 @@ "url": "/html/dom/documents/dom-tree-accessors/document.title-08.html" }, { + "path": "html/dom/documents/dom-tree-accessors/document.title-09.html", + "url": "/html/dom/documents/dom-tree-accessors/document.title-09.html" + }, + { "path": "html/dom/documents/dom-tree-accessors/nameditem-01.html", "url": "/html/dom/documents/dom-tree-accessors/nameditem-01.html" }, @@ -21482,6 +21526,54 @@ "url": "/html/rendering/bindings/the-select-element-0/option-label.html" } ], + "html/rendering/bindings/the-textarea-element-0/cols-default.html": [ + { + "path": "html/rendering/bindings/the-textarea-element-0/cols-default.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/cols-default.html" + } + ], + "html/rendering/bindings/the-textarea-element-0/cols-zero.html": [ + { + "path": "html/rendering/bindings/the-textarea-element-0/cols-zero.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/cols-zero.html" + } + ], + "html/rendering/bindings/the-textarea-element-0/rows-default.html": [ + { + "path": "html/rendering/bindings/the-textarea-element-0/rows-default.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/rows-default.html" + } + ], + "html/rendering/bindings/the-textarea-element-0/rows-zero.html": [ + { + "path": "html/rendering/bindings/the-textarea-element-0/rows-zero.html", + "references": [ + [ + "/html/rendering/bindings/the-textarea-element-0/textarea-ref.html", + "==" + ] + ], + "url": "/html/rendering/bindings/the-textarea-element-0/rows-zero.html" + } + ], "html/rendering/non-replaced-elements/flow-content-0/figure.html": [ { "path": "html/rendering/non-replaced-elements/flow-content-0/figure.html", @@ -25203,7 +25295,7 @@ } ] }, - "rev": "000905d008db2538360020335bc2dbba16d322b5", + "rev": "acdb8bf3e4714528b6b5f9ff038dc80ee4fb7dcf", "url_base": "/", "version": 2 }
\ No newline at end of file diff --git a/tests/wpt/metadata/encoding/textdecoder-labels.html.ini b/tests/wpt/metadata/encoding/textdecoder-labels.html.ini index 4f3fd8edbbf..324cc276a86 100644 --- a/tests/wpt/metadata/encoding/textdecoder-labels.html.ini +++ b/tests/wpt/metadata/encoding/textdecoder-labels.html.ini @@ -1,35 +1,530 @@ [textdecoder-labels.html] type: testharness - [name=gbk label=chinese] + ["chinese" => "gbk"] expected: FAIL - [name=gbk label=csgb2312] + [" chinese" => "gbk"] expected: FAIL - [name=gbk label=csiso58gb231280] + ["chinese " => "gbk"] expected: FAIL - [name=gbk label=gb2312] + [" chinese " => "gbk"] expected: FAIL - [name=gbk label=gb_2312] + ["\\tchinese" => "gbk"] expected: FAIL - [name=gbk label=gb_2312-80] + ["chinese\\t" => "gbk"] expected: FAIL - [name=gbk label=gbk] + ["\\tchinese\\t" => "gbk"] expected: FAIL - [name=gbk label=iso-ir-58] + ["\\nchinese" => "gbk"] expected: FAIL - [name=gbk label=x-gbk] + ["chinese\\n" => "gbk"] expected: FAIL - [name=utf-16le label=utf-16] + ["\\nchinese\\n" => "gbk"] expected: FAIL - [name=utf-16le label=utf-16le] + ["\\fchinese" => "gbk"] + expected: FAIL + + ["chinese\\f" => "gbk"] + expected: FAIL + + ["\\fchinese\\f" => "gbk"] + expected: FAIL + + ["\\rchinese" => "gbk"] + expected: FAIL + + ["chinese\\r" => "gbk"] + expected: FAIL + + ["\\rchinese\\r" => "gbk"] + expected: FAIL + + ["csgb2312" => "gbk"] + expected: FAIL + + [" csgb2312" => "gbk"] + expected: FAIL + + ["csgb2312 " => "gbk"] + expected: FAIL + + [" csgb2312 " => "gbk"] + expected: FAIL + + ["\\tcsgb2312" => "gbk"] + expected: FAIL + + ["csgb2312\\t" => "gbk"] + expected: FAIL + + ["\\tcsgb2312\\t" => "gbk"] + expected: FAIL + + ["\\ncsgb2312" => "gbk"] + expected: FAIL + + ["csgb2312\\n" => "gbk"] + expected: FAIL + + ["\\ncsgb2312\\n" => "gbk"] + expected: FAIL + + ["\\fcsgb2312" => "gbk"] + expected: FAIL + + ["csgb2312\\f" => "gbk"] + expected: FAIL + + ["\\fcsgb2312\\f" => "gbk"] + expected: FAIL + + ["\\rcsgb2312" => "gbk"] + expected: FAIL + + ["csgb2312\\r" => "gbk"] + expected: FAIL + + ["\\rcsgb2312\\r" => "gbk"] + expected: FAIL + + ["csiso58gb231280" => "gbk"] + expected: FAIL + + [" csiso58gb231280" => "gbk"] + expected: FAIL + + ["csiso58gb231280 " => "gbk"] + expected: FAIL + + [" csiso58gb231280 " => "gbk"] + expected: FAIL + + ["\\tcsiso58gb231280" => "gbk"] + expected: FAIL + + ["csiso58gb231280\\t" => "gbk"] + expected: FAIL + + ["\\tcsiso58gb231280\\t" => "gbk"] + expected: FAIL + + ["\\ncsiso58gb231280" => "gbk"] + expected: FAIL + + ["csiso58gb231280\\n" => "gbk"] + expected: FAIL + + ["\\ncsiso58gb231280\\n" => "gbk"] + expected: FAIL + + ["\\fcsiso58gb231280" => "gbk"] + expected: FAIL + + ["csiso58gb231280\\f" => "gbk"] + expected: FAIL + + ["\\fcsiso58gb231280\\f" => "gbk"] + expected: FAIL + + ["\\rcsiso58gb231280" => "gbk"] + expected: FAIL + + ["csiso58gb231280\\r" => "gbk"] + expected: FAIL + + ["\\rcsiso58gb231280\\r" => "gbk"] + expected: FAIL + + ["gb2312" => "gbk"] + expected: FAIL + + [" gb2312" => "gbk"] + expected: FAIL + + ["gb2312 " => "gbk"] + expected: FAIL + + [" gb2312 " => "gbk"] + expected: FAIL + + ["\\tgb2312" => "gbk"] + expected: FAIL + + ["gb2312\\t" => "gbk"] + expected: FAIL + + ["\\tgb2312\\t" => "gbk"] + expected: FAIL + + ["\\ngb2312" => "gbk"] + expected: FAIL + + ["gb2312\\n" => "gbk"] + expected: FAIL + + ["\\ngb2312\\n" => "gbk"] + expected: FAIL + + ["\\fgb2312" => "gbk"] + expected: FAIL + + ["gb2312\\f" => "gbk"] + expected: FAIL + + ["\\fgb2312\\f" => "gbk"] + expected: FAIL + + ["\\rgb2312" => "gbk"] + expected: FAIL + + ["gb2312\\r" => "gbk"] + expected: FAIL + + ["\\rgb2312\\r" => "gbk"] + expected: FAIL + + ["gb_2312" => "gbk"] + expected: FAIL + + [" gb_2312" => "gbk"] + expected: FAIL + + ["gb_2312 " => "gbk"] + expected: FAIL + + [" gb_2312 " => "gbk"] + expected: FAIL + + ["\\tgb_2312" => "gbk"] + expected: FAIL + + ["gb_2312\\t" => "gbk"] + expected: FAIL + + ["\\tgb_2312\\t" => "gbk"] + expected: FAIL + + ["\\ngb_2312" => "gbk"] + expected: FAIL + + ["gb_2312\\n" => "gbk"] + expected: FAIL + + ["\\ngb_2312\\n" => "gbk"] + expected: FAIL + + ["\\fgb_2312" => "gbk"] + expected: FAIL + + ["gb_2312\\f" => "gbk"] + expected: FAIL + + ["\\fgb_2312\\f" => "gbk"] + expected: FAIL + + ["\\rgb_2312" => "gbk"] + expected: FAIL + + ["gb_2312\\r" => "gbk"] + expected: FAIL + + ["\\rgb_2312\\r" => "gbk"] + expected: FAIL + + ["gb_2312-80" => "gbk"] + expected: FAIL + + [" gb_2312-80" => "gbk"] + expected: FAIL + + ["gb_2312-80 " => "gbk"] + expected: FAIL + + [" gb_2312-80 " => "gbk"] + expected: FAIL + + ["\\tgb_2312-80" => "gbk"] + expected: FAIL + + ["gb_2312-80\\t" => "gbk"] + expected: FAIL + + ["\\tgb_2312-80\\t" => "gbk"] + expected: FAIL + + ["\\ngb_2312-80" => "gbk"] + expected: FAIL + + ["gb_2312-80\\n" => "gbk"] + expected: FAIL + + ["\\ngb_2312-80\\n" => "gbk"] + expected: FAIL + + ["\\fgb_2312-80" => "gbk"] + expected: FAIL + + ["gb_2312-80\\f" => "gbk"] + expected: FAIL + + ["\\fgb_2312-80\\f" => "gbk"] + expected: FAIL + + ["\\rgb_2312-80" => "gbk"] + expected: FAIL + + ["gb_2312-80\\r" => "gbk"] + expected: FAIL + + ["\\rgb_2312-80\\r" => "gbk"] + expected: FAIL + + ["gbk" => "gbk"] + expected: FAIL + + [" gbk" => "gbk"] + expected: FAIL + + ["gbk " => "gbk"] + expected: FAIL + + [" gbk " => "gbk"] + expected: FAIL + + ["\\tgbk" => "gbk"] + expected: FAIL + + ["gbk\\t" => "gbk"] + expected: FAIL + + ["\\tgbk\\t" => "gbk"] + expected: FAIL + + ["\\ngbk" => "gbk"] + expected: FAIL + + ["gbk\\n" => "gbk"] + expected: FAIL + + ["\\ngbk\\n" => "gbk"] + expected: FAIL + + ["\\fgbk" => "gbk"] + expected: FAIL + + ["gbk\\f" => "gbk"] + expected: FAIL + + ["\\fgbk\\f" => "gbk"] + expected: FAIL + + ["\\rgbk" => "gbk"] + expected: FAIL + + ["gbk\\r" => "gbk"] + expected: FAIL + + ["\\rgbk\\r" => "gbk"] + expected: FAIL + + ["iso-ir-58" => "gbk"] + expected: FAIL + + [" iso-ir-58" => "gbk"] + expected: FAIL + + ["iso-ir-58 " => "gbk"] + expected: FAIL + + [" iso-ir-58 " => "gbk"] + expected: FAIL + + ["\\tiso-ir-58" => "gbk"] + expected: FAIL + + ["iso-ir-58\\t" => "gbk"] + expected: FAIL + + ["\\tiso-ir-58\\t" => "gbk"] + expected: FAIL + + ["\\niso-ir-58" => "gbk"] + expected: FAIL + + ["iso-ir-58\\n" => "gbk"] + expected: FAIL + + ["\\niso-ir-58\\n" => "gbk"] + expected: FAIL + + ["\\fiso-ir-58" => "gbk"] + expected: FAIL + + ["iso-ir-58\\f" => "gbk"] + expected: FAIL + + ["\\fiso-ir-58\\f" => "gbk"] + expected: FAIL + + ["\\riso-ir-58" => "gbk"] + expected: FAIL + + ["iso-ir-58\\r" => "gbk"] + expected: FAIL + + ["\\riso-ir-58\\r" => "gbk"] + expected: FAIL + + ["x-gbk" => "gbk"] + expected: FAIL + + [" x-gbk" => "gbk"] + expected: FAIL + + ["x-gbk " => "gbk"] + expected: FAIL + + [" x-gbk " => "gbk"] + expected: FAIL + + ["\\tx-gbk" => "gbk"] + expected: FAIL + + ["x-gbk\\t" => "gbk"] + expected: FAIL + + ["\\tx-gbk\\t" => "gbk"] + expected: FAIL + + ["\\nx-gbk" => "gbk"] + expected: FAIL + + ["x-gbk\\n" => "gbk"] + expected: FAIL + + ["\\nx-gbk\\n" => "gbk"] + expected: FAIL + + ["\\fx-gbk" => "gbk"] + expected: FAIL + + ["x-gbk\\f" => "gbk"] + expected: FAIL + + ["\\fx-gbk\\f" => "gbk"] + expected: FAIL + + ["\\rx-gbk" => "gbk"] + expected: FAIL + + ["x-gbk\\r" => "gbk"] + expected: FAIL + + ["\\rx-gbk\\r" => "gbk"] + expected: FAIL + + ["utf-16" => "utf-16le"] + expected: FAIL + + [" utf-16" => "utf-16le"] + expected: FAIL + + ["utf-16 " => "utf-16le"] + expected: FAIL + + [" utf-16 " => "utf-16le"] + expected: FAIL + + ["\\tutf-16" => "utf-16le"] + expected: FAIL + + ["utf-16\\t" => "utf-16le"] + expected: FAIL + + ["\\tutf-16\\t" => "utf-16le"] + expected: FAIL + + ["\\nutf-16" => "utf-16le"] + expected: FAIL + + ["utf-16\\n" => "utf-16le"] + expected: FAIL + + ["\\nutf-16\\n" => "utf-16le"] + expected: FAIL + + ["\\futf-16" => "utf-16le"] + expected: FAIL + + ["utf-16\\f" => "utf-16le"] + expected: FAIL + + ["\\futf-16\\f" => "utf-16le"] + expected: FAIL + + ["\\rutf-16" => "utf-16le"] + expected: FAIL + + ["utf-16\\r" => "utf-16le"] + expected: FAIL + + ["\\rutf-16\\r" => "utf-16le"] + expected: FAIL + + ["utf-16le" => "utf-16le"] + expected: FAIL + + [" utf-16le" => "utf-16le"] + expected: FAIL + + ["utf-16le " => "utf-16le"] + expected: FAIL + + [" utf-16le " => "utf-16le"] + expected: FAIL + + ["\\tutf-16le" => "utf-16le"] + expected: FAIL + + ["utf-16le\\t" => "utf-16le"] + expected: FAIL + + ["\\tutf-16le\\t" => "utf-16le"] + expected: FAIL + + ["\\nutf-16le" => "utf-16le"] + expected: FAIL + + ["utf-16le\\n" => "utf-16le"] + expected: FAIL + + ["\\nutf-16le\\n" => "utf-16le"] + expected: FAIL + + ["\\futf-16le" => "utf-16le"] + expected: FAIL + + ["utf-16le\\f" => "utf-16le"] + expected: FAIL + + ["\\futf-16le\\f" => "utf-16le"] + expected: FAIL + + ["\\rutf-16le" => "utf-16le"] + expected: FAIL + + ["utf-16le\\r" => "utf-16le"] + expected: FAIL + + ["\\rutf-16le\\r" => "utf-16le"] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 20365fb0f4d..766cebd5e53 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -8196,21 +8196,9 @@ [Location interface object length] expected: FAIL - [Location interface: operation replace(DOMString)] - expected: FAIL - - [Location interface: operation reload()] - expected: FAIL - - [Location interface: window.location must inherit property "replace" with the proper type (1)] - expected: FAIL - [Location interface: calling replace(DOMString) on window.location with too few arguments must throw TypeError] expected: FAIL - [Location interface: window.location must inherit property "reload" with the proper type (2)] - expected: FAIL - [PopStateEvent interface: existence and properties of interface object] expected: FAIL @@ -9501,3 +9489,102 @@ [HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type (2)] expected: FAIL + [Window interface: window must inherit property "close" with the proper type (13)] + expected: FAIL + + [Window interface: window must inherit property "frameElement" with the proper type (23)] + expected: FAIL + + [Window interface: window must inherit property "navigator" with the proper type (27)] + expected: FAIL + + [Window interface: window must inherit property "alert" with the proper type (30)] + expected: FAIL + + [Window interface: window must inherit property "onchange" with the proper type (45)] + expected: FAIL + + [Window interface: window must inherit property "onclick" with the proper type (46)] + expected: FAIL + + [Window interface: window must inherit property "onerror" with the proper type (62)] + expected: FAIL + + [Window interface: window must inherit property "oninput" with the proper type (64)] + expected: FAIL + + [Window interface: window must inherit property "onload" with the proper type (69)] + expected: FAIL + + [Window interface: window must inherit property "onsubmit" with the proper type (95)] + expected: FAIL + + [Window interface: window must inherit property "onunload" with the proper type (113)] + expected: FAIL + + [Window interface: window must inherit property "btoa" with the proper type (114)] + expected: FAIL + + [Window interface: calling btoa(DOMString) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "atob" with the proper type (115)] + expected: FAIL + + [Window interface: calling atob(DOMString) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "setTimeout" with the proper type (116)] + expected: FAIL + + [Window interface: calling setTimeout(Function,long,any) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "setTimeout" with the proper type (117)] + expected: FAIL + + [Window interface: calling setTimeout(DOMString,long,any) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "clearTimeout" with the proper type (118)] + expected: FAIL + + [Window interface: calling clearTimeout(long) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "setInterval" with the proper type (119)] + expected: FAIL + + [Window interface: calling setInterval(Function,long,any) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "setInterval" with the proper type (120)] + expected: FAIL + + [Window interface: calling setInterval(DOMString,long,any) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "clearInterval" with the proper type (121)] + expected: FAIL + + [Window interface: calling clearInterval(long) on window with too few arguments must throw TypeError] + expected: FAIL + + [Window interface: window must inherit property "sessionStorage" with the proper type (123)] + expected: FAIL + + [Window interface: window must inherit property "localStorage" with the proper type (124)] + expected: FAIL + + [Location interface: window.location must have own property "assign"] + expected: FAIL + + [Location interface: calling assign(DOMString) on window.location with too few arguments must throw TypeError] + expected: FAIL + + [Location interface: window.location must have own property "replace"] + expected: FAIL + + [Location interface: window.location must have own property "reload"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/cols-zero.html.ini b/tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/cols-zero.html.ini new file mode 100644 index 00000000000..55b4e3652d3 --- /dev/null +++ b/tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/cols-zero.html.ini @@ -0,0 +1,5 @@ +[cols-zero.html] + type: reftest + reftype: == + refurl: /html/rendering/bindings/the-textarea-element-0/textarea-ref.html + expected: FAIL diff --git a/tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/rows-zero.html.ini b/tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/rows-zero.html.ini new file mode 100644 index 00000000000..e4361f0ba33 --- /dev/null +++ b/tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/rows-zero.html.ini @@ -0,0 +1,5 @@ +[rows-zero.html] + type: reftest + reftype: == + refurl: /html/rendering/bindings/the-textarea-element-0/textarea-ref.html + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/relevant-mutations.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/relevant-mutations.html.ini index 9100a15ea44..97f48f3e0f8 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/relevant-mutations.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/relevant-mutations.html.ini @@ -1,55 +1,56 @@ [relevant-mutations.html] type: testharness + expected: TIMEOUT [src removed] expected: FAIL [srcset set] - expected: FAIL + expected: TIMEOUT [srcset changed] - expected: FAIL + expected: TIMEOUT [srcset removed] - expected: FAIL + expected: TIMEOUT [sizes set] - expected: FAIL + expected: TIMEOUT [sizes changed] - expected: FAIL + expected: TIMEOUT [sizes removed] - expected: FAIL + expected: TIMEOUT [crossorigin absent to empty] - expected: FAIL + expected: TIMEOUT [crossorigin absent to anonymous] - expected: FAIL + expected: TIMEOUT [crossorigin absent to use-credentials] - expected: FAIL + expected: TIMEOUT [crossorigin empty to absent] - expected: FAIL + expected: TIMEOUT [crossorigin empty to use-credentials] - expected: FAIL + expected: TIMEOUT [crossorigin anonymous to absent] - expected: FAIL + expected: TIMEOUT [crossorigin anonymous to use-credentials] - expected: FAIL + expected: TIMEOUT [crossorigin use-credentials to absent] - expected: FAIL + expected: TIMEOUT [crossorigin use-credentials to empty] - expected: FAIL + expected: TIMEOUT [crossorigin use-credentials to anonymous] - expected: FAIL + expected: TIMEOUT [crossorigin state not changed: absent, removeAttribute] expected: FAIL diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index de8ec6fd4e4..91e695ee7c0 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1 +1 @@ -53d2432c90ab9ef171dfbef8e22ed3f58fcef8f0 +56a7981c9c9c6df30fbb3add3d8d0085916fe313
\ No newline at end of file diff --git a/tests/wpt/metadata/workers/interfaces.worker.js.ini b/tests/wpt/metadata/workers/interfaces.worker.js.ini index 97bda445b76..72fc189cb2a 100644 --- a/tests/wpt/metadata/workers/interfaces.worker.js.ini +++ b/tests/wpt/metadata/workers/interfaces.worker.js.ini @@ -90,15 +90,6 @@ [WorkerNavigator interface: attribute onLine] expected: FAIL - [WorkerNavigator interface: self.navigator must inherit property "language" with the proper type (7)] - expected: FAIL - - [WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type (8)] - expected: FAIL - - [WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type (9)] - expected: FAIL - [WorkerLocation interface object length] expected: FAIL @@ -138,3 +129,21 @@ [WorkerLocation interface: self.location must inherit property "pathname" with the proper type (6)] expected: FAIL + [DedicatedWorkerGlobalScope interface: self must inherit property "postMessage" with the proper type (0)] + expected: FAIL + + [DedicatedWorkerGlobalScope interface: calling postMessage(any,[object Object\]) on self with too few arguments must throw TypeError] + expected: FAIL + + [DedicatedWorkerGlobalScope interface: self must inherit property "onmessage" with the proper type (1)] + expected: FAIL + + [WorkerNavigator interface: self.navigator must inherit property "language" with the proper type (6)] + expected: FAIL + + [WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type (7)] + expected: FAIL + + [WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type (8)] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/battery-status/battery-interface.js b/tests/wpt/web-platform-tests/battery-status/battery-interface.js index 7542dc965fb..7aac8938129 100644 --- a/tests/wpt/web-platform-tests/battery-status/battery-interface.js +++ b/tests/wpt/web-platform-tests/battery-status/battery-interface.js @@ -144,13 +144,6 @@ assert_equals(battery.onchargingchange, null, desc); }, 'onchargingchange: treat array as null'); - test(function() { - var desc = 'onchargingchange did not treat noncallable host object as null'; - battery.onchargingchange = function() {}; - battery.onchargingchange = Node; - assert_equals(battery.onchargingchange, null, desc); - }, 'onchargingchange: treat non-callable host object as null'); - // attribute EventHandler onchargingtimechange; test(function() { @@ -214,13 +207,6 @@ assert_equals(battery.onchargingtimechange, null, desc); }, 'onchargingtimechange: treat array as null'); - test(function() { - var desc = 'onchargingtimechange did not treat noncallable host object as null'; - battery.onchargingtimechange = function() {}; - battery.onchargingtimechange = Node; - assert_equals(battery.onchargingtimechange, null, desc); - }, 'onchargingtimechange: treat non-callable host object as null'); - // attribute EventHandler ondischargingtimechange; test(function() { @@ -284,13 +270,6 @@ assert_equals(battery.ondischargingtimechange, null, desc); }, 'ondischargingtimechange: treat array as null'); - test(function() { - var desc = 'ondischargingtimechange did not treat noncallable host object as null'; - battery.ondischargingtimechange = function() {}; - battery.ondischargingtimechange = Node; - assert_equals(battery.ondischargingtimechange, null, desc); - }, 'ondischargingtimechange: treat non-callable host object as null'); - // attribute EventHandler onlevelchange; test(function() { @@ -354,13 +333,6 @@ assert_equals(battery.onlevelchange, null, desc); }, 'onlevelchange: treat array as null'); - test(function() { - var desc = 'onlevelchange did not treat noncallable host object as null'; - battery.onlevelchange = function() {}; - battery.onlevelchange = Node; - assert_equals(battery.onlevelchange, null, desc); - }, 'onlevelchange: treat non-callable host object as null'); - done(); }, function () {}); diff --git a/tests/wpt/web-platform-tests/encoding/api-invalid-label.html b/tests/wpt/web-platform-tests/encoding/api-invalid-label.html index d2fa6786cdc..04f939a789d 100644 --- a/tests/wpt/web-platform-tests/encoding/api-invalid-label.html +++ b/tests/wpt/web-platform-tests/encoding/api-invalid-label.html @@ -7,8 +7,8 @@ var invalidLabel = "invalid-invalidLabel" test(function() { - assert_throws({name: 'RangeError'}, function() { new TextEncoder(invalidLabel); }); - assert_throws({name: 'RangeError'}, function() { new TextDecoder(invalidLabel); }); + assert_throws(new RangeError(), function() { new TextEncoder(invalidLabel); }); + assert_throws(new RangeError(), function() { new TextDecoder(invalidLabel); }); }, 'Invalid label "' + invalidLabel + '" should be rejected by API.'); </script> diff --git a/tests/wpt/web-platform-tests/encoding/api-replacement-encodings.html b/tests/wpt/web-platform-tests/encoding/api-replacement-encodings.html index d0accbc8de8..ef0cdb88ec0 100644 --- a/tests/wpt/web-platform-tests/encoding/api-replacement-encodings.html +++ b/tests/wpt/web-platform-tests/encoding/api-replacement-encodings.html @@ -6,8 +6,8 @@ <script> test(function() { - assert_throws({name: 'RangeError'}, function() { new TextEncoder('replacement'); }); - assert_throws({name: 'RangeError'}, function() { new TextDecoder('replacement'); }); + assert_throws(new RangeError(), function() { new TextEncoder('replacement'); }); + assert_throws(new RangeError(), function() { new TextDecoder('replacement'); }); }, 'The "replacement" label should not be a known encoding.'); encodings_table.forEach(function(section) { @@ -16,8 +16,8 @@ encodings_table.forEach(function(section) { }).forEach(function(encoding) { encoding.labels.forEach(function(label) { test(function() { - assert_throws({name: 'RangeError'}, function() { new TextEncoder(label); }); - assert_throws({name: 'RangeError'}, function() { new TextDecoder(label); }); + assert_throws(new RangeError(), function() { new TextEncoder(label); }); + assert_throws(new RangeError(), function() { new TextDecoder(label); }); }, 'Label for "replacement" should be rejected by API: ' + label); }); }); diff --git a/tests/wpt/web-platform-tests/encoding/textdecoder-labels.html b/tests/wpt/web-platform-tests/encoding/textdecoder-labels.html index 5a56ff9cb6d..1f3202c963e 100644 --- a/tests/wpt/web-platform-tests/encoding/textdecoder-labels.html +++ b/tests/wpt/web-platform-tests/encoding/textdecoder-labels.html @@ -4,22 +4,33 @@ <script src="/resources/testharnessreport.js"></script> <script src="resources/encodings.js"></script> <script> - -encodings_table.forEach(function(section) { +var tests = []; +setup(function() { + var whitespace = [' ', '\t', '\n', '\f', '\r']; + encodings_table.forEach(function(section) { section.encodings.filter(function(encoding) { - return encoding.name !== 'replacement'; + return encoding.name !== 'replacement'; }).forEach(function(encoding) { - var name = encoding.name; - encoding.labels.forEach(function(label) { - test(function(){ - assert_equals(new TextDecoder(label).encoding, encoding.name, - 'label for encoding should match'); - assert_equals(new TextDecoder(label.toUpperCase()).encoding, - encoding.name, - 'label matching should be case-insensitive'); - }, 'name=' + name + ' label=' + label); + var name = encoding.name; + encoding.labels.forEach(function(label) { + tests.push([label, encoding.name]); + whitespace.forEach(function(ws) { + tests.push([ws + label, encoding.name]); + tests.push([label + ws, encoding.name]); + tests.push([ws + label + ws, encoding.name]); }); + }); }); + }); }); +tests.forEach(function(t) { + var input = t[0], output = t[1]; + test(function() { + assert_equals(new TextDecoder(input).encoding, output, + 'label for encoding should match'); + assert_equals(new TextDecoder(input.toUpperCase()).encoding, output, + 'label matching should be case-insensitive'); + }, format_value(input) + " => " + format_value(output)); +}); </script> diff --git a/tests/wpt/web-platform-tests/encoding/textencoder-constructor-non-utf.html b/tests/wpt/web-platform-tests/encoding/textencoder-constructor-non-utf.html index f284ad0aa74..82ad56bc46f 100644 --- a/tests/wpt/web-platform-tests/encoding/textencoder-constructor-non-utf.html +++ b/tests/wpt/web-platform-tests/encoding/textencoder-constructor-non-utf.html @@ -17,7 +17,7 @@ encodings_table.forEach(function(section) { } else { test(function() { assert_equals(new TextDecoder(encoding.name).encoding, encoding.name); - assert_throws({name: 'RangeError'}, function() { new TextEncoder(encoding.name); }); + assert_throws(new RangeError(), function() { new TextEncoder(encoding.name); }); }, 'Non-UTF encodings supported only for decode, not encode: ' + encoding.name); } }); diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html new file mode 100644 index 00000000000..731d78cc14f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#document.title"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +var SVG_NAMESPACE = "http://www.w3.org/2000/svg"; + +function newSVGDocument() { + return document.implementation.createDocument(SVG_NAMESPACE, "svg"); +} + +test(function() { + var doc = newSVGDocument(); + assert_equals(doc.title, ""); + var child = doc.createElementNS(SVG_NAMESPACE, "x-child"); + doc.documentElement.appendChild(child); + doc.title = "foo"; + var lastChild = doc.documentElement.lastChild; + assert_equals(lastChild.namespaceURI, SVG_NAMESPACE); + assert_equals(lastChild.localName, "title"); + assert_equals(lastChild.textContent, "foo"); + assert_equals(doc.title, "foo"); +}, "No title element in SVG document"); + +test(function() { + var doc = newSVGDocument(); + var title = doc.createElementNS(SVG_NAMESPACE, "title"); + title.textContent = "foo"; + doc.documentElement.appendChild(title) + assert_equals(doc.title, "foo"); + doc.title += "bar"; + assert_equals(title.textContent, "foobar"); + assert_equals(title.childNodes.length, 1); + assert_true(title.childNodes[0] instanceof Text); + assert_equals(doc.title, "foobar"); + doc.title = ""; + assert_equals(title.textContent, ""); + assert_equals(doc.title, ""); + assert_equals(title.childNodes.length, 0); +}, "Title element in SVG document"); + +test(function() { + var doc = newSVGDocument(); + var title = doc.createElementNS(SVG_NAMESPACE, "title"); + title.textContent = "foo"; + var child = doc.createElementNS(SVG_NAMESPACE, "x-child"); + child.appendChild(title); + doc.documentElement.appendChild(child); + assert_equals(doc.title, ""); +}, "Title element not child of SVG root"); + +test(function() { + var doc = newSVGDocument(); + var title = doc.createElement("title"); + title.textContent = "foo"; + doc.documentElement.appendChild(title); + assert_equals(doc.title, ""); +}, "Title element not in SVG namespace"); +</script> diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-default.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-default.html new file mode 100644 index 00000000000..067d658dd46 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-default.html @@ -0,0 +1,5 @@ +<!doctype html> +<meta charset=utf-8> +<title>Textarea cols</title> +<link rel=match href=textarea-ref.html> +<textarea cols=20></textarea> diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-zero.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-zero.html new file mode 100644 index 00000000000..8ecac6bf5a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-zero.html @@ -0,0 +1,5 @@ +<!doctype html> +<meta charset=utf-8> +<title>Textarea cols</title> +<link rel=match href=textarea-ref.html> +<textarea cols=0></textarea> diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-default.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-default.html new file mode 100644 index 00000000000..5bb9f61eee1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-default.html @@ -0,0 +1,5 @@ +<!doctype html> +<meta charset=utf-8> +<title>Textarea rows</title> +<link rel=match href=textarea-ref.html> +<textarea rows=2></textarea> diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-zero.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-zero.html new file mode 100644 index 00000000000..79c8d0ff53b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-zero.html @@ -0,0 +1,5 @@ +<!doctype html> +<meta charset=utf-8> +<title>Textarea rows</title> +<link rel=match href=textarea-ref.html> +<textarea rows=0></textarea> diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/textarea-ref.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/textarea-ref.html new file mode 100644 index 00000000000..f2982808f65 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/textarea-ref.html @@ -0,0 +1,4 @@ +<!doctype html> +<meta charset=utf-8> +<title>Default textarea</title> +<textarea></textarea> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html index 535bada1f23..2b543812c08 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html @@ -107,10 +107,9 @@ function t(desc, func, expect) { var img = document.querySelector('[data-desc="' + desc + '"]'); img.onload = img.onerror = this.unreached_func('update the image data was run'); if (expect == 'timeout') { - setTimeout(this.step_func_done(), 250); + setTimeout(this.step_func_done(), 1000); } else { img['on' + expect] = this.step_func_done(function() {}); - setTimeout(this.unreached_func('update the image data was not run'), 250) } func.call(this, img); }, desc); diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.js b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.js index a7e8b1dba8e..cf16c68d441 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.js +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.js @@ -23,7 +23,20 @@ function run_test() { }, "product"); test(function() { - assert_false(navigator.taintEnabled()); + // See https://www.w3.org/Bugs/Public/show_bug.cgi?id=22555 + if ("window" in self) { + // If you identify as WebKit, taintEnabled should not exist. + if (navigator.userAgent.indexOf("WebKit") != -1) { + assert_false("taintEnabled" in navigator); + } + // Otherwise it should exist and return false. + else { + assert_false(navigator.taintEnabled()); + } + } else { + // taintEnabled should not exist in workers. + assert_false("taintEnabled" in navigator); + } }, "taintEnabled"); test(function() { diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index c683aa04235..c683aa04235 100644 --- a/tests/wpt/web-platform-tests/tools/lint/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index 884daeae216..b8a87c66990 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -553,6 +553,11 @@ function IdlInterface(obj, is_callback) { /** An array of IdlInterfaceMembers. */ this.members = obj.members.map(function(m){return new IdlInterfaceMember(m); }); + if (this.has_extended_attribute("Unforgeable")) { + this.members + .filter(function(m) { return !m["static"] && (m.type == "attribute" || m.type == "operation"); }) + .forEach(function(m) { return m.isUnforgeable = true; }); + } /** * The name (as a string) of the type we inherit from, or null if there is @@ -1003,7 +1008,26 @@ IdlInterface.prototype.test_member_attribute = function(member) assert_false(member.name in self[this.name].prototype, "The prototype object must not have a property " + format_value(member.name)); - do_interface_attribute_asserts(self, member); + + // Try/catch around the get here, since it can legitimately throw. + // If it does, we obviously can't check for equality with direct + // invocation of the getter. + var gotValue; + var propVal; + try { + propVal = self[member.name]; + gotValue = true; + } catch (e) { + gotValue = false; + } + if (gotValue) { + var getter = Object.getOwnPropertyDescriptor(self, member.name).get; + assert_equals(typeof(getter), "function", + format_value(member.name) + " must have a getter"); + assert_equals(propVal, getter.call(undefined), + "Gets on a global should not require an explicit this"); + } + this.do_interface_attribute_asserts(self, member); } else { assert_true(member.name in self[this.name].prototype, "The prototype object must have a property " + @@ -1017,7 +1041,7 @@ IdlInterface.prototype.test_member_attribute = function(member) assert_equals(self[this.name].prototype[member.name], undefined, "getting property on prototype object must return undefined"); } - do_interface_attribute_asserts(self[this.name].prototype, member); + this.do_interface_attribute_asserts(self[this.name].prototype, member); } }.bind(this), this.name + " interface: attribute " + member.name); }; @@ -1055,7 +1079,7 @@ IdlInterface.prototype.test_member_operation = function(member) var memberHolderObject; if (member["static"]) { assert_own_property(self[this.name], member.name, - "interface prototype object missing static operation"); + "interface object missing static operation"); memberHolderObject = self[this.name]; } else if (this.is_global()) { assert_own_property(self, member.name, @@ -1067,46 +1091,66 @@ IdlInterface.prototype.test_member_operation = function(member) memberHolderObject = self[this.name].prototype; } - var desc = Object.getOwnPropertyDescriptor(memberHolderObject, member.name); - // "The property has attributes { [[Writable]]: true, - // [[Enumerable]]: true, [[Configurable]]: true }." - assert_false("get" in desc, "property has getter"); - assert_false("set" in desc, "property has setter"); - assert_true(desc.writable, "property is not writable"); - assert_true(desc.enumerable, "property is not enumerable"); - assert_true(desc.configurable, "property is not configurable"); - // "The value of the property is a Function object whose - // behavior is as follows . . ." - assert_equals(typeof memberHolderObject[member.name], "function", - "property must be a function"); - // "The value of the Function object’s “length” property is - // a Number determined as follows: - // ". . . - // "Return the length of the shortest argument list of the - // entries in S." - // - // TODO: Doesn't handle overloading or variadic arguments. - assert_equals(memberHolderObject[member.name].length, - member.arguments.filter(function(arg) { - return !arg.optional; - }).length, - "property has wrong .length"); + this.do_member_operation_asserts(memberHolderObject, member); + }.bind(this), this.name + " interface: operation " + member.name + + "(" + member.arguments.map(function(m) { return m.idlType.idlType; }) + + ")"); +}; - // Make some suitable arguments - var args = member.arguments.map(function(arg) { - return create_suitable_object(arg.idlType); - }); +//@} +IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject, member) +//@{ +{ + var operationUnforgeable = member.isUnforgeable; + var desc = Object.getOwnPropertyDescriptor(memberHolderObject, member.name); + // "The property has attributes { [[Writable]]: B, + // [[Enumerable]]: true, [[Configurable]]: B }, where B is false if the + // operation is unforgeable on the interface, and true otherwise". + assert_false("get" in desc, "property has getter"); + assert_false("set" in desc, "property has setter"); + assert_equals(desc.writable, !operationUnforgeable, + "property should be writable if and only if not unforgeable"); + assert_true(desc.enumerable, "property is not enumerable"); + assert_equals(desc.configurable, !operationUnforgeable, + "property should be configurable if and only if not unforgeable"); + // "The value of the property is a Function object whose + // behavior is as follows . . ." + assert_equals(typeof memberHolderObject[member.name], "function", + "property must be a function"); + // "The value of the Function object’s “length” property is + // a Number determined as follows: + // ". . . + // "Return the length of the shortest argument list of the + // entries in S." + // + // TODO: Doesn't handle overloading or variadic arguments. + assert_equals(memberHolderObject[member.name].length, + member.arguments.filter(function(arg) { + return !arg.optional; + }).length, + "property has wrong .length"); + + // Make some suitable arguments + var args = member.arguments.map(function(arg) { + return create_suitable_object(arg.idlType); + }); - // "Let O be a value determined as follows: - // ". . . - // "Otherwise, throw a TypeError." - // This should be hit if the operation is not static, there is - // no [ImplicitThis] attribute, and the this value is null. - // - // TODO: We currently ignore the [ImplicitThis] case. - if (!member["static"]) { + // "Let O be a value determined as follows: + // ". . . + // "Otherwise, throw a TypeError." + // This should be hit if the operation is not static, there is + // no [ImplicitThis] attribute, and the this value is null. + // + // TODO: We currently ignore the [ImplicitThis] case. Except we manually + // check for globals, since otherwise we'll invoke window.close(). And we + // have to skip this test for anything that on the proto chain of "self", + // since that does in fact have implicit-this behavior. + if (!member["static"]) { + if (!this.is_global() && + memberHolderObject[member.name] != self[member.name]) + { assert_throws(new TypeError(), function() { - self[this.name].prototype[member.name].apply(null, args); + memberHolderObject[member.name].apply(null, args); }, "calling operation with this = null didn't throw TypeError"); } @@ -1116,12 +1160,10 @@ IdlInterface.prototype.test_member_operation = function(member) // TODO: Test a platform object that implements some other // interface. (Have to be sure to get inheritance right.) assert_throws(new TypeError(), function() { - self[this.name].prototype[member.name].apply({}, args); + memberHolderObject[member.name].apply({}, args); }, "calling operation with this = {} didn't throw TypeError"); - }.bind(this), this.name + " interface: operation " + member.name + - "(" + member.arguments.map(function(m) { return m.idlType.idlType; }) + - ")"); -}; + } +} //@} IdlInterface.prototype.test_member_stringifier = function(member) @@ -1150,15 +1192,18 @@ IdlInterface.prototype.test_member_stringifier = function(member) assert_own_property(self[this.name].prototype, "toString", "interface prototype object missing non-static operation"); + var stringifierUnforgeable = member.isUnforgeable; var desc = Object.getOwnPropertyDescriptor(interfacePrototypeObject, "toString"); // "The property has attributes { [[Writable]]: B, // [[Enumerable]]: true, [[Configurable]]: B }, where B is false if the // stringifier is unforgeable on the interface, and true otherwise." assert_false("get" in desc, "property has getter"); assert_false("set" in desc, "property has setter"); - assert_true(desc.writable, "property is not writable"); + assert_equals(desc.writable, !stringifierUnforgeable, + "property should be writable if and only if not unforgeable"); assert_true(desc.enumerable, "property is not enumerable"); - assert_true(desc.configurable, "property is not configurable"); + assert_equals(desc.configurable, !stringifierUnforgeable, + "property should be configurable if and only if not unforgeable"); // "The value of the property is a Function object, which behaves as // follows . . ." assert_equals(typeof interfacePrototypeObject.toString, "function", @@ -1203,7 +1248,8 @@ IdlInterface.prototype.test_members = function() case "attribute": // For unforgeable attributes, we do the checks in // test_interface_of instead. - if (!member.has_extended_attribute("Unforgeable")) { + if (!member.isUnforgeable) + { this.test_member_attribute(member); } break; @@ -1211,8 +1257,13 @@ IdlInterface.prototype.test_members = function() case "operation": // TODO: Need to correctly handle multiple operations with the same // identifier. + // For unforgeable operations, we do the checks in + // test_interface_of instead. if (member.name) { - this.test_member_operation(member); + if (!member.isUnforgeable) + { + this.test_member_operation(member); + } } else if (member.stringifier) { this.test_member_stringifier(member); } @@ -1321,13 +1372,26 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect for (var i = 0; i < this.members.length; i++) { var member = this.members[i]; - if (member.has_extended_attribute("Unforgeable")) + if (member.type == "attribute" && member.isUnforgeable) { test(function() { assert_equals(exception, null, "Unexpected exception when evaluating object"); assert_equals(typeof obj, expected_typeof, "wrong typeof object"); - do_interface_attribute_asserts(obj, member); + this.do_interface_attribute_asserts(obj, member); + }.bind(this), this.name + " interface: " + desc + ' must have own property "' + member.name + '"'); + } + else if (member.type == "operation" && + member.name && + member.isUnforgeable) + { + test(function() + { + assert_equals(exception, null, "Unexpected exception when evaluating object"); + assert_equals(typeof obj, expected_typeof, "wrong typeof object"); + assert_own_property(obj, member.name, + "Doesn't have the unforgeable operation property"); + this.do_member_operation_asserts(obj, member); }.bind(this), this.name + " interface: " + desc + ' must have own property "' + member.name + '"'); } else if ((member.type == "const" @@ -1340,7 +1404,12 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect assert_equals(exception, null, "Unexpected exception when evaluating object"); assert_equals(typeof obj, expected_typeof, "wrong typeof object"); if (!member["static"]) { - assert_inherits(obj, member.name); + if (!this.is_global()) { + assert_inherits(obj, member.name); + } else { + assert_own_property(obj, member.name); + } + if (member.type == "const") { assert_equals(obj[member.name], constValue(member.value)); @@ -1381,7 +1450,11 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect assert_equals(exception, null, "Unexpected exception when evaluating object"); assert_equals(typeof obj, expected_typeof, "wrong typeof object"); if (!member["static"]) { - assert_inherits(obj, member.name); + if (!this.is_global() && !member.isUnforgeable) { + assert_inherits(obj, member.name); + } else { + assert_own_property(obj, member.name); + } } else { @@ -1423,7 +1496,7 @@ IdlInterface.prototype.has_stringifier = function() }; //@} -function do_interface_attribute_asserts(obj, member) +IdlInterface.prototype.do_interface_attribute_asserts = function(obj, member) //@{ { // This function tests WebIDL as of 2015-01-27. @@ -1451,7 +1524,7 @@ function do_interface_attribute_asserts(obj, member) assert_false("value" in desc, 'property descriptor has value but is supposed to be accessor'); assert_false("writable" in desc, 'property descriptor has "writable" field but is supposed to be accessor'); assert_true(desc.enumerable, "property is not enumerable"); - if (member.has_extended_attribute("Unforgeable")) + if (member.isUnforgeable) { assert_false(desc.configurable, "[Unforgeable] property must not be configurable"); } @@ -1545,6 +1618,8 @@ function IdlInterfaceMember(obj) { this.extAttrs = []; } + + this.isUnforgeable = this.has_extended_attribute("Unforgeable"); } //@} diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index 748010306c1..67b0f406c08 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -71,13 +71,22 @@ policies and contribution forms [3]. WindowTestEnvironment.prototype._dispatch = function(selector, callback_args, message_arg) { this._forEach_windows( - function(w, is_same_origin) { - if (is_same_origin && selector in w) { + function(w, same_origin) { + if (same_origin) { try { - w[selector].apply(undefined, callback_args); - } catch (e) { - if (debug) { - throw e; + var has_selector = selector in w; + } catch(e) { + // If document.domain was set at some point same_origin can be + // wrong and the above will fail. + has_selector = false; + } + if (has_selector) { + try { + w[selector].apply(undefined, callback_args); + } catch (e) { + if (debug) { + throw e; + } } } } @@ -1504,7 +1513,7 @@ policies and contribution forms [3]. status: { status: tests.status.ERROR, message: "Error in worker" + filename + ": " + message, - stack: e.stack + stack: error.stack } }); error.preventDefault(); diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py index e33cc6ef03a..2d63f01d403 100644 --- a/tests/wpt/web-platform-tests/tools/lint/lint.py +++ b/tests/wpt/web-platform-tests/tools/lint/lint.py @@ -76,7 +76,7 @@ def whitelist_errors(path, errors): global _whitelist_fn if _whitelist_fn is None: - _whitelist_fn = parse_whitelist_file(os.path.join(here, "lint.whitelist")) + _whitelist_fn = parse_whitelist_file(os.path.join(repo_root, "lint.whitelist")) return _whitelist_fn(path, errors) class Regexp(object): diff --git a/tests/wpt/web-platform-tests/workers/interfaces.idl b/tests/wpt/web-platform-tests/workers/interfaces.idl index 5bfd2883525..7b30ba56301 100644 --- a/tests/wpt/web-platform-tests/workers/interfaces.idl +++ b/tests/wpt/web-platform-tests/workers/interfaces.idl @@ -96,7 +96,6 @@ interface NavigatorID { readonly attribute DOMString appVersion; readonly attribute DOMString platform; readonly attribute DOMString product; // constant "Gecko" - boolean taintEnabled(); // constant false readonly attribute DOMString userAgent; }; diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect.html b/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect.html index d939dc150da..2fd16a4c163 100644 --- a/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect.html +++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect.html @@ -9,7 +9,7 @@ <script> async_test(function() { var worker = new Worker('helper-redirect.py?fail'); - worker.onmessage = this.step_func(function(e) { + worker.onmessage = this.step_func_done(function(e) { assert_equals(e.data[0], location.href.replace(/\/[^\/]+$/, '/post-location-members.js?a')); assert_equals(e.data[1], location.protocol); assert_equals(e.data[2], location.host); |