From 950cd1ba873d14270f17880957f61dccc71f213e Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 26 Apr 2016 15:00:48 +0200 Subject: [PATCH] Update web-platform-tests to revision b94b41945d3c7c9b4f3346cf8654cc5ca7ae567c --- ...truction.DOMCharacterDataModified.html.ini | 1 - .../tests/approved/domnodeinserted.html.ini | 1 - ...truction.DOMCharacterDataModified.html.ini | 1 - .../converted/domnodeinserted.html.ini | 1 - tests/wpt/metadata/MANIFEST.json | 92 +++++++++---------- .../dom/events/ProgressEvent.html.ini | 1 + tests/wpt/metadata/dom/interfaces.html.ini | 1 + .../dom/nodes/Document-createEvent.html.ini | 1 + tests/wpt/metadata/mozilla-sync | 2 +- .../metadata/url/a-element-xhtml.xhtml.ini | 3 + tests/wpt/metadata/url/a-element.html.ini | 3 + .../wpt/metadata/url/url-constructor.html.ini | 1 + .../Worker_dispatchEvent_ErrorEvent.htm.ini | 5 + .../dom/events/ProgressEvent.html | 8 +- .../performance-timeline/idlharness.html | 45 +++++++-- .../shadow-dom/leaktests/html-collection.html | 72 +++++++++++++++ .../streams/byte-length-queuing-strategy.js | 2 +- .../streams/count-queuing-strategy.js | 2 +- .../readable-streams/bad-strategies.js | 33 ++++--- .../bad-underlying-sources.js | 18 ++-- .../streams/readable-streams/cancel.js | 1 - .../streams/readable-streams/general.js | 70 +++++++++----- .../readable-stream-reader.js | 2 +- .../streams/resources/rs-test-templates.js | 10 ++ .../web-platform-tests/url/urltestdata.json | 16 ++++ .../Worker_dispatchEvent_ErrorEvent.htm | 6 +- 26 files changed, 275 insertions(+), 123 deletions(-) create mode 100644 tests/wpt/metadata/workers/Worker_dispatchEvent_ErrorEvent.htm.ini create mode 100644 tests/wpt/web-platform-tests/shadow-dom/leaktests/html-collection.html diff --git a/tests/wpt/metadata/DOMEvents/tests/approved/ProcessingInstruction.DOMCharacterDataModified.html.ini b/tests/wpt/metadata/DOMEvents/tests/approved/ProcessingInstruction.DOMCharacterDataModified.html.ini index 8c0b459876c..fb1408fdb5a 100644 --- a/tests/wpt/metadata/DOMEvents/tests/approved/ProcessingInstruction.DOMCharacterDataModified.html.ini +++ b/tests/wpt/metadata/DOMEvents/tests/approved/ProcessingInstruction.DOMCharacterDataModified.html.ini @@ -1,4 +1,3 @@ [ProcessingInstruction.DOMCharacterDataModified.html] type: testharness disabled: mutation events - diff --git a/tests/wpt/metadata/DOMEvents/tests/approved/domnodeinserted.html.ini b/tests/wpt/metadata/DOMEvents/tests/approved/domnodeinserted.html.ini index 9c524457860..df8a28ab6c5 100644 --- a/tests/wpt/metadata/DOMEvents/tests/approved/domnodeinserted.html.ini +++ b/tests/wpt/metadata/DOMEvents/tests/approved/domnodeinserted.html.ini @@ -1,4 +1,3 @@ [domnodeinserted.html] type: testharness disabled: mutation events - diff --git a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/ProcessingInstruction.DOMCharacterDataModified.html.ini b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/ProcessingInstruction.DOMCharacterDataModified.html.ini index 8c0b459876c..fb1408fdb5a 100644 --- a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/ProcessingInstruction.DOMCharacterDataModified.html.ini +++ b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/ProcessingInstruction.DOMCharacterDataModified.html.ini @@ -1,4 +1,3 @@ [ProcessingInstruction.DOMCharacterDataModified.html] type: testharness disabled: mutation events - diff --git a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/domnodeinserted.html.ini b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/domnodeinserted.html.ini index 9c524457860..df8a28ab6c5 100644 --- a/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/domnodeinserted.html.ini +++ b/tests/wpt/metadata/DOMEvents/tests/submissions/Microsoft/converted/domnodeinserted.html.ini @@ -1,4 +1,3 @@ [domnodeinserted.html] type: testharness disabled: mutation events - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 58ce846609d..7fc59bc1f1f 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -5163,6 +5163,16 @@ ], "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-fallback.html" }, + { + "path": "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html", + "references": [ + [ + "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html", + "==" + ] + ], + "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" + }, { "path": "html/rendering/replaced-elements/images/space.html", "references": [ @@ -14537,6 +14547,10 @@ "path": "dom/nodes/Element-getElementsByTagNameNS.html", "url": "/dom/nodes/Element-getElementsByTagNameNS.html" }, + { + "path": "dom/nodes/Element-hasAttributes.html", + "url": "/dom/nodes/Element-hasAttributes.html" + }, { "path": "dom/nodes/Element-insertAdjacentElement.html", "url": "/dom/nodes/Element-insertAdjacentElement.html" @@ -14681,6 +14695,10 @@ "path": "dom/nodes/Node-isEqualNode.html", "url": "/dom/nodes/Node-isEqualNode.html" }, + { + "path": "dom/nodes/Node-isSameNode.html", + "url": "/dom/nodes/Node-isSameNode.html" + }, { "path": "dom/nodes/Node-lookupNamespaceURI.html", "url": "/dom/nodes/Node-lookupNamespaceURI.html" @@ -28277,6 +28295,10 @@ "path": "shadow-dom/ShadowRoot-interface.html", "url": "/shadow-dom/ShadowRoot-interface.html" }, + { + "path": "shadow-dom/leaktests/html-collection.html", + "url": "/shadow-dom/leaktests/html-collection.html" + }, { "path": "shadow-dom/styles/shadow-cascade-order.html", "url": "/shadow-dom/styles/shadow-cascade-order.html" @@ -33317,6 +33339,10 @@ "path": "workers/constructors/Worker/unresolvable-url.html", "url": "/workers/constructors/Worker/unresolvable-url.html" }, + { + "path": "workers/constructors/Worker/use-base-url.html", + "url": "/workers/constructors/Worker/use-base-url.html" + }, { "path": "workers/interfaces.worker.js", "url": "/workers/interfaces.worker" @@ -35214,56 +35240,8 @@ "local_changes": { "deleted": [], "deleted_reftests": {}, - "items": { - "reftest": { - "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html": [ - { - "path": "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html", - "references": [ - [ - "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html", - "==" - ] - ], - "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" - } - ] - }, - "testharness": { - "dom/nodes/Element-hasAttributes.html": [ - { - "path": "dom/nodes/Element-hasAttributes.html", - "url": "/dom/nodes/Element-hasAttributes.html" - } - ], - "dom/nodes/Node-isSameNode.html": [ - { - "path": "dom/nodes/Node-isSameNode.html", - "url": "/dom/nodes/Node-isSameNode.html" - } - ], - "workers/constructors/Worker/use-base-url.html": [ - { - "path": "workers/constructors/Worker/use-base-url.html", - "url": "/workers/constructors/Worker/use-base-url.html" - } - ] - } - }, - "reftest_nodes": { - "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html": [ - { - "path": "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html", - "references": [ - [ - "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html", - "==" - ] - ], - "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" - } - ] - } + "items": {}, + "reftest_nodes": {} }, "reftest_nodes": { "2dcontext/building-paths/canvas_complexshapes_arcto_001.htm": [ @@ -38050,6 +38028,18 @@ "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-fallback.html" } ], + "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html": [ + { + "path": "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html", + "references": [ + [ + "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale_ref.html", + "==" + ] + ], + "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" + } + ], "html/rendering/replaced-elements/images/space.html": [ { "path": "html/rendering/replaced-elements/images/space.html", @@ -41567,7 +41557,7 @@ } ] }, - "rev": "0a518aaff73532a26e175789f7e75fa99593ac64", + "rev": "b94b41945d3c7c9b4f3346cf8654cc5ca7ae567c", "url_base": "/", "version": 3 } diff --git a/tests/wpt/metadata/dom/events/ProgressEvent.html.ini b/tests/wpt/metadata/dom/events/ProgressEvent.html.ini index a9c5bc758d6..333025897f6 100644 --- a/tests/wpt/metadata/dom/events/ProgressEvent.html.ini +++ b/tests/wpt/metadata/dom/events/ProgressEvent.html.ini @@ -3,3 +3,4 @@ bug: https://github.com/servo/servo/issues/10740 [document.createEvent() should not work with ProgressEvent.] expected: FAIL + diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index 2569ebac143..7fa6c28a6c7 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -263,3 +263,4 @@ [Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type (15)] expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Document-createEvent.html.ini b/tests/wpt/metadata/dom/nodes/Document-createEvent.html.ini index b44b16fa3a2..cf50ce94f65 100644 --- a/tests/wpt/metadata/dom/nodes/Document-createEvent.html.ini +++ b/tests/wpt/metadata/dom/nodes/Document-createEvent.html.ini @@ -360,3 +360,4 @@ [createEvent('WHEELEVENT') should be initialized correctly.] expected: FAIL + diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index fe5dedf7818..afe467ba081 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1 +1 @@ -9c172f49d08fe9019b0ba193ea4d75c6ddb95cda \ No newline at end of file +cb42be98279348981951933aeee4b1bfcf1517d1 \ No newline at end of file diff --git a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini index 1733d692fa9..1de208b4b44 100644 --- a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini +++ b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini @@ -798,3 +798,6 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element.html.ini b/tests/wpt/metadata/url/a-element.html.ini index f4a3706ae28..d52cb01c63a 100644 --- a/tests/wpt/metadata/url/a-element.html.ini +++ b/tests/wpt/metadata/url/a-element.html.ini @@ -798,3 +798,6 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-constructor.html.ini b/tests/wpt/metadata/url/url-constructor.html.ini index 06ca6a3b33f..dba2b15a3a2 100644 --- a/tests/wpt/metadata/url/url-constructor.html.ini +++ b/tests/wpt/metadata/url/url-constructor.html.ini @@ -2,3 +2,4 @@ type: testharness [Parsing: against ] expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker_dispatchEvent_ErrorEvent.htm.ini b/tests/wpt/metadata/workers/Worker_dispatchEvent_ErrorEvent.htm.ini new file mode 100644 index 00000000000..e3f456034a3 --- /dev/null +++ b/tests/wpt/metadata/workers/Worker_dispatchEvent_ErrorEvent.htm.ini @@ -0,0 +1,5 @@ +[Worker_dispatchEvent_ErrorEvent.htm] + type: testharness + [document.createEvent('ErrorEvent')] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/dom/events/ProgressEvent.html b/tests/wpt/web-platform-tests/dom/events/ProgressEvent.html index 2b2f7bc51b7..aa947e3f2ce 100644 --- a/tests/wpt/web-platform-tests/dom/events/ProgressEvent.html +++ b/tests/wpt/web-platform-tests/dom/events/ProgressEvent.html @@ -18,8 +18,8 @@ test(function() { assert_true("initEvent" in ev) }, "Default event values.") test(function() { - assert_throws("NotSupportedError", function() { - document.createEvent("ProgressEvent") - }) -}, "document.createEvent() should not work with ProgressEvent.") + var e = document.createEvent("ProgressEvent"); + var eProto = Object.getPrototypeOf(e); + assert_equals(eProto, ProgressEvent.prototype); +}, "document.createEvent() should work with ProgressEvent."); diff --git a/tests/wpt/web-platform-tests/performance-timeline/idlharness.html b/tests/wpt/web-platform-tests/performance-timeline/idlharness.html index db93932025f..0500b3eee5f 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/idlharness.html +++ b/tests/wpt/web-platform-tests/performance-timeline/idlharness.html @@ -22,20 +22,51 @@ interface Performance {
+[Exposed=(Window,Worker)]
 interface PerformanceEntry {
-  readonly attribute DOMString name;
-  readonly attribute DOMString entryType;
-  readonly attribute DOMHighResTimeStamp startTime;
-  readonly attribute DOMHighResTimeStamp duration;
+    readonly attribute DOMString           name;
+    readonly attribute DOMString           entryType;
+    readonly attribute DOMHighResTimeStamp startTime;
+    readonly attribute DOMHighResTimeStamp duration;
+    serializer = {attribute};
+};
+
+dictionary PerformanceEntryFilterOptions {
+    DOMString name;
+    DOMString entryType;
+    DOMString initiatorType;
 };
 
 partial interface Performance {
-  PerformanceEntryList getEntries();
-  PerformanceEntryList getEntriesByType(DOMString entryType);
-  PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType);
+    PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter);
+    PerformanceEntryList getEntriesByType(DOMString type);
+    PerformanceEntryList getEntriesByName(DOMString name,
+                                          optional DOMString type);
 };
 
 typedef sequence <PerformanceEntry> PerformanceEntryList;
