aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-04-27 11:51:27 -0500
committerbors-servo <metajack+bors@gmail.com>2015-04-27 11:51:27 -0500
commit5773b0bcdf7fa632938001ce1d42f3f217d010be (patch)
treeb6df9f36f635c8131f1aade3be307a18e23cbf14
parent92359c7b9addfe7ee161760aad20368bafd76c26 (diff)
parent93b883e1dbfe26d2fa2f92dbb55f6e8f2b8876d1 (diff)
downloadservo-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 -->
-rw-r--r--tests/wpt/metadata/MANIFEST.json94
-rw-r--r--tests/wpt/metadata/encoding/textdecoder-labels.html.ini517
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini111
-rw-r--r--tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/cols-zero.html.ini5
-rw-r--r--tests/wpt/metadata/html/rendering/bindings/the-textarea-element-0/rows-zero.html.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/relevant-mutations.html.ini33
-rw-r--r--tests/wpt/metadata/mozilla-sync2
-rw-r--r--tests/wpt/metadata/workers/interfaces.worker.js.ini27
-rw-r--r--tests/wpt/web-platform-tests/battery-status/battery-interface.js28
-rw-r--r--tests/wpt/web-platform-tests/encoding/api-invalid-label.html4
-rw-r--r--tests/wpt/web-platform-tests/encoding/api-replacement-encodings.html8
-rw-r--r--tests/wpt/web-platform-tests/encoding/textdecoder-labels.html35
-rw-r--r--tests/wpt/web-platform-tests/encoding/textencoder-constructor-non-utf.html2
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-09.html60
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-default.html5
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/cols-zero.html5
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-default.html5
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/rows-zero.html5
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/bindings/the-textarea-element-0/textarea-ref.html4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/relevant-mutations.html3
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.js15
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist (renamed from tests/wpt/web-platform-tests/tools/lint/lint.whitelist)0
-rw-r--r--tests/wpt/web-platform-tests/resources/idlharness.js185
-rw-r--r--tests/wpt/web-platform-tests/resources/testharness.js23
-rw-r--r--tests/wpt/web-platform-tests/tools/lint/lint.py2
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces.idl1
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect.html2
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);