+
+dictionary PerformanceObserverInit {
+    required sequence<DOMString> entryTypes;
+};
+
+[Exposed=(Window,Worker)]
+interface PerformanceObserverEntryList {
+    PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter);
+    PerformanceEntryList getEntriesByType(DOMString type);
+    PerformanceEntryList getEntriesByName(DOMString name,
+                                          optional DOMString type);
+};
+
+callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries,
+                                             PerformanceObserver observer);
+
+[Constructor(PerformanceObserverCallback callback),
+ Exposed=(Window,Worker)]
+interface PerformanceObserver {
+    void observe(PerformanceObserverInit options);
+    void disconnect();
+};
 
+ + + + +
+
+ + + diff --git a/tests/wpt/web-platform-tests/streams/byte-length-queuing-strategy.js b/tests/wpt/web-platform-tests/streams/byte-length-queuing-strategy.js index d53b12bcb36..54407af9913 100644 --- a/tests/wpt/web-platform-tests/streams/byte-length-queuing-strategy.js +++ b/tests/wpt/web-platform-tests/streams/byte-length-queuing-strategy.js @@ -12,7 +12,7 @@ test(() => { test(() => { - for (let highWaterMark of [-Infinity, NaN, 'foo', {}, () => {}]) { + for (const highWaterMark of [-Infinity, NaN, 'foo', {}, () => {}]) { const strategy = new ByteLengthQueuingStrategy({ highWaterMark }); assert_equals(strategy.highWaterMark, highWaterMark, `${highWaterMark} gets set correctly`); } diff --git a/tests/wpt/web-platform-tests/streams/count-queuing-strategy.js b/tests/wpt/web-platform-tests/streams/count-queuing-strategy.js index 02ca4c45843..5ae0063f57d 100644 --- a/tests/wpt/web-platform-tests/streams/count-queuing-strategy.js +++ b/tests/wpt/web-platform-tests/streams/count-queuing-strategy.js @@ -12,7 +12,7 @@ test(() => { test(() => { - for (let highWaterMark of [-Infinity, NaN, 'foo', {}, () => {}]) { + for (const highWaterMark of [-Infinity, NaN, 'foo', {}, () => {}]) { const strategy = new CountQueuingStrategy({ highWaterMark }); assert_equals(strategy.highWaterMark, highWaterMark, `${highWaterMark} gets set correctly`); } diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/bad-strategies.js b/tests/wpt/web-platform-tests/streams/readable-streams/bad-strategies.js index 8fdc83c4910..0c053ab62bc 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/bad-strategies.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/bad-strategies.js @@ -19,9 +19,10 @@ test(() => { }, 'Readable stream: throwing strategy.size getter'); -test(() => { +promise_test(t => { - const theError = new Error('a unique string'); + const controllerError = { name: 'controller error' }; + const thrownError = { name: 'thrown error' }; let controller; const rs = new ReadableStream( @@ -32,22 +33,22 @@ test(() => { }, { size() { - controller.error(theError); - throw theError; + controller.error(controllerError); + throw thrownError; }, highWaterMark: 5 } ); - assert_throws(theError, () => { - controller.enqueue('a'); - }, 'enqueue should re-throw the error'); + assert_throws(thrownError, () => controller.enqueue('a'), 'enqueue should re-throw the error'); + + return promise_rejects(t, controllerError, rs.getReader().closed); }, 'Readable stream: strategy.size errors the stream and then throws'); -test(() => { +promise_test(t => { - const theError = new Error('a unique string'); + const theError = { name: 'my error' }; let controller; const rs = new ReadableStream( @@ -65,11 +66,9 @@ test(() => { } ); - try { - controller.enqueue('a'); - } catch (error) { - assert_equals(error.name, 'RangeError', 'enqueue should throw a RangeError'); - } + assert_throws(new RangeError(), () => controller.enqueue('a'), 'enqueue should throw a RangeError'); + + return promise_rejects(t, theError, rs.getReader().closed, 'closed should reject with the error'); }, 'Readable stream: strategy.size errors the stream and then returns Infinity'); @@ -115,7 +114,7 @@ test(() => { test(() => { - for (let highWaterMark of [-1, -Infinity]) { + for (const highWaterMark of [-1, -Infinity]) { assert_throws(new RangeError(), () => { new ReadableStream({}, { size() { @@ -126,7 +125,7 @@ test(() => { }, 'construction should throw a RangeError for ' + highWaterMark); } - for (let highWaterMark of [NaN, 'foo', {}]) { + for (const highWaterMark of [NaN, 'foo', {}]) { assert_throws(new TypeError(), () => { new ReadableStream({}, { size() { @@ -142,7 +141,7 @@ test(() => { promise_test(() => { const promises = []; - for (let size of [NaN, -Infinity, Infinity, -1]) { + for (const size of [NaN, -Infinity, Infinity, -1]) { let theError; const rs = new ReadableStream( { diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/bad-underlying-sources.js b/tests/wpt/web-platform-tests/streams/readable-streams/bad-underlying-sources.js index f2fd0fdc929..b95b54bc7fc 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/bad-underlying-sources.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/bad-underlying-sources.js @@ -153,11 +153,11 @@ promise_test(() => { }); rs.cancel(); - controller.enqueue('a'); // Calling enqueue after canceling should not throw anything. + assert_throws(new TypeError, () => controller.enqueue('a'), 'Calling enqueue after canceling should throw'); return rs.getReader().closed; -}, 'Underlying source: calling enqueue on an empty canceled stream should not throw'); +}, 'Underlying source: calling enqueue on an empty canceled stream should throw'); promise_test(() => { @@ -171,11 +171,11 @@ promise_test(() => { }); rs.cancel(); - controller.enqueue('c'); // Calling enqueue after canceling should not throw anything. + assert_throws(new TypeError, () => controller.enqueue('c'), 'Calling enqueue after canceling should throw'); return rs.getReader().closed; -}, 'Underlying source: calling enqueue on a non-empty canceled stream should not throw'); +}, 'Underlying source: calling enqueue on a non-empty canceled stream should throw'); promise_test(() => { @@ -194,7 +194,7 @@ promise_test(t => { const closed = new ReadableStream({ start(c) { c.error(theError); - assert_throws(theError, () => c.enqueue('a'), 'call to enqueue should throw the error'); + assert_throws(new TypeError(), () => c.enqueue('a'), 'call to enqueue should throw the error'); } }).getReader().closed; @@ -251,13 +251,13 @@ promise_test(() => { }); rs.cancel(); - controller.close(); // Calling close after canceling should not throw anything. + assert_throws(new TypeError(), () => controller.close(), 'Calling close after canceling should throw'); return rs.getReader().closed.then(() => { assert_true(startCalled); }); -}, 'Underlying source: calling close on an empty canceled stream should not throw'); +}, 'Underlying source: calling close on an empty canceled stream should throw'); promise_test(() => { @@ -272,13 +272,13 @@ promise_test(() => { }); rs.cancel(); - controller.close(); // Calling close after canceling should not throw anything. + assert_throws(new TypeError(), () => controller.close(), 'Calling close after canceling should throw'); return rs.getReader().closed.then(() => { assert_true(startCalled); }); -}, 'Underlying source: calling close on a non-empty canceled stream should not throw'); +}, 'Underlying source: calling close on a non-empty canceled stream should throw'); promise_test(() => { diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/cancel.js b/tests/wpt/web-platform-tests/streams/readable-streams/cancel.js index f5014c2c94d..3857c8e9341 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/cancel.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/cancel.js @@ -24,7 +24,6 @@ promise_test(() => { cancel() { randomSource.readStop(); - randomSource.onend(); return new Promise(resolve => { setTimeout(() => { diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/general.js b/tests/wpt/web-platform-tests/streams/readable-streams/general.js index fe81bd54d3f..30eb7ab8160 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/general.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/general.js @@ -10,6 +10,7 @@ test(() => { new ReadableStream(); // ReadableStream constructed with no parameters new ReadableStream({ }); // ReadableStream constructed with an empty object as parameter + new ReadableStream({ type: undefined }); // ReadableStream constructed with undefined type new ReadableStream(undefined); // ReadableStream constructed with undefined as parameter let x; @@ -23,6 +24,17 @@ test(() => { }, 'ReadableStream can\'t be constructed with garbage'); +test(() => { + + assert_throws(new RangeError(), () => new ReadableStream({ type: null }), + 'constructor should throw when the type is null'); + assert_throws(new RangeError(), () => new ReadableStream({ type: '' }), + 'constructor should throw when the type is empty string'); + assert_throws(new RangeError(), () => new ReadableStream({ type: 'asdf' }), + 'constructor should throw when the type is asdf'); + +}, 'ReadableStream can\'t be constructed with an invalid type'); + test(() => { const methods = ['cancel', 'constructor', 'getReader', 'pipeThrough', 'pipeTo', 'tee']; @@ -33,7 +45,7 @@ test(() => { assert_array_equals(Object.getOwnPropertyNames(proto).sort(), properties, 'should have all the correct methods'); - for (let m of methods) { + for (const m of methods) { const propDesc = Object.getOwnPropertyDescriptor(proto, m); assert_false(propDesc.enumerable, 'method should be non-enumerable'); assert_true(propDesc.configurable, 'method should be configurable'); @@ -92,7 +104,7 @@ test(() => { assert_array_equals(Object.getOwnPropertyNames(proto).sort(), properties, 'the controller should have the right properties'); - for (let m of methods) { + for (const m of methods) { const propDesc = Object.getOwnPropertyDescriptor(proto, m); assert_equals(typeof controller[m], 'function', `should have a ${m} method`); assert_false(propDesc.enumerable, m + ' should be non-enumerable'); @@ -108,7 +120,7 @@ test(() => { assert_true(desiredSizePropDesc.configurable, 'desiredSize should be configurable'); assert_equals(controller.close.length, 0, 'close should have no parameters'); - assert_equals(controller.constructor.length, 1, 'constructor should have 1 parameter'); + assert_equals(controller.constructor.length, 4, 'constructor should have 4 parameter'); assert_equals(controller.enqueue.length, 1, 'enqueue should have 1 parameter'); assert_equals(controller.error.length, 1, 'error should have 1 parameter'); @@ -205,7 +217,7 @@ promise_test(() => { const rs = new ReadableStream({ start(c) { - for (let o of objects) { + for (const o of objects) { c.enqueue(o); } c.close(); @@ -608,6 +620,36 @@ promise_test(() => { }, 'ReadableStream pull should be able to close a stream.'); +promise_test(t => { + + const controllerError = { name: 'controller error' }; + + const rs = new ReadableStream({ + pull(c) { + c.error(controllerError); + } + }); + + return promise_rejects(t, controllerError, rs.getReader().closed); + +}, 'ReadableStream pull should be able to error a stream.'); + +promise_test(t => { + + const controllerError = { name: 'controller error' }; + const thrownError = { name: 'thrown error' }; + + const rs = new ReadableStream({ + pull(c) { + c.error(controllerError); + throw thrownError; + } + }); + + return promise_rejects(t, controllerError, rs.getReader().closed); + +}, 'ReadableStream pull should be able to error a stream and throw.'); + test(() => { let startCalled = false; @@ -643,24 +685,6 @@ test(() => { }, 'ReadableStream: enqueue should throw when the stream is closed'); -test(() => { - - let startCalled = false; - const expectedError = new Error('i am sad'); - - new ReadableStream({ - start(c) { - c.error(expectedError); - - assert_throws(expectedError, () => c.enqueue('a'), 'enqueue after error should throw that error'); - startCalled = true; - } - }); - - assert_true(startCalled); - -}, 'ReadableStream: enqueue should throw the stored error when the stream is errored'); - promise_test(() => { let startCalled = 0; @@ -799,7 +823,7 @@ promise_test(t => { return readableStreamToArray(rs).then(chunks => { assert_equals(chunks.length, 8, '8 chunks should be read'); - for (let chunk of chunks) { + for (const chunk of chunks) { assert_equals(chunk.length, 128, 'chunk should have 128 bytes'); } }); diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/readable-stream-reader.js b/tests/wpt/web-platform-tests/streams/readable-streams/readable-stream-reader.js index d7d81cf2d34..1d5bc13004f 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/readable-stream-reader.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/readable-stream-reader.js @@ -32,7 +32,7 @@ test(() => { assert_array_equals(Object.getOwnPropertyNames(proto).sort(), properties); - for (let m of methods) { + for (const m of methods) { const propDesc = Object.getOwnPropertyDescriptor(proto, m); assert_equals(propDesc.enumerable, false, 'method should be non-enumerable'); assert_equals(propDesc.configurable, true, 'method should be configurable'); diff --git a/tests/wpt/web-platform-tests/streams/resources/rs-test-templates.js b/tests/wpt/web-platform-tests/streams/resources/rs-test-templates.js index 852b565d904..e36463ba7cf 100644 --- a/tests/wpt/web-platform-tests/streams/resources/rs-test-templates.js +++ b/tests/wpt/web-platform-tests/streams/resources/rs-test-templates.js @@ -19,6 +19,16 @@ self.templatedRSEmpty = (label, factory) => { assert_equals(typeof rs.tee, 'function', 'has a tee method'); }, 'instances have the correct methods and properties'); + + test(() => { + const rs = factory(); + + assert_throws(new RangeError(), () => rs.getReader({ mode: '' }), 'empty string mode should throw'); + assert_throws(new RangeError(), () => rs.getReader({ mode: null }), 'null mode should throw'); + assert_throws(new RangeError(), () => rs.getReader({ mode: 'asdf' }), 'asdf mode should throw'); + assert_throws(new TypeError(), () => rs.getReader(null), 'null should throw'); + + }, 'calling getReader with invalid arguments should throw appropriate errors'); }; self.templatedRSClosed = (label, factory) => { diff --git a/tests/wpt/web-platform-tests/url/urltestdata.json b/tests/wpt/web-platform-tests/url/urltestdata.json index 322f69ec893..ee5416ecf23 100644 --- a/tests/wpt/web-platform-tests/url/urltestdata.json +++ b/tests/wpt/web-platform-tests/url/urltestdata.json @@ -4163,6 +4163,22 @@ "search": "", "hash": "" }, + "# unknown scheme with path looking like a password", + { + "input": "sc::a@example.net", + "base": "about:blank", + "href": "sc::a@example.net", + "origin": "null", + "protocol": "sc:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": ":a@example.net", + "search": "", + "hash": "" + }, "# tests from jsdom/whatwg-url designed for code coverage", { "input": "http://127.0.0.1:10100/relative_import.html", diff --git a/tests/wpt/web-platform-tests/workers/Worker_dispatchEvent_ErrorEvent.htm b/tests/wpt/web-platform-tests/workers/Worker_dispatchEvent_ErrorEvent.htm index 58a31f04252..aea7e025c16 100644 --- a/tests/wpt/web-platform-tests/workers/Worker_dispatchEvent_ErrorEvent.htm +++ b/tests/wpt/web-platform-tests/workers/Worker_dispatchEvent_ErrorEvent.htm @@ -25,9 +25,9 @@ async_test(function(t) { }); test(function() { - assert_throws("NotSupportedError", function() { - document.createEvent("ErrorEvent"); - }, "should not be supported"); + var e = document.createEvent("ErrorEvent"); + var eProto = Object.getPrototypeOf(e); + assert_equals(eProto, ErrorEvent.prototype); }, "document.createEvent('ErrorEvent')"); test(function() {