diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2019-01-30 20:36:46 -0500 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2019-01-30 22:39:55 -0500 |
commit | b56a3b8e69711d764d5ca0fe01fe6451ef9e4f74 (patch) | |
tree | b4c3dcb43d70bb7aaec15c4f1acc308862e82941 | |
parent | 65370f17c98225f7e71c72ea2e0cb2d0a81487f3 (diff) | |
download | servo-b56a3b8e69711d764d5ca0fe01fe6451ef9e4f74.tar.gz servo-b56a3b8e69711d764d5ca0fe01fe6451ef9e4f74.zip |
Update web-platform-tests to revision ac12b3e9488edb436f063b11213e954ae62d5a5e
111 files changed, 3122 insertions, 68 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 3b874fc1748..6a3af4e2ece 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -14,6 +14,9 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL + [Revoke blob URL after calling fetch, fetch should succeed] + expected: FAIL + [url-with-fetch.any.html] [Untitled] @@ -34,6 +37,3 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index e340f21957d..d4145ba7571 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -121149,6 +121149,54 @@ {} ] ], + "css/css-grid/abspos/descendant-static-position-001.html": [ + [ + "/css/css-grid/abspos/descendant-static-position-001.html", + [ + [ + "/css/css-grid/abspos/descendant-static-position-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/abspos/descendant-static-position-002.html": [ + [ + "/css/css-grid/abspos/descendant-static-position-002.html", + [ + [ + "/css/css-grid/abspos/descendant-static-position-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/abspos/descendant-static-position-003.html": [ + [ + "/css/css-grid/abspos/descendant-static-position-003.html", + [ + [ + "/css/css-grid/abspos/descendant-static-position-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid/abspos/descendant-static-position-004.html": [ + [ + "/css/css-grid/abspos/descendant-static-position-004.html", + [ + [ + "/css/css-grid/abspos/descendant-static-position-004-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-grid/abspos/grid-item-absolute-positioning-dynamic-001.html": [ [ "/css/css-grid/abspos/grid-item-absolute-positioning-dynamic-001.html", @@ -137233,6 +137281,42 @@ {} ] ], + "css/css-tables/subpixel-table-cell-width-001.html": [ + [ + "/css/css-tables/subpixel-table-cell-width-001.html", + [ + [ + "/css/css-tables/subpixel-table-cell-width-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-tables/subpixel-table-cell-width-002.html": [ + [ + "/css/css-tables/subpixel-table-cell-width-002.html", + [ + [ + "/css/css-tables/subpixel-table-cell-width-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-tables/subpixel-table-width-001.html": [ + [ + "/css/css-tables/subpixel-table-width-001.html", + [ + [ + "/css/css-tables/subpixel-table-width-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-tables/table-has-box-sizing-border-box-001.html": [ [ "/css/css-tables/table-has-box-sizing-border-box-001.html", @@ -265249,6 +265333,26 @@ {} ] ], + "css/css-grid/abspos/descendant-static-position-001-ref.html": [ + [ + {} + ] + ], + "css/css-grid/abspos/descendant-static-position-002-ref.html": [ + [ + {} + ] + ], + "css/css-grid/abspos/descendant-static-position-003-ref.html": [ + [ + {} + ] + ], + "css/css-grid/abspos/descendant-static-position-004-ref.html": [ + [ + {} + ] + ], "css/css-grid/abspos/grid-paint-positioned-children-001-ref.html": [ [ {} @@ -270214,6 +270318,16 @@ {} ] ], + "css/css-tables/subpixel-table-cell-width-001-ref.html": [ + [ + {} + ] + ], + "css/css-tables/subpixel-table-width-001-ref.html": [ + [ + {} + ] + ], "css/css-tables/support/base.css": [ [ {} @@ -286564,6 +286678,46 @@ {} ] ], + "element-timing/resources/circle.svg": [ + [ + {} + ] + ], + "element-timing/resources/element-timing-helpers.js": [ + [ + {} + ] + ], + "element-timing/resources/iframe-with-square.html": [ + [ + {} + ] + ], + "element-timing/resources/progressive-image.py": [ + [ + {} + ] + ], + "element-timing/resources/slow-image.py": [ + [ + {} + ] + ], + "element-timing/resources/square100.png": [ + [ + {} + ] + ], + "element-timing/resources/square20.jpg": [ + [ + {} + ] + ], + "element-timing/resources/square20.png": [ + [ + {} + ] + ], "encoding/META.yml": [ [ {} @@ -300689,6 +300843,26 @@ {} ] ], + "images/fyi-logo/fyi_color.svg": [ + [ + {} + ] + ], + "images/fyi-logo/fyi_color_bg.svg": [ + [ + {} + ] + ], + "images/fyi-logo/fyi_monochromatic.svg": [ + [ + {} + ] + ], + "images/fyi-logo/fyi_monochromatic_bg.svg": [ + [ + {} + ] + ], "images/ggrr-256x256.png": [ [ {} @@ -326139,11 +326313,41 @@ {} ] ], + "workers/support/SharedWorker-common.js": [ + [ + {} + ] + ], + "workers/support/SharedWorker-create-common.js": [ + [ + {} + ] + ], + "workers/support/SharedWorker-script-error.js": [ + [ + {} + ] + ], "workers/support/Timer.js": [ [ {} ] ], + "workers/support/Worker-common.js": [ + [ + {} + ] + ], + "workers/support/Worker-create-common.js": [ + [ + {} + ] + ], + "workers/support/Worker-termination-with-port-messages.js": [ + [ + {} + ] + ], "workers/support/WorkerBasic.js": [ [ {} @@ -326244,6 +326448,11 @@ {} ] ], + "workers/support/throw-on-message-Worker.js": [ + [ + {} + ] + ], "worklets/META.yml": [ [ {} @@ -355470,6 +355679,24 @@ {} ] ], + "custom-elements/reactions/HTMLCanvasElement.html": [ + [ + "/custom-elements/reactions/HTMLCanvasElement.html", + {} + ] + ], + "custom-elements/reactions/HTMLDataElement.html": [ + [ + "/custom-elements/reactions/HTMLDataElement.html", + {} + ] + ], + "custom-elements/reactions/HTMLDetailsElement.html": [ + [ + "/custom-elements/reactions/HTMLDetailsElement.html", + {} + ] + ], "custom-elements/reactions/HTMLElement.html": [ [ "/custom-elements/reactions/HTMLElement.html", @@ -355482,6 +355709,24 @@ {} ] ], + "custom-elements/reactions/HTMLMapElement.html": [ + [ + "/custom-elements/reactions/HTMLMapElement.html", + {} + ] + ], + "custom-elements/reactions/HTMLModElement.html": [ + [ + "/custom-elements/reactions/HTMLModElement.html", + {} + ] + ], + "custom-elements/reactions/HTMLOListElement.html": [ + [ + "/custom-elements/reactions/HTMLOListElement.html", + {} + ] + ], "custom-elements/reactions/HTMLOptionElement.html": [ [ "/custom-elements/reactions/HTMLOptionElement.html", @@ -355500,12 +355745,24 @@ {} ] ], + "custom-elements/reactions/HTMLQuoteElement.html": [ + [ + "/custom-elements/reactions/HTMLQuoteElement.html", + {} + ] + ], "custom-elements/reactions/HTMLSelectElement.html": [ [ "/custom-elements/reactions/HTMLSelectElement.html", {} ] ], + "custom-elements/reactions/HTMLSlotElement.html": [ + [ + "/custom-elements/reactions/HTMLSlotElement.html", + {} + ] + ], "custom-elements/reactions/HTMLTableElement.html": [ [ "/custom-elements/reactions/HTMLTableElement.html", @@ -355524,6 +355781,12 @@ {} ] ], + "custom-elements/reactions/HTMLTimeElement.html": [ + [ + "/custom-elements/reactions/HTMLTimeElement.html", + {} + ] + ], "custom-elements/reactions/HTMLTitleElement.html": [ [ "/custom-elements/reactions/HTMLTitleElement.html", @@ -358412,6 +358675,66 @@ } ] ], + "element-timing/buffer-before-onload.html": [ + [ + "/element-timing/buffer-before-onload.html", + {} + ] + ], + "element-timing/cross-origin-element.html": [ + [ + "/element-timing/cross-origin-element.html", + {} + ] + ], + "element-timing/cross-origin-iframe-element.html": [ + [ + "/element-timing/cross-origin-iframe-element.html", + {} + ] + ], + "element-timing/image-not-fully-visible.html": [ + [ + "/element-timing/image-not-fully-visible.html", + {} + ] + ], + "element-timing/observe-child-element.html": [ + [ + "/element-timing/observe-child-element.html", + {} + ] + ], + "element-timing/observe-elementtiming.html": [ + [ + "/element-timing/observe-elementtiming.html", + {} + ] + ], + "element-timing/observe-large-image.html": [ + [ + "/element-timing/observe-large-image.html", + {} + ] + ], + "element-timing/observe-multiple-images.html": [ + [ + "/element-timing/observe-multiple-images.html", + {} + ] + ], + "element-timing/progressively-loaded-image.html": [ + [ + "/element-timing/progressively-loaded-image.html", + {} + ] + ], + "element-timing/supported-element-type.html": [ + [ + "/element-timing/supported-element-type.html", + {} + ] + ], "encoding/api-basics.any.js": [ [ "/encoding/api-basics.any.html", @@ -369372,6 +369695,12 @@ {} ] ], + "fetch/sec-metadata/iframe.tentative.sub.html": [ + [ + "/fetch/sec-metadata/iframe.tentative.sub.html", + {} + ] + ], "fetch/sec-metadata/img.tentative.https.sub.html": [ [ "/fetch/sec-metadata/img.tentative.https.sub.html", @@ -369426,6 +369755,12 @@ {} ] ], + "fetch/sec-metadata/script.tentative.sub.html": [ + [ + "/fetch/sec-metadata/script.tentative.sub.html", + {} + ] + ], "fetch/sec-metadata/serviceworker.tentative.https.sub.html": [ [ "/fetch/sec-metadata/serviceworker.tentative.https.sub.html", @@ -423560,6 +423895,48 @@ {} ] ], + "workers/SharedWorker-MessageEvent-source.any.js": [ + [ + "/workers/SharedWorker-MessageEvent-source.any.sharedworker.html", + {} + ] + ], + "workers/SharedWorker-constructor.html": [ + [ + "/workers/SharedWorker-constructor.html", + {} + ] + ], + "workers/SharedWorker-exception-propagation.html": [ + [ + "/workers/SharedWorker-exception-propagation.html", + {} + ] + ], + "workers/SharedWorker-exception.html": [ + [ + "/workers/SharedWorker-exception.html", + {} + ] + ], + "workers/SharedWorker-replace-EventHandler.any.js": [ + [ + "/workers/SharedWorker-replace-EventHandler.any.sharedworker.html", + {} + ] + ], + "workers/SharedWorker-script-error.html": [ + [ + "/workers/SharedWorker-script-error.html", + {} + ] + ], + "workers/SharedWorker-simple.html": [ + [ + "/workers/SharedWorker-simple.html", + {} + ] + ], "workers/SharedWorkerPerformanceNow.html": [ [ "/workers/SharedWorkerPerformanceNow.html", @@ -423578,6 +423955,90 @@ {} ] ], + "workers/Worker-base64.any.js": [ + [ + "/workers/Worker-base64.any.serviceworker.html", + {} + ], + [ + "/workers/Worker-base64.any.sharedworker.html", + {} + ], + [ + "/workers/Worker-base64.any.worker.html", + {} + ] + ], + "workers/Worker-call.worker.js": [ + [ + "/workers/Worker-call.worker.html", + {} + ] + ], + "workers/Worker-constructor-proto.any.js": [ + [ + "/workers/Worker-constructor-proto.any.serviceworker.html", + {} + ], + [ + "/workers/Worker-constructor-proto.any.sharedworker.html", + {} + ], + [ + "/workers/Worker-constructor-proto.any.worker.html", + {} + ] + ], + "workers/Worker-location.any.js": [ + [ + "/workers/Worker-location.any.sharedworker.html", + {} + ], + [ + "/workers/Worker-location.any.worker.html", + {} + ] + ], + "workers/Worker-replace-global-constructor.any.js": [ + [ + "/workers/Worker-replace-global-constructor.any.serviceworker.html", + {} + ], + [ + "/workers/Worker-replace-global-constructor.any.sharedworker.html", + {} + ], + [ + "/workers/Worker-replace-global-constructor.any.worker.html", + {} + ] + ], + "workers/Worker-replace-self.any.js": [ + [ + "/workers/Worker-replace-self.any.serviceworker.html", + {} + ], + [ + "/workers/Worker-replace-self.any.sharedworker.html", + {} + ], + [ + "/workers/Worker-replace-self.any.worker.html", + {} + ] + ], + "workers/Worker-simultaneous-errors.html": [ + [ + "/workers/Worker-simultaneous-errors.html", + {} + ] + ], + "workers/Worker-termination-with-port-messages.html": [ + [ + "/workers/Worker-termination-with-port-messages.html", + {} + ] + ], "workers/WorkerGlobalScope_ErrorEvent_colno.htm": [ [ "/workers/WorkerGlobalScope_ErrorEvent_colno.htm", @@ -423734,6 +424195,20 @@ {} ] ], + "workers/WorkerNavigator.any.js": [ + [ + "/workers/WorkerNavigator.any.serviceworker.html", + {} + ], + [ + "/workers/WorkerNavigator.any.sharedworker.html", + {} + ], + [ + "/workers/WorkerNavigator.any.worker.html", + {} + ] + ], "workers/WorkerNavigator_appName.htm": [ [ "/workers/WorkerNavigator_appName.htm", @@ -447554,7 +448029,7 @@ }, "paths": { ".azure-pipelines.yml": [ - "acfb09963915de916d13fe8c903eadac473afaa8", + "41d5f560f08b106c6305649633b2c96e93aebc06", "support" ], ".codecov.yml": [ @@ -482922,7 +483397,7 @@ "reftest" ], "css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html": [ - "4b1baff8b956d706b2f90e67277ccf3a7c4d3458", + "b54f0e8bf2f1804cd18adf953ef451f6b72b6ff8", "testharness" ], "css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html": [ @@ -553746,7 +554221,7 @@ "testharness" ], "css/css-font-loading/idlharness.https.html": [ - "61a99e01b51529d4a11997a1a7392da0cc71b0ce", + "fcb31ad25650a758a3cedd0e94c3d38777eaed6c", "testharness" ], "css/css-fonts/META.yml": [ @@ -561369,6 +561844,38 @@ "a7a38ad0a0ab8c8fa13b7fac0a75268e1a026cbb", "testharness" ], + "css/css-grid/abspos/descendant-static-position-001-ref.html": [ + "05cdb41b3175d85966f84da13a163631e0acfc17", + "support" + ], + "css/css-grid/abspos/descendant-static-position-001.html": [ + "ec19e4acff1ab6b6a30f28f66e1b6c16c9753705", + "reftest" + ], + "css/css-grid/abspos/descendant-static-position-002-ref.html": [ + "f1a3d9efeb80fce94a55bb4da221de75eda95c68", + "support" + ], + "css/css-grid/abspos/descendant-static-position-002.html": [ + "97fa299c0a0a20840ebaa0c1532695634b13c537", + "reftest" + ], + "css/css-grid/abspos/descendant-static-position-003-ref.html": [ + "953d45de01bea21110dadcddb8b0cdef4e31ff60", + "support" + ], + "css/css-grid/abspos/descendant-static-position-003.html": [ + "399ade2e8764eb0b0ee444340c0722707ab8dcac", + "reftest" + ], + "css/css-grid/abspos/descendant-static-position-004-ref.html": [ + "83002f09cff37c9a76f40c3ce51d7a87b33ac3ea", + "support" + ], + "css/css-grid/abspos/descendant-static-position-004.html": [ + "5496ce9986e1752916bd30d7195697628b50e8a8", + "reftest" + ], "css/css-grid/abspos/grid-item-absolute-positioning-dynamic-001.html": [ "bcd5dbaab5db71463fa2ec511fcb4d21e7942b90", "reftest" @@ -574421,6 +574928,26 @@ "a24556aa0dedfab35ff7792f03b804f44c0f4160", "reftest" ], + "css/css-tables/subpixel-table-cell-width-001-ref.html": [ + "ea2f38b6bb216d25a8d5656fdd8d6bcac40982db", + "support" + ], + "css/css-tables/subpixel-table-cell-width-001.html": [ + "2174fbec3b6ffafe2a0f209b394418895822d200", + "reftest" + ], + "css/css-tables/subpixel-table-cell-width-002.html": [ + "f47938f0cdac1c821d0a3f91907ed2ab5dfb09a3", + "reftest" + ], + "css/css-tables/subpixel-table-width-001-ref.html": [ + "277a3274a917fb522f52e7a5df61c9139413d234", + "support" + ], + "css/css-tables/subpixel-table-width-001.html": [ + "153282fa6373afe2680a2826b3b45db41279ff79", + "reftest" + ], "css/css-tables/support/base.css": [ "52be1bb4e52e5705319ebf5525f6d89839356d65", "support" @@ -598854,11 +599381,11 @@ "reftest" ], "css/filter-effects/backdrop-filter-border-radius-ref.html": [ - "eabcd996697024260a5936f8f81a77f9d1decb48", + "e5712a23774b6f27c6c2a1dfcfe45931aa0301a4", "support" ], "css/filter-effects/backdrop-filter-border-radius.html": [ - "fc212501ad52ca7cd1e0a2fd35b7654c8233eea2", + "ec93de698aaab5d41709f0999d9f2bab3381945d", "reftest" ], "css/filter-effects/backdrop-filter-clip-rect-ref.html": [ @@ -611601,6 +612128,18 @@ "90390108b42155b2e5fcd5984d3a43a3ad1f9f6b", "testharness" ], + "custom-elements/reactions/HTMLCanvasElement.html": [ + "46b9201e7f22d5d3e1cb6af1cedc00c3b28d8cda", + "testharness" + ], + "custom-elements/reactions/HTMLDataElement.html": [ + "01a3bf34281f5a4ce684ea51ea54f7fcc9171214", + "testharness" + ], + "custom-elements/reactions/HTMLDetailsElement.html": [ + "cdcc2fcabf5a702ce1583131f0c102cab9bebf7f", + "testharness" + ], "custom-elements/reactions/HTMLElement.html": [ "5fe422cdfc1df56d58e4eeac1be4669ba8fee967", "testharness" @@ -611609,6 +612148,18 @@ "dc4b22a22eea3ea841b1380e7db3e75e7f4eb256", "testharness" ], + "custom-elements/reactions/HTMLMapElement.html": [ + "f6bd04bd1f9c9a92514d8ee3e626b3898ee0daad", + "testharness" + ], + "custom-elements/reactions/HTMLModElement.html": [ + "850fe170a50d21c1a5cb5a042f05bd2fb062d3fd", + "testharness" + ], + "custom-elements/reactions/HTMLOListElement.html": [ + "4e53cdb0a510453960feccd2104109610f23e665", + "testharness" + ], "custom-elements/reactions/HTMLOptionElement.html": [ "418ef282b32fd5e7c29f21a0a9eb17b6c4796167", "testharness" @@ -611621,10 +612172,18 @@ "02e669bc7a75558686dd56b4ab8fc5918892de2e", "testharness" ], + "custom-elements/reactions/HTMLQuoteElement.html": [ + "97ab10a170e66eba7e036321111e99dbba8bcff8", + "testharness" + ], "custom-elements/reactions/HTMLSelectElement.html": [ "7c79634f668b294e5c32224e15e96e2397883777", "testharness" ], + "custom-elements/reactions/HTMLSlotElement.html": [ + "aba8f20ccfcde3b9e1852cb4d496df5cf85e5e6d", + "testharness" + ], "custom-elements/reactions/HTMLTableElement.html": [ "6adf2623d6bc208e4eaa41e1683b754f9cccf061", "testharness" @@ -611637,6 +612196,10 @@ "cbb0a146e8012ac8e44934604443fb300fbcfbb8", "testharness" ], + "custom-elements/reactions/HTMLTimeElement.html": [ + "4643e340f517da28662712c7b9fef8beb832c7f0", + "testharness" + ], "custom-elements/reactions/HTMLTitleElement.html": [ "6678944c919d45c42ca68f2585575d398287b15e", "testharness" @@ -611666,7 +612229,7 @@ "testharness" ], "custom-elements/reactions/resources/reactions.js": [ - "6ac7ab838d9ac82e994fc4b963815103c4e35063", + "c7b1851c7bf2abba861f02e7aaae5fb810f8d4a9", "support" ], "custom-elements/reactions/with-exceptions.html": [ @@ -614269,6 +614832,78 @@ "7cd0be939f16e8aea7b00ff2b13a06102e26cc4d", "testharness" ], + "element-timing/buffer-before-onload.html": [ + "4d59d4afc9f8e501a0a764cbce980d0d276250fe", + "testharness" + ], + "element-timing/cross-origin-element.html": [ + "1b899b00e3abc5425bb8e97528c8635d6aabff75", + "testharness" + ], + "element-timing/cross-origin-iframe-element.html": [ + "7f73881cc9726fa72c896fd1fbd1a496ade46695", + "testharness" + ], + "element-timing/image-not-fully-visible.html": [ + "8ab3f343635a0e2c7704b4548b9b9dfa76388200", + "testharness" + ], + "element-timing/observe-child-element.html": [ + "5bb8290893a7d80749e2dd03239c9c3f2f158b88", + "testharness" + ], + "element-timing/observe-elementtiming.html": [ + "c148d33ab906da4588feea10370783b8c4b2404b", + "testharness" + ], + "element-timing/observe-large-image.html": [ + "ef3eab8107b2824a60c955b54f58ef2cb4e4c3df", + "testharness" + ], + "element-timing/observe-multiple-images.html": [ + "e56092c65bf4ab422875b54e25a5315d9f6da8c9", + "testharness" + ], + "element-timing/progressively-loaded-image.html": [ + "6fdff39d53848546e113b72ca17e38fd9b0dabc7", + "testharness" + ], + "element-timing/resources/circle.svg": [ + "209b9f4e5b5d55b45b5ec80dac25873d06dfb593", + "support" + ], + "element-timing/resources/element-timing-helpers.js": [ + "0be97e403f27b4ab1e47fda1c114110c6e2a3edb", + "support" + ], + "element-timing/resources/iframe-with-square.html": [ + "0a905d22b9a7d66271074163b57431ac75d29f7e", + "support" + ], + "element-timing/resources/progressive-image.py": [ + "86ec8343658ee028a43a898308026082c93ef09e", + "support" + ], + "element-timing/resources/slow-image.py": [ + "683160414a1120b09b4163c63fce82bb327d9f5f", + "support" + ], + "element-timing/resources/square100.png": [ + "567babb96d1ec3e1032d476f8f7ee1fcb2aa4875", + "support" + ], + "element-timing/resources/square20.jpg": [ + "83ed4914bbb52d097107bd6a128ae8e149b5be86", + "support" + ], + "element-timing/resources/square20.png": [ + "4d51ac4b4633f0a24155f331ee63035e62b6dbe1", + "support" + ], + "element-timing/supported-element-type.html": [ + "15733d46f95c9079acfec06cdd25f70ca0e056a6", + "testharness" + ], "encoding/META.yml": [ "a219a492f0b963f19c50c094e9f00cf3cb69d467", "support" @@ -618805,6 +619440,10 @@ "6ee14300296b6f1e9f7f5083637eb06e620f30e8", "testharness" ], + "fetch/sec-metadata/iframe.tentative.sub.html": [ + "ce31a8182510f246c22543b74ea40bec50d7b016", + "testharness" + ], "fetch/sec-metadata/img.tentative.https.sub.html": [ "c5c389503ccafd2d2cf21a3634b6995bc22a2e91", "testharness" @@ -618877,6 +619516,10 @@ "d76378f1dd8df62fa5404dc1fda1b47fb6a8d409", "testharness" ], + "fetch/sec-metadata/script.tentative.sub.html": [ + "482f4b98f9e8bf4b12e5f960cc39ea4e55ee6c77", + "testharness" + ], "fetch/sec-metadata/serviceworker.tentative.https.sub.html": [ "d0b86d2d9a8ccf67119983890a29c52a5c875c62", "testharness" @@ -634026,7 +634669,7 @@ "testharness" ], "html/semantics/forms/the-select-element/select-selectedOptions.html": [ - "6a5c75f2b147ece26f45c83581f5684d4746a4ab", + "bd5984a6b272f07237a3413a98f8662acdd8ed71", "testharness" ], "html/semantics/forms/the-select-element/select-setcustomvalidity.html": [ @@ -639097,6 +639740,22 @@ "c4addcf0090ce049726cdf1d3cf96283be78db49", "support" ], + "images/fyi-logo/fyi_color.svg": [ + "760387892af091948a50a2dde8501754cf6afc91", + "support" + ], + "images/fyi-logo/fyi_color_bg.svg": [ + "94864b5c2c259d2d494f7cca6b7e4bf62ce46a5b", + "support" + ], + "images/fyi-logo/fyi_monochromatic.svg": [ + "bde275972b33c57138ea086aeb28261d8bbf743f", + "support" + ], + "images/fyi-logo/fyi_monochromatic_bg.svg": [ + "94c82d31a27dc0d9ab38f91574c10c4708dee0de", + "support" + ], "images/ggrr-256x256.png": [ "0342e4a38425886d5fa9159fcfaa9a06093937e3", "support" @@ -640070,7 +640729,7 @@ "support" ], "interfaces/proximity.idl": [ - "3b0d240a2250a8c3ba6d78e17cca93162ee6715f", + "570a29fd37b09304871409dd811498fef8b3cf19", "support" ], "interfaces/push-api.idl": [ @@ -640618,7 +641277,7 @@ "support" ], "lint.whitelist": [ - "2f94041e66539746cf5f9c534a5d3f70ef802559", + "8c5a329357ded76e66c627859a178aab657602dd", "support" ], "loading/preloader-css-import-no-quote.tentative.html": [ @@ -641258,7 +641917,7 @@ "testharness" ], "media-capabilities/encodingInfo.html": [ - "751146c389148cd7b10ee41cf7446b3bed3c4ff1", + "08a3f7569a185215e42f97ca9e9a9803a92c5d7c", "testharness" ], "media-capabilities/idlharness.any.js": [ @@ -652970,7 +653629,7 @@ "support" ], "pointerevents/pointerevent_suppress_compat_events_on_click.html": [ - "77b5daaed41ad29d3dce34cfde57edb4667d5ea7", + "341a82d97a8e0ff4ffbe2d87b817fce807dd39b6", "testharness" ], "pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html": [ @@ -678762,7 +679421,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executormarionette.py": [ - "d5692af77d39771d02af9bbaba9c04a54572bbb6", + "05861ccd2d832f1139c6d14bc7bd7cad6ac2ea37", "support" ], "tools/wptrunner/wptrunner/executors/executoropera.py": [ @@ -690137,6 +690796,34 @@ "b78a05ebdbe81f7a5d46082ccfa2fed771fe63b1", "support" ], + "workers/SharedWorker-MessageEvent-source.any.js": [ + "b3a603484947ee054b4ba73a5903ac1ebd33312e", + "testharness" + ], + "workers/SharedWorker-constructor.html": [ + "2bfe7d9b87adfe927517a0a3af6d614d8837964d", + "testharness" + ], + "workers/SharedWorker-exception-propagation.html": [ + "5823a19a4bfabb89243d51797288ee3a13b4cd1f", + "testharness" + ], + "workers/SharedWorker-exception.html": [ + "28b858485727e8c69846b71ba7f58f6b9662ef9b", + "testharness" + ], + "workers/SharedWorker-replace-EventHandler.any.js": [ + "be9d71257a4452a61fd08180a5a9cb85824fb785", + "testharness" + ], + "workers/SharedWorker-script-error.html": [ + "3c93cc038f2777e5d11206a0138339abb3348432", + "testharness" + ], + "workers/SharedWorker-simple.html": [ + "7cd3f4f3be65112f9a9c247b860727817156f6c3", + "testharness" + ], "workers/SharedWorkerPerformanceNow.html": [ "a784293b342ff43cb97d252d57330cfae48d4805", "testharness" @@ -690149,6 +690836,38 @@ "c1dec27d49f8d711f6fc8e4b5a4932b31f9875be", "testharness" ], + "workers/Worker-base64.any.js": [ + "b5957f201f154483f8865c945e8543c490d8798f", + "testharness" + ], + "workers/Worker-call.worker.js": [ + "ba07498880cbc94edddfee6e9f3c007a82025e54", + "testharness" + ], + "workers/Worker-constructor-proto.any.js": [ + "73eabd55226d67b05fc3a86a9e57880b9a725e5b", + "testharness" + ], + "workers/Worker-location.any.js": [ + "c2a4590b75a4a156cbb05eca7f69bf43a837c095", + "testharness" + ], + "workers/Worker-replace-global-constructor.any.js": [ + "f208f3736362a82a322527b2f983b9e3ccaff33e", + "testharness" + ], + "workers/Worker-replace-self.any.js": [ + "6e732c0730dc2c94cec92a9e7394d0a37100f565", + "testharness" + ], + "workers/Worker-simultaneous-errors.html": [ + "4339f2e33436010e0f05ea3d2c5f4ec26039cef0", + "testharness" + ], + "workers/Worker-termination-with-port-messages.html": [ + "bc19784adae8e060813da4cf6f20dc47ef87ecf4", + "testharness" + ], "workers/WorkerGlobalScope_ErrorEvent_colno.htm": [ "793d6c1807b2966fb28da9cc491df5549d1382ed", "testharness" @@ -690253,6 +690972,10 @@ "9907e6473c2dcf60f8f17335e3d6ab41f800418a", "testharness" ], + "workers/WorkerNavigator.any.js": [ + "3588045c490a45170c84bcfa5211086646afbb76", + "testharness" + ], "workers/WorkerNavigator_appName.htm": [ "832c46ff5e21a76b0464f819cfc5bcdd167a40b4", "testharness" @@ -691401,10 +692124,34 @@ "fefbfc736735ec69634ec79ca25fb4a548f799bc", "support" ], + "workers/support/SharedWorker-common.js": [ + "1c1dac39714bc581f38af3dfb9d6cef4554ff758", + "support" + ], + "workers/support/SharedWorker-create-common.js": [ + "1d06174f12d829fb75dd7e50dbd34e49ca11db71", + "support" + ], + "workers/support/SharedWorker-script-error.js": [ + "0e78949d97bd593050fd8616d1f10cd30f5cc97c", + "support" + ], "workers/support/Timer.js": [ "a86a224dbb41749aca47ba438c15b9ba639458b2", "support" ], + "workers/support/Worker-common.js": [ + "55188fe913c5a18bf3fb1355cc1e535977788a9d", + "support" + ], + "workers/support/Worker-create-common.js": [ + "f0b8efe46bd8c93e5c2af1e239139faae76a16be", + "support" + ], + "workers/support/Worker-termination-with-port-messages.js": [ + "a827db357e2305b32716c447dc70883b8ff3184a", + "support" + ], "workers/support/WorkerBasic.js": [ "6bb6d32b141916146257bbad665e2526111a0849", "support" @@ -691485,6 +692232,10 @@ "d31a8c5eb4633a5379ad2e7be950a2a8ca8ff32d", "support" ], + "workers/support/throw-on-message-Worker.js": [ + "3648f1f478538f0521f8ca15f0c61bf0c3f866e4", + "support" + ], "workers/worker-performance.worker.js": [ "c913b2e7375067c1a21bdc655f394b5c27bc5aed", "testharness" diff --git a/tests/wpt/metadata/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html.ini b/tests/wpt/metadata/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html.ini index 2964f02b25c..b489ed587da 100644 --- a/tests/wpt/metadata/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html.ini +++ b/tests/wpt/metadata/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html.ini @@ -2,3 +2,6 @@ [Make sure that we're sized by the right ancestor] expected: FAIL + [position:absolute should be sized by the right ancestor] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini index 15af52c70e3..a87a2fc57ae 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini @@ -125,9 +125,6 @@ [Matching font-style: 'oblique 0deg' should prefer 'oblique 0deg' over 'oblique 5deg'] expected: FAIL - [Matching font-style: 'oblique 0deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg'] - expected: FAIL - [Matching font-style: 'oblique 0deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg'] expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini index 8e2ceeddfbe..bcd187f508c 100644 --- a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini @@ -6,6 +6,3 @@ [Instant scrolling while doing history navigation.] expected: FAIL - [Smooth scrolling while doing history navigation.] - expected: FAIL - diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLMapElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLMapElement.html.ini new file mode 100644 index 00000000000..56f94582f18 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLMapElement.html.ini @@ -0,0 +1,7 @@ +[HTMLMapElement.html] + [name on HTMLMapElement must enqueue an attributeChanged reaction when adding name content attribute] + expected: FAIL + + [name on HTMLMapElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLModElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLModElement.html.ini new file mode 100644 index 00000000000..519b7e23c02 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLModElement.html.ini @@ -0,0 +1,25 @@ +[HTMLModElement.html] + [dateTime on del use HTMLModElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [cite on ins use HTMLModElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [dateTime on ins use HTMLModElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [cite on del use HTMLModElement must enqueue an attributeChanged reaction when adding cite content attribute] + expected: FAIL + + [cite on ins use HTMLModElement must enqueue an attributeChanged reaction when adding cite content attribute] + expected: FAIL + + [dateTime on del use HTMLModElement must enqueue an attributeChanged reaction when adding datetime content attribute] + expected: FAIL + + [dateTime on ins use HTMLModElement must enqueue an attributeChanged reaction when adding datetime content attribute] + expected: FAIL + + [cite on del use HTMLModElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLOListElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLOListElement.html.ini new file mode 100644 index 00000000000..c1ab7a594a9 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLOListElement.html.ini @@ -0,0 +1,19 @@ +[HTMLOListElement.html] + [type on HTMLOListElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [start on HTMLOListElement must enqueue an attributeChanged reaction when adding start content attribute] + expected: FAIL + + [type on HTMLOListElement must enqueue an attributeChanged reaction when adding type content attribute] + expected: FAIL + + [reversed on HTMLOListElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [reversed on HTMLOListElement must enqueue an attributeChanged reaction when adding reversed content attribute] + expected: FAIL + + [start on HTMLOListElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLQuoteElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLQuoteElement.html.ini new file mode 100644 index 00000000000..3994e9b0b94 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLQuoteElement.html.ini @@ -0,0 +1,13 @@ +[HTMLQuoteElement.html] + [cite on q use HTMLQuoteElement must enqueue an attributeChanged reaction when adding cite content attribute] + expected: FAIL + + [cite on q use HTMLQuoteElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [cite on blockquote use HTMLQuoteElement must enqueue an attributeChanged reaction when replacing an existing attribute] + expected: FAIL + + [cite on blockquote use HTMLQuoteElement must enqueue an attributeChanged reaction when adding cite content attribute] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLSlotElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLSlotElement.html.ini new file mode 100644 index 00000000000..45e29f22add --- /dev/null +++ b/tests/wpt/metadata/custom-elements/reactions/HTMLSlotElement.html.ini @@ -0,0 +1,4 @@ +[HTMLSlotElement.html] + [Custom Elements: CEReactions on HTMLSlotElement interface] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 915e2958e9d..18f786d4963 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,6 +312,3 @@ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini deleted file mode 100644 index 78879bad5f1..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[javascript-url-abort-return-value-undefined.tentative.html] - expected: TIMEOUT - [Not aborting fetch for javascript:undefined navigation] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini deleted file mode 100644 index 8cc42056d34..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ /dev/null @@ -1,10 +0,0 @@ -[non-active-document.html] - [DOMParser] - expected: FAIL - - [createHTMLDocument] - expected: FAIL - - [<template>] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-selectedOptions.html.ini b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-selectedOptions.html.ini index 35076bde333..f7e1db674d1 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-selectedOptions.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-selectedOptions.html.ini @@ -18,3 +18,6 @@ [.selectedOptions should return the same object after selection changes - [SameObject\]] expected: FAIL + [.selectedOptions should return `HTMLCollection` instance] + expected: FAIL + diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini index 99a24216c88..7725b118e9d 100644 --- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini +++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini @@ -12,3 +12,6 @@ [Verifies the resolution of entry.startTime is at least 5 microseconds.] expected: TIMEOUT + [Verifies the resolution of performance.now() is at least 5 microseconds.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-MessageEvent-source.any.js.ini b/tests/wpt/metadata/workers/SharedWorker-MessageEvent-source.any.js.ini new file mode 100644 index 00000000000..772cdfbaf3b --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-MessageEvent-source.any.js.ini @@ -0,0 +1,4 @@ +[SharedWorker-MessageEvent-source.any.sharedworker.html] + [SharedWorker-MessageEvent-source] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-constructor.html.ini b/tests/wpt/metadata/workers/SharedWorker-constructor.html.ini new file mode 100644 index 00000000000..e74b16c7140 --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-constructor.html.ini @@ -0,0 +1,22 @@ +[SharedWorker-constructor.html] + [Test toString exception propagated correctly.] + expected: FAIL + + [Test SharedWorker creation without arguments results in exception.] + expected: FAIL + + [Test SharedWorker constructor with null name does not result in an exception.] + expected: FAIL + + [Test SharedWorker constructor with undefined name does not result in an exception.] + expected: FAIL + + [Test SharedWorker constructor suceeds.] + expected: FAIL + + [Test SharedWorker constructor without a name does not result in an exception.] + expected: FAIL + + [Test recursive worker creation results in exception.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-exception-propagation.html.ini b/tests/wpt/metadata/workers/SharedWorker-exception-propagation.html.ini new file mode 100644 index 00000000000..6967f1e1050 --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-exception-propagation.html.ini @@ -0,0 +1,4 @@ +[SharedWorker-exception-propagation.html] + [Uncaught error in shared worker should not propagate to window] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-exception.html.ini b/tests/wpt/metadata/workers/SharedWorker-exception.html.ini new file mode 100644 index 00000000000..094db04a7a5 --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-exception.html.ini @@ -0,0 +1,4 @@ +[SharedWorker-exception.html] + [This test checks whether exceptions in SharedWorkers are logged to the parent document. An exception should be logged to the error console.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-replace-EventHandler.any.js.ini b/tests/wpt/metadata/workers/SharedWorker-replace-EventHandler.any.js.ini new file mode 100644 index 00000000000..fe70242a9f8 --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-replace-EventHandler.any.js.ini @@ -0,0 +1,4 @@ +[SharedWorker-replace-EventHandler.any.sharedworker.html] + [SharedWorker-replace-EventHandler] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-script-error.html.ini b/tests/wpt/metadata/workers/SharedWorker-script-error.html.ini new file mode 100644 index 00000000000..6df15c33eba --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-script-error.html.ini @@ -0,0 +1,7 @@ +[SharedWorker-script-error.html] + [Test script error unhandled.] + expected: FAIL + + [Test script error handled.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/SharedWorker-simple.html.ini b/tests/wpt/metadata/workers/SharedWorker-simple.html.ini new file mode 100644 index 00000000000..d075daa61bb --- /dev/null +++ b/tests/wpt/metadata/workers/SharedWorker-simple.html.ini @@ -0,0 +1,4 @@ +[SharedWorker-simple.html] + [Test simple shared worker construction case.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker-base64.any.js.ini b/tests/wpt/metadata/workers/Worker-base64.any.js.ini new file mode 100644 index 00000000000..24bfcb85a47 --- /dev/null +++ b/tests/wpt/metadata/workers/Worker-base64.any.js.ini @@ -0,0 +1,11 @@ +[Worker-base64.any.worker.html] + +[Worker-base64.any.serviceworker.html] + [Worker-base64] + expected: FAIL + + +[Worker-base64.any.sharedworker.html] + [Worker-base64] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini b/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini new file mode 100644 index 00000000000..5ad0eeec097 --- /dev/null +++ b/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini @@ -0,0 +1,14 @@ +[Worker-constructor-proto.any.sharedworker.html] + [Worker-constructor-proto] + expected: FAIL + + +[Worker-constructor-proto.any.worker.html] + [Tests that setting the proto of a built in constructor is not reset.] + expected: FAIL + + +[Worker-constructor-proto.any.serviceworker.html] + [Worker-constructor-proto] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker-location.any.js.ini b/tests/wpt/metadata/workers/Worker-location.any.js.ini new file mode 100644 index 00000000000..e1061bced60 --- /dev/null +++ b/tests/wpt/metadata/workers/Worker-location.any.js.ini @@ -0,0 +1,9 @@ +[Worker-location.any.sharedworker.html] + [Worker-location] + expected: FAIL + + +[Worker-location.any.worker.html] + [Test WorkerLocation properties.] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker-replace-global-constructor.any.js.ini b/tests/wpt/metadata/workers/Worker-replace-global-constructor.any.js.ini new file mode 100644 index 00000000000..7a5e3ec6e9b --- /dev/null +++ b/tests/wpt/metadata/workers/Worker-replace-global-constructor.any.js.ini @@ -0,0 +1,11 @@ +[Worker-replace-global-constructor.any.serviceworker.html] + [Worker-replace-global-constructor] + expected: FAIL + + +[Worker-replace-global-constructor.any.sharedworker.html] + [Worker-replace-global-constructor] + expected: FAIL + + +[Worker-replace-global-constructor.any.worker.html] diff --git a/tests/wpt/metadata/workers/Worker-replace-self.any.js.ini b/tests/wpt/metadata/workers/Worker-replace-self.any.js.ini new file mode 100644 index 00000000000..c86c0f32bbe --- /dev/null +++ b/tests/wpt/metadata/workers/Worker-replace-self.any.js.ini @@ -0,0 +1,11 @@ +[Worker-replace-self.any.sharedworker.html] + [Worker-replace-self] + expected: FAIL + + +[Worker-replace-self.any.worker.html] + +[Worker-replace-self.any.serviceworker.html] + [Worker-replace-self] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/Worker-termination-with-port-messages.html.ini b/tests/wpt/metadata/workers/Worker-termination-with-port-messages.html.ini new file mode 100644 index 00000000000..4d2f2755e59 --- /dev/null +++ b/tests/wpt/metadata/workers/Worker-termination-with-port-messages.html.ini @@ -0,0 +1,4 @@ +[Worker-termination-with-port-messages.html] + [This test terminates a worker when there are many undelivered MessagePort messages still waiting to be dispatched into the Worker Context. This causes termination of JS execution and test should not try to dispatch the remaining messages. Test succeeds if it does not hang or crash (if worker thread is running in the separate process, that process could hang or crash).] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/WorkerNavigator.any.js.ini b/tests/wpt/metadata/workers/WorkerNavigator.any.js.ini new file mode 100644 index 00000000000..65fce8b8e92 --- /dev/null +++ b/tests/wpt/metadata/workers/WorkerNavigator.any.js.ini @@ -0,0 +1,14 @@ +[WorkerNavigator.any.worker.html] + [Testing Navigator properties on workers.] + expected: FAIL + + +[WorkerNavigator.any.sharedworker.html] + [WorkerNavigator] + expected: FAIL + + +[WorkerNavigator.any.serviceworker.html] + [WorkerNavigator] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml index acfb0996391..41d5f560f08 100644 --- a/tests/wpt/web-platform-tests/.azure-pipelines.yml +++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml @@ -151,7 +151,6 @@ jobs: displayName: 'Publish results' inputs: artifactName: 'results' - condition: succeededOrFailed() # The InvokeRESTAPI task can only run in a server job. - job: all_post diff --git a/tests/wpt/web-platform-tests/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html b/tests/wpt/web-platform-tests/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html index 4b1baff8b95..b54f0e8bf2f 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html +++ b/tests/wpt/web-platform-tests/css/CSS2/abspos/abspos-in-block-in-inline-in-relpos-inline.html @@ -3,12 +3,14 @@ <link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#containing-block-details"> <link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#anonymous-block-level"> <style> + body { margin: 0px;} .rel { position:relative; } .inline-block { display:inline-block; width:100px; height:1px; } .inline-block.large { width:200px; } #target { position:absolute; width:100%; height:100px; background:green; } + #target-fixed { position:fixed; width:100%; height:100px; background:yellow; } </style> -<p>There should be a green square below.</p> +<p>There should be a green square, and a yellow rectangle below.</p> <div style="height:200px;"> <span class="rel" id="notContainingBlockOfTarget"> <div class="large inline-block"></div> @@ -17,6 +19,7 @@ <div class="inline-block"></div> <span> <div> + <div id="target-fixed"></div> <div id="target"></div> </div> </span> @@ -28,6 +31,11 @@ <script src="/resources/testharnessreport.js"></script> <script> test(()=> { - assert_equals(document.getElementById("target").offsetWidth, 100); - }, "Make sure that we're sized by the right ancestor"); + assert_equals(document.getElementById("target").offsetWidth, + document.querySelector("#containingBlockOfTarget").offsetWidth); + }, "position:absolute should be sized by the right ancestor"); + test(()=> { + assert_equals(document.getElementById("target-fixed").offsetWidth, + document.body.offsetWidth); + }, "position:fixed should be sized by the right ancestor"); </script> diff --git a/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html b/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html index 61a99e01b51..fcb31ad2565 100644 --- a/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html +++ b/tests/wpt/web-platform-tests/css/css-font-loading/idlharness.https.html @@ -14,10 +14,15 @@ idl_test( idl_array => { idl_array.add_objects({ Document: ['document'], - FontFace: ['new FontFace("family", "src")'], - FontFaceSetLoadEvent: ['new FontFaceSetLoadEvent("type")'], + FontFace: ['fontFace'], + FontFaceSetLoadEvent: ['fontFaceSetLoadEvent'], FontFaceSet: ['document.fonts'], }); + self.fontFace = new FontFace("family", "src"); + // The `fontFace.loaded` promise will be rejected, so handle that to + // avoid an unhandled promise rejection manifesting as a harness error. + self.fontFace.loaded.catch(() => {}); + self.fontFaceSetLoadEvent = new FontFaceSetLoadEvent("type"); } ); </script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-001-ref.html new file mode 100644 index 00000000000..05cdb41b317 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-001-ref.html @@ -0,0 +1,71 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Reference: Grid aligned descendants with static position</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 20px; + padding: 2px 4px 6px 1px; +} +.absolute { + position: absolute; + grid-column: 1 / 2; +} +.content { + float: left; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div class="absolute" style="margin-top:2px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; border-left:2px solid black; padding-left:1px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="padding-bottom: 14px"> + <div class="absolute" style="margin-top:10px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px; padding-left:8px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-001.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-001.html new file mode 100644 index 00000000000..ec19e4acff1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-001.html @@ -0,0 +1,90 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid aligned descendants with static position</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="Absolute Positioning"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#staticpos-rect" title="Appendix A: Static Position Terminology"> +<link rel="match" href="descendant-static-position-001-ref.html"> +<meta name="assert" content="This test checks that the position and size of the abs.pos. descendant is correct."> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 20px; + padding: 2px 4px 6px 1px; +} +.grid > div { + background: red; + background-clip: content-box; +} +.absolute { + position: absolute; + background: red; + grid-column: 1 / 2; +} +.content { + float: left; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="padding-left:3px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="border-left:2px solid black; padding-left:1px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="padding-top:10px"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 10px 33px; padding-left:8px"> + <div style="padding-left:3px"> + <div class="absolute" style="grid-column: 2 / 3"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-002-ref.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-002-ref.html new file mode 100644 index 00000000000..f1a3d9efeb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-002-ref.html @@ -0,0 +1,80 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Reference: Grid aligned descendants with static position (direction: rtl)</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 20px; + padding: 2px 4px 6px 1px; + direction: rtl; + margin-left: 40px; +} +.absolute { + position: absolute; + grid-column: 1 / 2; +} +.content { + float: right; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div class="absolute" style="margin-top:2px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; border-left:2px solid black; padding-left:1px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="padding-bottom: 14px"> + <div class="absolute" style="margin-top:10px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px; padding-right:8px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px; padding-right:8px; padding-left:10px"> + <div class="absolute" style="margin-top:2px;"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-002.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-002.html new file mode 100644 index 00000000000..97fa299c0a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-002.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid aligned descendants with static position (direction: rtl)</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="Absolute Positioning"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#staticpos-rect" title="Appendix A: Static Position Terminology"> +<link rel="match" href="descendant-static-position-002-ref.html"> +<meta name="assert" content="This test checks that the position and size of the abs.pos. descendant is correct."> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 20px; + padding: 2px 4px 6px 1px; + direction: rtl; + margin-left: 40px; +} +.grid > div { + background: red; + background-clip: content-box; +} +.absolute { + position: absolute; + background: red; + grid-column: 1 / 2; +} +.content { + float: right; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="padding-left:3px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="border-left:2px solid black; padding-left:1px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="padding-top:10px"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 10px 33px; padding-right:8px"> + <div style="padding-left:3px"> + <div class="absolute" style="grid-column: 2 / 3"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 10px 33px; padding-right:8px; padding-left:10px"> + <div style="padding-left:3px"> + <div class="absolute" style="grid-column: 2 / 3"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-003-ref.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-003-ref.html new file mode 100644 index 00000000000..953d45de01b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-003-ref.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Reference: Grid aligned descendants with static position</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 100px; + justify-content: end; + padding: 2px 4px 6px 1px; +} +.absolute { + position: absolute; + grid-column: 1 / 2; +} +.content { + float: left; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div class="absolute" style="margin-top:2px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; border-left:2px solid black; padding-left:1px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="padding-bottom: 14px"> + <div class="absolute" style="margin-top:10px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px; padding-left:8px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-003.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-003.html new file mode 100644 index 00000000000..399ade2e876 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-003.html @@ -0,0 +1,91 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid aligned descendants with static position</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="Absolute Positioning"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#staticpos-rect" title="Appendix A: Static Position Terminology"> +<link rel="match" href="descendant-static-position-003-ref.html"> +<meta name="assert" content="This test checks that the position and size of the abs.pos. descendant is correct."> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 100px; + justify-content: end; + padding: 2px 4px 6px 1px; +} +.grid > div { + background: red; + background-clip: content-box; +} +.absolute { + position: absolute; + background: red; + grid-column: 1 / 2; +} +.content { + float: left; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="padding-left:3px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="border-left:2px solid black; padding-left:1px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="padding-top:10px"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 10px 33px; padding-left:8px"> + <div style="padding-left:3px"> + <div class="absolute" style="grid-column: 2 / 3"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-004-ref.html new file mode 100644 index 00000000000..83002f09cff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-004-ref.html @@ -0,0 +1,81 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Reference: Grid aligned descendants with static position (direction: rtl)</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 100px; + justify-content: center; + padding: 2px 4px 6px 1px; + direction: rtl; + margin-left: 40px; +} +.absolute { + position: absolute; + grid-column: 1 / 2; +} +.content { + float: right; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div class="absolute" style="margin-top:2px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div class="absolute" style="margin-top:2px; border-left:2px solid black; padding-left:1px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="padding-bottom: 14px"> + <div class="absolute" style="margin-top:10px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px; padding-right:8px"> + <div class="absolute" style="margin-top:2px; margin-left:3px"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px; padding-right:8px; padding-left:10px"> + <div class="absolute" style="margin-top:2px;"> + <div class="content"></div> + <div class="content"></div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-004.html b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-004.html new file mode 100644 index 00000000000..5496ce9986e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/abspos/descendant-static-position-004.html @@ -0,0 +1,102 @@ +<!DOCTYPE html> +<html><head> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid aligned descendants with static position (direction: rtl)</title> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="Absolute Positioning"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#staticpos-rect" title="Appendix A: Static Position Terminology"> +<link rel="match" href="descendant-static-position-004-ref.html"> +<meta name="assert" content="This test checks that the position and size of the abs.pos. descendant is correct."> +<style> +.grid { + position: relative; + display: grid; + grid: 40px / 40px; + border: 2px solid; + border-top-width: 5px; + border-left-width: 3px; + width: 100px; + justify-content: center; + padding: 2px 4px 6px 1px; + direction: rtl; + margin-left: 40px; +} +.grid > div { + background: red; + background-clip: content-box; +} +.absolute { + position: absolute; + background: red; + grid-column: 1 / 2; +} +.content { + float: right; + width: 20px; + height: 40px; + background: green; +} +.content:nth-child(2) { + background: grey; +} + +</style></head> +<body> +There should be no red: + +<div class="grid"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="padding-left:3px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 43px"> + <div style="border-left:2px solid black; padding-left:1px"> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="padding-top:10px"> + <div> + <div class="absolute"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 10px 33px; padding-right:8px"> + <div style="padding-left:3px"> + <div class="absolute" style="grid-column: 2 / 3"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +<div class="grid" style="grid-template-columns: 10px 33px; padding-right:8px; padding-left:10px"> + <div style="padding-left:3px"> + <div class="absolute" style="grid-column: 2 / 3"> + <div class="content"></div> + <div class="content"></div> + </div> + </div> +</div> + +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-001-ref.html b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-001-ref.html new file mode 100644 index 00000000000..ea2f38b6bb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-001-ref.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<style> + div { + font-size: 0; /* so I can leave spaces between the child divs */ + height: 20px; + } + div > div { + display: inline-block; + } + div > div:first-child { + background: blue; + } + div > div:nth-child(2) { + background: lime; + } +</style> + +<div> + <div style="width:3.6px;"></div> + <div style="width:3.6px;"></div> +</div> + +<br><br> + +<div> + <div style="width:3.3px;"></div> + <div style="width:3.3px;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-001.html b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-001.html new file mode 100644 index 00000000000..2174fbec3b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-001.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<link rel="author" title="David Grogan" href="dgrogan@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/CSS21/cascade.html#value-stages"> +<link rel="match" href="subpixel-table-cell-width-001-ref.html"> +<meta name="flags" content="" /> +<meta name="assert" content="When a cell has a specified fractional fixed width and a block has the same specified fractional width, their actual widths should match." /> + +<style> +.table { + display: table; + height: 20px; + background: red; +} +.cell { + display: table-cell; +} +div > div:first-child { + background: blue; +} +div > div:nth-child(2) { + background: lime; +} +</style> + +<div class=table> + <div class=cell style="width:3.6px;"></div> + <div class=cell style="width:3.6px;"></div> +</div> + +<br><br> + +<div class=table> + <div class=cell style="width:3.3px;"></div> + <div class=cell style="width:3.3px;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-002.html b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-002.html new file mode 100644 index 00000000000..f47938f0cda --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-cell-width-002.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<link rel="author" title="David Grogan" href="dgrogan@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/CSS21/cascade.html#value-stages"> +<link rel="match" href="subpixel-table-cell-width-001-ref.html"> +<meta name="flags" content="" /> +<meta name="assert" content="When a cell has a specified percent width that results in a fractional used width, the cell's actual width should match that of a block whose specified fixed width is the cell's used width" /> + +<style> +.table { + display: table; + height: 20px; + background: red; +} +.cell { + display: table-cell; +} +div > div:first-child { + background: blue; +} +div > div:nth-child(2) { + background: lime; +} +</style> + + +<div class=table style="width:7.2px;"> + <div class=cell style="width:50%;"></div> + <div class=cell style="width:50%;"></div> +</div> + +<br><br> + +<div class=table style="width:6.6px;"> + <div class=cell style="width:50%;"></div> + <div class=cell style="width:50%;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-width-001-ref.html b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-width-001-ref.html new file mode 100644 index 00000000000..277a3274a91 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-width-001-ref.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<style> +.parent div { + background: #aaa; + width: 100%; + height: 100px; +} +</style> + +There should be two grey ~squares with no red showing. + +<div class="parent" style="width:100.2px"> + <div></div> +</div> + +<div class="parent" style="width:100.8px"> + <div></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-width-001.html b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-width-001.html new file mode 100644 index 00000000000..153282fa637 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/subpixel-table-width-001.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/CSS22/syndata.html#value-def-percentage"> +<link rel="match" href="subpixel-table-width-001-ref.html"> +<meta name="flags" content="" /> +<meta name="assert" content="A table with width:100% has same actual width as its parent's actual width." /> + +<style> +.parent { + background: red; +} + +.parent table { + background: #aaa; + width: 100%; + height: 100px; +} +</style> + +There should be two grey ~squares with no red showing. + +<div class="parent" style="width:100.2px"> + <table></table> +</div> + +<div class="parent" style="width:100.8px"> + <table></table> +</div> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius-ref.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius-ref.html index eabcd996697..e5712a23774 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius-ref.html +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius-ref.html @@ -5,7 +5,7 @@ -<div style="opacity: 0.9999;"> +<div> <div class="circle outside"></div> <div class="circle inside"></div> </div> @@ -24,16 +24,13 @@ div { top: 30px; left: 30px; border-radius: 50px; - background: yellow; - will-change: transform; + background: #ffff0060; } .inside { - background: #ffd94d; + background: #ffaf9f; clip-path: inset(0px 30px 30px 0px); - will-change: transform; } .outside { - background: #ffff4d; - will-change: transform; + background: #ffff9f; } </style> diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html index fc212501ad5..ec93de698aa 100644 --- a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-border-radius.html @@ -24,11 +24,9 @@ div { top: 30px; left: 30px; border-radius: 50px; - background: yellow; - will-change: transform; + background: #ffff0060; } .filter { - opacity: 0.7; backdrop-filter: invert(1); } </style> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLCanvasElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLCanvasElement.html new file mode 100644 index 00000000000..46b9201e7f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLCanvasElement.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLCanvasElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="width, height of HTMLCanvasElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-canvas-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectAttribute('width', 'width', '15', '20', 'width on HTMLCanvasElement', 'canvas', HTMLCanvasElement); +testReflectAttribute('height', 'height', '23', '45', 'height on HTMLCanvasElement', 'canvas', HTMLCanvasElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLDataElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLDataElement.html new file mode 100644 index 00000000000..01a3bf34281 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLDataElement.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLDataElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="value of HTMLDataElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-data-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectAttribute('value', 'value', '1234', '2345', 'name on HTMLDataElement', 'data', HTMLDataElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLDetailsElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLDetailsElement.html new file mode 100644 index 00000000000..cdcc2fcabf5 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLDetailsElement.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLDetailsElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="open of HTMLDetailsElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-details-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectBooleanAttribute('open', 'open', 'open on HTMLDetailsElement', 'details', HTMLDetailsElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLMapElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLMapElement.html new file mode 100644 index 00000000000..f6bd04bd1f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLMapElement.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLMapElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="name of HTMLMapElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-map-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<img usemap="#yellow" src="/images/yellow.png" alt="yellow pic"> +<img usemap="#green" src="/images/green.png" alt="green pic"> +<script> + +testReflectAttribute('name', 'name', 'yellow', 'green', 'name on HTMLMapElement', 'map', HTMLMapElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLModElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLModElement.html new file mode 100644 index 00000000000..850fe170a50 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLModElement.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLModElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="cite, dateTime of HTMLModElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#attributes-common-to-ins-and-del-elements"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectAttribute('cite', 'cite', '../resources/custom-elements-helpers.js', './resources/reactions.js', 'cite on ins use HTMLModElement', 'ins', HTMLModElement); +testReflectAttribute('dateTime', 'datetime', '2018-12-19 00:00Z', '2018-12-20 00:00Z', 'dateTime on ins use HTMLModElement', 'ins', HTMLModElement); +testReflectAttribute('cite', 'cite', '../resources/custom-elements-helpers.js', './resources/reactions.js', 'cite on del use HTMLModElement', 'del', HTMLModElement); +testReflectAttribute('dateTime', 'datetime', '2018-10-11T01:25-07:00', '2018-10-12T01:25-07:00', 'dateTime on del use HTMLModElement', 'del', HTMLModElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLOListElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLOListElement.html new file mode 100644 index 00000000000..4e53cdb0a51 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLOListElement.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLOListElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="reversed, start, type of HTMLOListElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-ol-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectBooleanAttribute('reversed', 'reversed', 'reversed on HTMLOListElement', 'ol', HTMLOListElement); +testReflectAttribute('start', 'start', '2', '5', 'start on HTMLOListElement', 'ol', HTMLOListElement); +testReflectAttribute('type', 'type', '1', 'a', 'type on HTMLOListElement', 'ol', HTMLOListElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLQuoteElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLQuoteElement.html new file mode 100644 index 00000000000..97ab10a170e --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLQuoteElement.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLQuoteElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="cite of HTMLQuoteElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-blockquote-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectAttribute('cite', 'cite', '../resources/custom-elements-helpers.js', './resources/reactions.js', 'cite on blockquote use HTMLQuoteElement', 'blockquote', HTMLQuoteElement); +testReflectAttribute('cite', 'cite', '../resources/custom-elements-helpers.js', './resources/reactions.js', 'cite on q use HTMLQuoteElement', 'q', HTMLQuoteElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLSlotElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLSlotElement.html new file mode 100644 index 00000000000..aba8f20ccfc --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLSlotElement.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLSlotElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="name of HTMLSlotElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-slot-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectAttribute('name', 'name', 'slot1', 'slot2', 'name on HTMLSlotElement', 'slot', HTMLSlotElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLTimeElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLTimeElement.html new file mode 100644 index 00000000000..4643e340f51 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLTimeElement.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>Custom Elements: CEReactions on HTMLTimeElement interface</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<meta name="assert" content="name of HTMLTimeElement interface must have CEReactions"> +<meta name="help" content="https://html.spec.whatwg.org/#the-time-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/custom-elements-helpers.js"></script> +<script src="./resources/reactions.js"></script> + +<script> + +testReflectAttribute('dateTime', 'datetime', '2018-12-10', '2018-12-12', 'dateTime on HTMLTimeElement', 'time', HTMLTimeElement); + +</script> diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js b/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js index 6ac7ab838d9..c7b1851c7bf 100644 --- a/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js +++ b/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js @@ -164,8 +164,8 @@ function testReflectAttribute(jsAttributeName, contentAttributeName, validValue1 testReflectAttributeWithContentValues(jsAttributeName, contentAttributeName, validValue1, validValue1, validValue2, validValue2, name, elementName, interfaceName); } -function testReflectBooleanAttribute(jsAttributeName, contentAttributeName, name) { - testReflectAttributeWithContentValues(jsAttributeName, contentAttributeName, true, '', false, null, name); +function testReflectBooleanAttribute(jsAttributeName, contentAttributeName, name, elementName, interfaceName) { + testReflectAttributeWithContentValues(jsAttributeName, contentAttributeName, true, '', false, null, name, elementName, interfaceName); } function testAttributeAdder(testFunction, name) { diff --git a/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html b/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html new file mode 100644 index 00000000000..4d59d4afc9f --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/buffer-before-onload.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<meta charset=utf-8 /> +<title>Element Timing: buffer elements before onload</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="resources/element-timing-helpers.js"></script> +<body> +<img src=resources/slow-image.py?name=square20.png&sleep=500> +<script> + /* + In this test, a slow image is added to the frame to delay onload. The entry + for the other image should be available before onload, and thus delivered to + the performance timeline. + */ + async_test(function(t) { + beforeRender = performance.now(); + const img = document.createElement('img'); + img.src = 'resources/square20.jpg'; + img.setAttribute('elementtiming', 'my_image'); + document.body.appendChild(img); + window.onload = t.step_func_done( () => { + const entries = performance.getEntriesByName('my_image'); + assert_equals(entries.length, 1); + assert_greater_than_equal(performance.getEntriesByType('element').length, 1); + assert_equals(performance.getEntries().filter(e => e.name === 'my_image').length, 1); + const entry = entries[0]; + checkElement(entry, 'my_image', beforeRender); + }); + }, "Element Timing: image loads before onload."); + +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/element-timing/cross-origin-element.html b/tests/wpt/web-platform-tests/element-timing/cross-origin-element.html new file mode 100644 index 00000000000..1b899b00e3a --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/cross-origin-element.html @@ -0,0 +1,33 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: do NOT observe cross-origin images</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + async_test((t) => { + const observer = new PerformanceObserver( + t.step_func_done((entryList) => { + assert_unreached("We should not observe a cross origin element."); + }) + ); + observer.observe({entryTypes: ['element']}); + // We add the image during onload to be sure that the observer is registered + // in time for it to observe the element timing. + // TODO(npm): change observer to use buffered flag. + window.onload = () => { + // Add a cross origin image resource. + const img = document.createElement('img'); + img.src = + 'http://localhost:8000/resources/square100.png'; + document.body.appendChild(img); + }; + t.step_timeout( () => { + // After some wait, assume observer did not receive the entry, so the test passes. + t.done(); + }, 100); + }, 'Cross-origin image element is NOT observable.'); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/cross-origin-iframe-element.html b/tests/wpt/web-platform-tests/element-timing/cross-origin-iframe-element.html new file mode 100644 index 00000000000..7f73881cc97 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/cross-origin-iframe-element.html @@ -0,0 +1,33 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: do NOT observe elements from cross-origin iframes</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + async_test((t) => { + const observer = new PerformanceObserver( + t.step_func_done((entryList) => { + assert_unreached("We should not observe a cross origin element."); + }) + ); + observer.observe({entryTypes: ['element']}); + // We add the iframe during onload to be sure that the observer is registered + // in time for it to observe the element timing. + // TODO(npm): change observer to use buffered flag. + window.onload = () => { + // Add a cross origin iframe with an image. + const iframe = document.createElement('iframe'); + iframe.src = + 'http://localhost:8000/performance-timing/element-resources/iframe-with-square.html'; + document.body.appendChild(iframe); + }; + t.step_timeout( () => { + // After some wait, assume observer did not receive the entry, so the test passes. + t.done(); + }, 300); + }, 'Element from cross origin iframe is NOT observable.'); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/image-not-fully-visible.html b/tests/wpt/web-platform-tests/element-timing/image-not-fully-visible.html new file mode 100644 index 00000000000..8ab3f343635 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/image-not-fully-visible.html @@ -0,0 +1,43 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: intersectionRect when image overflows</title> +<body> +<style> +body { + margin: 200px 100px; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + let beforeRender; + async_test(function (t) { + const observer = new PerformanceObserver( + t.step_func_done(function(entryList) { + assert_equals(entryList.getEntries().length, 1); + const entry = entryList.getEntries()[0]; + checkElement(entry, 'not_fully_visible', beforeRender); + // Image will not be fully visible. It should start from the top left part + // of the document, excluding the margin, and then overflow. + checkRect(entry, + [100, document.documentElement.clientWidth, 200, document.documentElement.clientHeight]); + }) + ); + observer.observe({entryTypes: ['element']}); + // We add the image during onload to be sure that the observer is registered + // in time for it to observe the element timing. + window.onload = () => { + // Add an image setting width and height equal to viewport. + const img = document.createElement('img'); + img.src = 'resources/square20.png'; + img.setAttribute('elementtiming', 'not_fully_visible'); + img.width = document.documentElement.clientWidth; + img.height = document.documentElement.clientHeight; + document.body.appendChild(img); + beforeRender = performance.now(); + }; + }, 'The intersectionRect of an img element overflowing is computed correctly'); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/observe-child-element.html b/tests/wpt/web-platform-tests/element-timing/observe-child-element.html new file mode 100644 index 00000000000..5bb8290893a --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/observe-child-element.html @@ -0,0 +1,39 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: observe elements from same-origin iframes</title> +<body> +<style> +body { + margin: 0; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + let beforeRender; + async_test((t) => { + const observer = new PerformanceObserver( + t.step_func_done((entryList) => { + assert_equals(entryList.getEntries().length, 1); + const entry = entryList.getEntries()[0]; + checkElement(entry, 'my_image', beforeRender); + // Assume viewport has size at least 100, so the element is fully visible. + checkRect(entry, [0, 100, 0, 100]); + }) + ); + observer.observe({entryTypes: ['element']}); + // We add the iframe during onload to be sure that the observer is registered + // in time for it to observe the element timing. + // TODO(npm): change observer to use buffered flag. + window.onload = () => { + // Add iframe with an image of width and height equal to 100. + const iframe = document.createElement('iframe'); + iframe.src = 'resources/iframe-with-square.html'; + document.body.appendChild(iframe); + beforeRender = performance.now(); + }; + }, 'Element from same-origin iframe is observable.'); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/observe-elementtiming.html b/tests/wpt/web-platform-tests/element-timing/observe-elementtiming.html new file mode 100644 index 00000000000..c148d33ab90 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/observe-elementtiming.html @@ -0,0 +1,39 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: observe elements with elementtiming attribute</title> +<body> +<style> +body { + margin: 0; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + let beforeRender; + async_test(function (t) { + const observer = new PerformanceObserver( + t.step_func_done(function(entryList) { + assert_equals(entryList.getEntries().length, 1); + const entry = entryList.getEntries()[0]; + checkElement(entry, 'my_image', beforeRender); + // Assume viewport has size at least 100, so the element is fully visible. + checkRect(entry, [0, 100, 0, 100]); + }) + ); + observer.observe({entryTypes: ['element']}); + // We add the image during onload to be sure that the observer is registered + // in time for it to observe the element timing. + window.onload = () => { + // Add image of width and height equal to 100. + const img = document.createElement('img'); + img.src = 'resources/square100.png'; + img.setAttribute('elementtiming', 'my_image'); + document.body.appendChild(img); + beforeRender = performance.now(); + }; + }, 'Element with elementtiming attribute is observable.'); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/observe-large-image.html b/tests/wpt/web-platform-tests/element-timing/observe-large-image.html new file mode 100644 index 00000000000..ef3eab8107b --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/observe-large-image.html @@ -0,0 +1,41 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: observe large elements</title> +<body> +<style> +body { + margin: 0; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + let beforeRender; + async_test(function (t) { + const observer = new PerformanceObserver( + t.step_func_done(function(entryList) { + assert_equals(entryList.getEntries().length, 1); + const entry = entryList.getEntries()[0]; + checkElement(entry, 'img', beforeRender) + // Assume viewport hasn't changed, so the element occupies all of it. + checkRect(entry, + [0, document.documentElement.clientWidth, 0, document.documentElement.clientHeight]); + }) + ); + observer.observe({entryTypes: ['element']}); + // We add the image during onload to be sure that the observer is registered + // in time for it to observe the element timing. + window.onload = () => { + // Add an image setting width and height equal to viewport. + const img = document.createElement('img'); + img.src = 'resources/square20.jpg'; + img.width = document.documentElement.clientWidth; + img.height = document.documentElement.clientHeight; + document.body.appendChild(img); + beforeRender = performance.now(); + }; + }, 'Large img element is observable.'); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/observe-multiple-images.html b/tests/wpt/web-platform-tests/element-timing/observe-multiple-images.html new file mode 100644 index 00000000000..e56092c65bf --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/observe-multiple-images.html @@ -0,0 +1,110 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Element Timing: multiple images</title> +<body> +<style> +body { + margin: 0; +} +#img1 { + display: block; + margin-left: auto; + margin-right: auto; +} +#img2 { + margin-top:150px; + margin-left:50px; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<script> + let beforeRender, image1Observed=0, image2Observed=0, image3Observed=0; + async_test(function (t) { + const observer = new PerformanceObserver( + t.step_func(function(entryList) { + entryList.getEntries().forEach( entry => { + if (entry.name === 'image1') { + if (image1Observed) { + assert_unreached("Observer received image1 more than once"); + t.done(); + } + image1Observed = 1; + checkElement(entry, 'image1', beforeRender); + // This image is horizontally centered. + // Using abs and comparing to 1 because the viewport sizes could be odd. + // If a size is odd, then image cannot be in the pure center, but left + // and right should still be very close to their estimated coordinates. + assert_less_than_equal(Math.abs(entry.intersectionRect.left - + (document.documentElement.clientWidth / 2 - 50)), 1, + 'left of rect for image1'); + assert_less_than_equal(Math.abs(entry.intersectionRect.right - + (document.documentElement.clientWidth / 2 + 50)), 1, + 'right of rect for image1'); + assert_equals(entry.intersectionRect.top, 0, 'top of rect for image1'); + assert_equals(entry.intersectionRect.bottom, + 100, 'bottom of rect for image1'); + } + else if (entry.name === 'image2') { + if (image2Observed) { + assert_unreached("Observer received image2 more than once"); + t.done(); + } + image2Observed = 1; + checkElement(entry, 'image2', beforeRender); + // This image should be below image 1, and should respect the margin. + checkRect(entry, [50, 250, 250, 450], "of image2"); + } + else if (entry.name === 'image3') { + if (image3Observed) { + assert_unreached("Observer received image3 more than once"); + t.done(); + } + image3Observed = 1; + checkElement(entry, 'image3', beforeRender); + // This image is just to the right of image2. + checkRect(entry, [250, 450, 250, 450], "of image3"); + } + else { + assert_unreached("Received an unexpected name."); + t.done(); + } + if (image1Observed && image2Observed && image3Observed) { + t.done(); + } + }); + }) + ); + observer.observe({entryTypes: ['element']}); + function addImage(number, source, width=0) { + const img = document.createElement('img'); + img.src = source; + img.id = 'img' + number; + img.setAttribute('elementtiming', 'image' + number); + if (width !== 0) + img.width = width; + document.body.appendChild(img); + } + // Add the images during onload to be sure that the observer is registered in + // time to observe the element timing. + window.onload = () => { + addImage(1, 'resources/square100.png'); + // Use requestAnimationFrame and a timeout to ensure that the images are + // processed in the order we want. + requestAnimationFrame( () => { + t.step_timeout( () => { + // Set the size equal to that of image3 to make positioning easier. + addImage(2, 'resources/square20.png', 200); + requestAnimationFrame( () => { + t.step_timeout( () => { + addImage(3, 'resources/circle.svg'); + }, 0); + }); + }, 0); + }); + beforeRender = performance.now(); + }; + }, 'PerformanceObserver can observe multiple image elements.'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/progressively-loaded-image.html b/tests/wpt/web-platform-tests/element-timing/progressively-loaded-image.html new file mode 100644 index 00000000000..6fdff39d538 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/progressively-loaded-image.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<meta charset=utf-8 /> +<title>Element Timing: buffer elements before onload</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="resources/element-timing-helpers.js"></script> +<body> +<script> + let beforeRender; + // Number of characters to be read on the initial read, before sleeping. + // Should be sufficient to do at least a first scan. + let numInitial = 75; + let sleep = 500; + async_test(function(t) { + const observer = new PerformanceObserver( + t.step_func_done(function(entryList) { + assert_equals(entryList.getEntries().length, 1); + const entry = entryList.getEntries()[0]; + // Since the image is only fully loaded after the sleep, the render timestamp + // must be greater than |beforeRender| + |sleep|. + checkElement(entry, 'my_image', beforeRender + sleep); + }) + ); + observer.observe({entryTypes: ['element']}); + + const img = document.createElement('img'); + img.src = 'resources/progressive-image.py?name=square20.jpg&numInitial=' + + numInitial + '&sleep=' + sleep; + img.setAttribute('elementtiming', 'my_image'); + document.body.appendChild(img); + beforeRender = performance.now(); + t.step_timeout(() => {assert_true(0);}, 2000); + }, "Element Timing: image render timestamp occurs after it is fully loaded."); +</script> diff --git a/tests/wpt/web-platform-tests/element-timing/resources/circle.svg b/tests/wpt/web-platform-tests/element-timing/resources/circle.svg new file mode 100644 index 00000000000..209b9f4e5b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/circle.svg @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" + "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"> + <circle cx="50%" cy="50%" r="80" style="fill:blue;" /> +</svg> diff --git a/tests/wpt/web-platform-tests/element-timing/resources/element-timing-helpers.js b/tests/wpt/web-platform-tests/element-timing/resources/element-timing-helpers.js new file mode 100644 index 00000000000..0be97e403f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/element-timing-helpers.js @@ -0,0 +1,21 @@ +// Checks that this is an ElementTiming entry with name |expectedName|. It also +// does a very basic check on |startTime|: after |beforeRender| and before now(). +function checkElement(entry, expectedName, beforeRender) { + assert_equals(entry.entryType, 'element'); + assert_equals(entry.name, expectedName); + assert_equals(entry.duration, 0); + assert_greater_than_equal(entry.startTime, beforeRender); + assert_greater_than_equal(performance.now(), entry.startTime); +} + +// Checks that the rect matches the desired values [left right top bottom] +function checkRect(entry, expected, description="") { + assert_equals(entry.intersectionRect.left, expected[0], + 'left of rect ' + description); + assert_equals(entry.intersectionRect.right, expected[1], + 'right of rect ' + description); + assert_equals(entry.intersectionRect.top, expected[2], + 'top of rect ' + description); + assert_equals(entry.intersectionRect.bottom, expected[3], + 'bottom of rect ' + description); +} diff --git a/tests/wpt/web-platform-tests/element-timing/resources/iframe-with-square.html b/tests/wpt/web-platform-tests/element-timing/resources/iframe-with-square.html new file mode 100644 index 00000000000..0a905d22b9a --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/iframe-with-square.html @@ -0,0 +1,10 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<body> +<style> +body { + margin: 0; +} +</style> +<img src='square100.png' elementtiming="my_image"> +</body> diff --git a/tests/wpt/web-platform-tests/element-timing/resources/progressive-image.py b/tests/wpt/web-platform-tests/element-timing/resources/progressive-image.py new file mode 100644 index 00000000000..86ec8343658 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/progressive-image.py @@ -0,0 +1,26 @@ +import os.path +import time + +def main(request, response): + name = request.GET.first("name") + sleepTime = float(request.GET.first("sleep")) / 1E3 + numInitial = int(request.GET.first("numInitial")) + + path = os.path.join(os.path.dirname(__file__), name) + body = open(path, "rb").read() + + response.headers.set("Content-Type", "image") + response.headers.set("Content-Length", len(body)) + response.headers.set("Cache-control", "no-cache, must-revalidate") + response.write_status_headers() + + # Read from the beginning, |numInitial| bytes. + first = body[:numInitial] + response.writer.write_content(first) + response.writer.flush() + + time.sleep(sleepTime) + + # Read the remainder after having slept. + second = body[numInitial:] + response.writer.write_content(second) diff --git a/tests/wpt/web-platform-tests/element-timing/resources/slow-image.py b/tests/wpt/web-platform-tests/element-timing/resources/slow-image.py new file mode 100644 index 00000000000..683160414a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/slow-image.py @@ -0,0 +1,17 @@ +import os.path +import time + +def main(request, response): + name = request.GET.first("name") + sleepTime = float(request.GET.first("sleep")) / 1E3 + + time.sleep(sleepTime) + + path = os.path.join(os.path.dirname(__file__), name) + body = open(path, "rb").read() + + response.headers.set("Content-Type", "image") + response.headers.set("Content-Length", len(body)) + response.headers.set("Cache-control", "no-cache, must-revalidate") + + response.content = body; diff --git a/tests/wpt/web-platform-tests/element-timing/resources/square100.png b/tests/wpt/web-platform-tests/element-timing/resources/square100.png Binary files differnew file mode 100644 index 00000000000..567babb96d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/square100.png diff --git a/tests/wpt/web-platform-tests/element-timing/resources/square20.jpg b/tests/wpt/web-platform-tests/element-timing/resources/square20.jpg Binary files differnew file mode 100644 index 00000000000..83ed4914bbb --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/square20.jpg diff --git a/tests/wpt/web-platform-tests/element-timing/resources/square20.png b/tests/wpt/web-platform-tests/element-timing/resources/square20.png Binary files differnew file mode 100644 index 00000000000..4d51ac4b463 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/resources/square20.png diff --git a/tests/wpt/web-platform-tests/element-timing/supported-element-type.html b/tests/wpt/web-platform-tests/element-timing/supported-element-type.html new file mode 100644 index 00000000000..15733d46f95 --- /dev/null +++ b/tests/wpt/web-platform-tests/element-timing/supported-element-type.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<head> +<title>PerformanceObserver.supportedEntryTypes contains "element"</title> +</head> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +test(() => { + if (typeof PerformanceObserver.supportedEntryTypes === "undefined") + assert_unreached("supportedEntryTypes is not supported."); + assert_greater_than(PerformanceObserver.supportedEntryTypes.indexOf("element"), -1, + "There should be an entry 'element' in PerformanceObserver.supportedEntryTypes"); +}, "supportedEntryTypes contains 'element'."); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/fetch/sec-metadata/iframe.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/sec-metadata/iframe.tentative.sub.html new file mode 100644 index 00000000000..ce31a818251 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/sec-metadata/iframe.tentative.sub.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/fetch/sec-metadata/resources/helper.js></script> +<body> +<script> + async_test(t => { + let i = document.createElement('iframe'); + i.src = "http://{{host}}:{{ports[http][0]}}/fetch/sec-metadata/resources/post-to-owner.py"; + window.addEventListener('message', t.step_func(e => { + if (e.source != i.contentWindow) + return; + + assert_header_equals(e.data, { + "dest": "", + "site": "", + "user": "" + }); + t.done(); + })); + + document.body.appendChild(i); + }, "Non-secure same-origin iframe => No headers"); + + async_test(t => { + let i = document.createElement('iframe'); + i.src = "http://{{hosts[][www]}}:{{ports[http][0]}}/fetch/sec-metadata/resources/post-to-owner.py"; + window.addEventListener('message', t.step_func(e => { + if (e.source != i.contentWindow) + return; + + assert_header_equals(e.data, { + "dest": "", + "site": "", + "user": "" + }); + t.done(); + })); + + document.body.appendChild(i); + }, "Non-secure same-site iframe => No headers"); + + async_test(t => { + let i = document.createElement('iframe'); + i.src = "http://{{hosts[alt][www]}}:{{ports[http][0]}}/fetch/sec-metadata/resources/post-to-owner.py"; + window.addEventListener('message', t.step_func(e => { + if (e.source != i.contentWindow) + return; + + assert_header_equals(e.data, { + "dest": "", + "site": "", + "user": "" + }); + t.done(); + })); + + document.body.appendChild(i); + }, "Non-secure cross-site iframe => No headers."); +</script> diff --git a/tests/wpt/web-platform-tests/fetch/sec-metadata/script.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/sec-metadata/script.tentative.sub.html new file mode 100644 index 00000000000..482f4b98f9e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/sec-metadata/script.tentative.sub.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/fetch/sec-metadata/resources/helper.js></script> + +<!-- Same-origin script --> +<script src="http://{{host}}:{{ports[http][0]}}/fetch/sec-metadata/resources/echo-as-script.py"></script> +<script> + test(t => { + t.add_cleanup(_ => { header = null; }); + + assert_header_equals(header, { + "dest": "", + "site": "", + "user": "" + }); + }, "Non-secure same-origin script => No headers"); +</script> + +<!-- Same-site script --> +<script src="http://{{hosts[][www]}}:{{ports[http][0]}}/fetch/sec-metadata/resources/echo-as-script.py"></script> +<script> + test(t => { + t.add_cleanup(_ => { header = null; }); + + assert_header_equals(header, { + "dest": "", + "site": "", + "user": "" + }); + }, "Non-secure same-site script => No headers"); +</script> + +<!-- Cross-site script --> +<script src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/fetch/sec-metadata/resources/echo-as-script.py"></script> +<script> + test(t => { + t.add_cleanup(_ => { header = null; }); + + assert_header_equals(header, { + "dest": "", + "site": "", + "user": "" + }); + }, "Non-secure cross-site script => No headers"); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/select-selectedOptions.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/select-selectedOptions.html index 6a5c75f2b14..bd5984a6b27 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/select-selectedOptions.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/select-selectedOptions.html @@ -34,6 +34,12 @@ <option selected>Three</option> </select> +<select id="select-named-selected"> + <option>One</option> + <option>Two</option> + <option id="named-option" selected>Three</option> +</select> + <select id="invalid-select"> <option selected>One</option> <option selected>Two</option> @@ -104,6 +110,13 @@ test(() => { "more than one selected option should return the last one"); test(() => { + const select = document.getElementById("select-named-selected"); + + assert_equals(select.selectedOptions.constructor, HTMLCollection); + assert_equals(select.selectedOptions.namedItem("named-option"), select.children[2]); +}, ".selectedOptions should return `HTMLCollection` instance"); + +test(() => { const select = document.getElementById("select-same-object"); const selectAgain = document.getElementById("select-same-object"); diff --git a/tests/wpt/web-platform-tests/images/fyi-logo/fyi_color.svg b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_color.svg new file mode 100644 index 00000000000..760387892af --- /dev/null +++ b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_color.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 440 440" style="enable-background:new 0 0 440 440;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#7ED2EE;} + .st1{fill:#003C57;} +</style> +<g> + <rect x="61.2" y="255.3" class="st0" width="30.4" height="28.3"/> + <path class="st1" d="M159.3,103.8c-28.5,0-51.7,23.2-51.7,51.7V284H138v-60.5h28.6v-30.4H138v-37.5c0-11.8,9.6-21.4,21.4-21.4 + c11.5,0,20.8,9.1,21.3,20.4h30.4C210.6,126.5,187.6,103.8,159.3,103.8z"/> + <rect x="302" y="126.3" class="st1" width="30.4" height="28.3"/> + <polygon class="st1" points="302.1,176.1 301.9,284 332.3,284 332.4,176.1"/> + <path class="st1" d="M284.1,208.4l0-15.5l0-1l0-15.8h-30.4l-0.1,33.8c-0.8,11.1-10.1,19.9-21.3,19.9c-11.8,0-21.4-9.6-21.4-21.4 + v-32.3h-30.4v32.3c0,28.5,23.2,51.7,51.7,51.7c6.9,0,13.6-1.3,19.9-4l1.3-0.6l0,23.1h0.2v5.8c0,11.8-9.6,21.4-21.4,21.4 + c-11.5,0-20.8-9.1-21.3-20.4h-30.4c0.5,28.1,23.5,50.8,51.7,50.8c28.5,0,51.7-23.2,51.7-51.7v-3.8H284l0.1-69.9 + C284.1,209.9,284.1,209.1,284.1,208.4z"/> +</g> +</svg> diff --git a/tests/wpt/web-platform-tests/images/fyi-logo/fyi_color_bg.svg b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_color_bg.svg new file mode 100644 index 00000000000..94864b5c2c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_color_bg.svg @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 440.7 440" style="enable-background:new 0 0 440.7 440;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#003C57;} + .st1{fill:#7ED2EE;} + .st2{fill:#FFFFFF;} +</style> +<g> + <g> + <rect x="0" class="st0" width="440" height="440"/> + </g> + <g> + <rect x="61.2" y="255.3" class="st1" width="30.4" height="28.3"/> + <path class="st2" d="M159.3,103.8c-28.5,0-51.7,23.2-51.7,51.7V284H138v-60.5h28.6v-30.4H138v-37.5c0-11.8,9.6-21.4,21.4-21.4 + c11.5,0,20.8,9.1,21.3,20.4h30.4C210.6,126.5,187.6,103.8,159.3,103.8z"/> + <rect x="302" y="126.3" class="st2" width="30.4" height="28.3"/> + <polygon class="st2" points="302.1,176.1 301.9,284 332.3,284 332.4,176.1"/> + <path class="st2" d="M284.1,208.4l0-15.5l0-1l0-15.8h-30.4l-0.1,33.8c-0.8,11.1-10.1,19.9-21.3,19.9c-11.8,0-21.4-9.6-21.4-21.4 + v-32.3h-30.4v32.3c0,28.5,23.2,51.7,51.7,51.7c6.9,0,13.6-1.3,19.9-4l1.3-0.6l0,23.1h0.2v5.8c0,11.8-9.6,21.4-21.4,21.4 + c-11.5,0-20.8-9.1-21.3-20.4h-30.4c0.5,28.1,23.5,50.8,51.7,50.8c28.5,0,51.7-23.2,51.7-51.7v-3.8H284l0.1-69.9 + C284.1,209.9,284.1,209.1,284.1,208.4z"/> + </g> +</g> +</svg> diff --git a/tests/wpt/web-platform-tests/images/fyi-logo/fyi_monochromatic.svg b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_monochromatic.svg new file mode 100644 index 00000000000..bde275972b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_monochromatic.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 440 440" style="enable-background:new 0 0 440 440;" xml:space="preserve"> +<g> + <g> + <rect x="61.2" y="255.3" width="30.4" height="28.3"/> + <path d="M159.3,103.8c-28.5,0-51.7,23.2-51.7,51.7V284H138v-60.5h28.6v-30.4H138v-37.5c0-11.8,9.6-21.4,21.4-21.4 + c11.5,0,20.8,9.1,21.3,20.4h30.4C210.6,126.5,187.6,103.8,159.3,103.8z"/> + <rect x="302" y="126.3" width="30.4" height="28.3"/> + <polygon points="302.1,176.1 301.9,284 332.3,284 332.4,176.1 "/> + <path d="M284.1,208.4l0-15.5l0-1l0-15.8h-30.4l-0.1,33.8c-0.8,11.1-10.1,19.9-21.3,19.9c-11.8,0-21.4-9.6-21.4-21.4v-32.3h-30.4 + v32.3c0,28.5,23.2,51.7,51.7,51.7c6.9,0,13.6-1.3,19.9-4l1.3-0.6l0,23.1h0.2v5.8c0,11.8-9.6,21.4-21.4,21.4 + c-11.5,0-20.8-9.1-21.3-20.4h-30.4c0.5,28.1,23.5,50.8,51.7,50.8c28.5,0,51.7-23.2,51.7-51.7v-3.8H284l0.1-69.9 + C284.1,209.9,284.1,209.1,284.1,208.4z"/> + </g> +</g> +</svg> diff --git a/tests/wpt/web-platform-tests/images/fyi-logo/fyi_monochromatic_bg.svg b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_monochromatic_bg.svg new file mode 100644 index 00000000000..94c82d31a27 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/fyi-logo/fyi_monochromatic_bg.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 440.7 440" style="enable-background:new 0 0 440.7 440;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#FFFFFF;} +</style> +<g> + <g> + <rect x="0.3" width="440" height="440"/> + </g> + <g> + <rect x="61.5" y="255.3" class="st0" width="30.4" height="28.3"/> + <path class="st0" d="M159.7,103.8c-28.5,0-51.7,23.2-51.7,51.7V284h30.4v-60.5h28.6v-30.4h-28.6v-37.5c0-11.8,9.6-21.4,21.4-21.4 + c11.5,0,20.8,9.1,21.3,20.4h30.4C210.9,126.5,187.9,103.8,159.7,103.8z"/> + <rect x="302.3" y="126.3" class="st0" width="30.4" height="28.3"/> + <polygon class="st0" points="302.4,176.1 302.2,284 332.6,284 332.8,176.1 "/> + <path class="st0" d="M284.5,208.4l0-15.5l0-1l0-15.8h-30.4l-0.1,33.8c-0.8,11.1-10.1,19.9-21.3,19.9c-11.8,0-21.4-9.6-21.4-21.4 + v-32.3H181v32.3c0,28.5,23.2,51.7,51.7,51.7c6.9,0,13.6-1.3,19.9-4l1.3-0.6l0,23.1h0.2v5.8c0,11.8-9.6,21.4-21.4,21.4 + c-11.5,0-20.8-9.1-21.3-20.4H181c0.5,28.1,23.5,50.8,51.7,50.8c28.5,0,51.7-23.2,51.7-51.7v-3.8h-0.2l0.1-69.9 + C284.4,209.9,284.5,209.1,284.5,208.4z"/> + </g> +</g> +</svg> diff --git a/tests/wpt/web-platform-tests/interfaces/proximity.idl b/tests/wpt/web-platform-tests/interfaces/proximity.idl index 3b0d240a225..570a29fd37b 100644 --- a/tests/wpt/web-platform-tests/interfaces/proximity.idl +++ b/tests/wpt/web-platform-tests/interfaces/proximity.idl @@ -9,3 +9,9 @@ interface ProximitySensor : Sensor { readonly attribute double? max; readonly attribute boolean? near; }; + +dictionary ProximityReadingValues { + required double? distance; + required double? max; + required boolean? near; +}; diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index 2f94041e665..8c5a329357d 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -801,3 +801,5 @@ CSS-COLLIDING-REF-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/cont # Signed Exchange files have hard-coded URLs in the certUrl field WEB-PLATFORM.TEST:signed-exchange/resources/*.sxg WEB-PLATFORM.TEST:signed-exchange/resources/generate-test-sxgs.sh + +WEB-PLATFORM.TEST: workers/Worker-location.any.js
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/media-capabilities/encodingInfo.html b/tests/wpt/web-platform-tests/media-capabilities/encodingInfo.html index 751146c3891..08a3f7569a1 100644 --- a/tests/wpt/web-platform-tests/media-capabilities/encodingInfo.html +++ b/tests/wpt/web-platform-tests/media-capabilities/encodingInfo.html @@ -287,7 +287,19 @@ promise_test(t => { assert_equals(typeof ability.smooth, "boolean"); assert_equals(typeof ability.powerEfficient, "boolean"); }); -}, "Test that encodingInfo returns a valid MediaCapabilitiesInfo objects"); +}, "Test that encodingInfo returns a valid MediaCapabilitiesInfo objects for record type"); + +promise_test(t => { + return navigator.mediaCapabilities.encodingInfo({ + type: 'transmission', + video: minimalVideoConfiguration, + audio: minimalAudioConfiguration, + }).then(ability => { + assert_equals(typeof ability.supported, "boolean"); + assert_equals(typeof ability.smooth, "boolean"); + assert_equals(typeof ability.powerEfficient, "boolean"); + }); +}, "Test that encodingInfo returns a valid MediaCapabilitiesInfo objects for transmission type"); async_test(t => { var validTypes = [ 'record', 'transmission' ]; diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html index 77b5daaed41..341a82d97a8 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html @@ -27,7 +27,7 @@ function end_of_interaction() { test(function () { assert_equals(event_log.join(", "), - "mousedown@target1, mouseup@target1"); + "click@target0, mousedown@target1, mouseup@target1, click@target1"); }, "Event log"); test_pointerEvent.done(); // complete test @@ -38,7 +38,7 @@ var target_list = ["target0", "target1"]; var pointer_event_list = ["pointerdown"]; - var mouse_event_list = ["mousedown", "mouseup"]; + var mouse_event_list = ["mousedown", "mouseup", "click"]; target_list.forEach(function(targetId) { var target = document.getElementById(targetId); @@ -95,7 +95,7 @@ <body onload="run()"> <h1>Pointer Event: Suppress compatibility mouse events on click</h1> <h4> - When a pointerdown is canceled, a click/tap shouldn't fire any compatibility mouse events. + When a pointerdown is canceled, a click/tap shouldn't fire any compatibility mouse events except click event. </h4> <ol> <li> Click or tap on Target0.</li> diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py index d5692af77d3..05861ccd2d8 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -417,7 +417,7 @@ class MarionetteCoverageProtocolPart(CoverageProtocolPart): return script = """ - ChromeUtils.import("chrome://marionette/content/PerTestCoverageUtils.jsm"); + const {PerTestCoverageUtils} = ChromeUtils.import("resource://reftest/PerTestCoverageUtils.jsm"); return PerTestCoverageUtils.enabled; """ with self.marionette.using_context(self.marionette.CONTEXT_CHROME): @@ -427,7 +427,7 @@ class MarionetteCoverageProtocolPart(CoverageProtocolPart): script = """ var callback = arguments[arguments.length - 1]; - ChromeUtils.import("chrome://marionette/content/PerTestCoverageUtils.jsm"); + const {PerTestCoverageUtils} = ChromeUtils.import("resource://reftest/PerTestCoverageUtils.jsm"); PerTestCoverageUtils.beforeTest().then(callback, callback); """ with self.marionette.using_context(self.marionette.CONTEXT_CHROME): @@ -447,7 +447,7 @@ class MarionetteCoverageProtocolPart(CoverageProtocolPart): script = """ var callback = arguments[arguments.length - 1]; - ChromeUtils.import("chrome://marionette/content/PerTestCoverageUtils.jsm"); + const {PerTestCoverageUtils} = ChromeUtils.import("resource://reftest/PerTestCoverageUtils.jsm"); PerTestCoverageUtils.afterTest().then(callback, callback); """ with self.marionette.using_context(self.marionette.CONTEXT_CHROME): diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js b/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js new file mode 100644 index 00000000000..b3a60348494 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js @@ -0,0 +1,6 @@ +// META: global=!default,sharedworker +const t = async_test("Make sure that MessageEvent.source is properly set in connect event."); +onconnect = t.step_func_done((event) => { + assert_equals(event.__proto__, MessageEvent.prototype); + assert_equals(event.source, event.ports[0]); +}); diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-constructor.html b/tests/wpt/web-platform-tests/workers/SharedWorker-constructor.html new file mode 100644 index 00000000000..2bfe7d9b87a --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-constructor.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<title>Test SharedWorker constructor functionality.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + +test(() => { + assert_throws(new Error(), + function() { + new SharedWorker({toString:function(){throw new Error()}}, "name") }, + "toString exception not propagagted"); +}, "Test toString exception propagated correctly."); + +test(() => { + assert_throws(new RangeError(), + function() { + var foo = {toString:function(){new Worker(foo)}} + new SharedWorker(foo, name); }, + "Trying to create workers recursively did not result in an exception."); +}, "Test recursive worker creation results in exception."); + +test(() => { + assert_throws(new TypeError(), + function() { new SharedWorker(); }, + "Invoking SharedWorker constructor without arguments did not result in an exception."); +}, "Test SharedWorker creation without arguments results in exception."); + +test(() => { + try { + var worker = new SharedWorker("support/SharedWorker-common.js"); + } catch (ex) { + assert_unreached("Constructor failed when no name is passed: (" + ex + ")"); + } +}, "Test SharedWorker constructor without a name does not result in an exception."); + +test(() => { + try { + var worker = new SharedWorker("support/SharedWorker-common.js", null); + } catch (ex) { + assert_unreached("Constructor failed when null name is passed: (" + ex + ")"); + } +}, "Test SharedWorker constructor with null name does not result in an exception."); + +test(() => { + try { + var worker = new SharedWorker("support/SharedWorker-common.js", undefined); + } catch (ex) { + assert_unreached("Constructor failed when undefined name is passed: (" + ex + ")"); + } +}, "Test SharedWorker constructor with undefined name does not result in an exception."); + +test(() => { + try { + var worker = new SharedWorker("support/SharedWorker-common.js", "name"); + } catch (ex) { + assert_unreached("Invoking SharedWorker constructor resulted in an exception: (" + ex + ")"); + } +}, "Test SharedWorker constructor suceeds."); + +</script> diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-exception-propagation.html b/tests/wpt/web-platform-tests/workers/SharedWorker-exception-propagation.html new file mode 100644 index 00000000000..5823a19a4bf --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-exception-propagation.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>Uncaught error in shared worker should not propagate to window</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/workers.html#runtime-script-errors-2"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/SharedWorker-create-common.js"></script> +<script> +// Suppress the default handling of the error event so that a failure +// manifests as a failed test and not a harness error. +setup({ allow_uncaught_exception: true }); + +async_test(function(t) { + addEventListener("error", t.unreached_func("error event fired")); + var worker = createWorker(); + worker.postMessage("throw"); + worker.postMessage("ping"); + var pongs = 0; + worker.onmessage = function(evt) { + // Wait for response from ping - that's how we know we have thrown the exception. + if (evt.data == "PASS: Received ping message") { + pongs++; + if (pongs == 1) { + // Send another "ping" message and wait for the response before + // ending the test, so that any error propagation that is now + // in flight will have finished. + worker.postMessage("ping"); + } else { + t.done(); + } + } + }; +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-exception.html b/tests/wpt/web-platform-tests/workers/SharedWorker-exception.html new file mode 100644 index 00000000000..28b85848572 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-exception.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<title>This test checks whether exceptions in SharedWorkers are logged to the parent document. An exception should be logged to the error console.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/SharedWorker-create-common.js"></script> +<script> +// Ignore any error event fired on window in this test. This is tested +// separately in SharedWorker-exception-propagation.html. +setup({ allow_uncaught_exception: true }); + +async_test(function(t) { + var worker = createWorker(); + worker.postMessage("throw"); + worker.postMessage("ping"); + worker.onmessage = function(evt) { + // Wait for response from ping - that's how we know we have thrown the exception. + if (evt.data == "PASS: Received ping message") { + t.done(); + } + }; +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-replace-EventHandler.any.js b/tests/wpt/web-platform-tests/workers/SharedWorker-replace-EventHandler.any.js new file mode 100644 index 00000000000..be9d71257a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-replace-EventHandler.any.js @@ -0,0 +1,15 @@ +// META: global=!default,sharedworker +// https://crbug.com/239669 +const t = async_test("Tests that repeatedly setting 'onerror' within a shared worker doesnt crash."); +onconnect = t.step_func_done((event) => { + function update() { + onerror = undefined; + } + try { + for (var i = 0; i < 8; ++i) { + update(); + } + } catch (ex) { + assert_unreached("FAIL: unexpected exception (" + ex + ") received while updating onerror event handler."); + } +}); diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-script-error.html b/tests/wpt/web-platform-tests/workers/SharedWorker-script-error.html new file mode 100644 index 00000000000..3c93cc038f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-script-error.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<title>Test SharedWorker script error handling functionality.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +promise_test(t => { + let worker; + + return new Promise((resolve) => { + worker = new SharedWorker("support/SharedWorker-script-error.js"); + // Shared workers should only invoke onerror for loading errors. + worker.onerror = function(evt) { + assert_unreached("FAIL: onerror invoked for a script error."); + }; + worker.port.postMessage("unhandledError"); + worker.port.onmessage = resolve; + }).then(e => { + assert_equals(e.data, "SUCCESS: unhandled error generated"); + }); +}, 'Test script error unhandled.') + +promise_test(t => { + let worker; + + return new Promise((resolve) => { + worker = new SharedWorker("support/SharedWorker-script-error.js"); + // Shared workers should only invoke onerror for loading errors. + worker.onerror = function(evt) { + assert_unreached("FAIL: onerror invoked for a script error."); + }; + worker.port.postMessage("handledError"); + worker.port.onmessage = resolve; + }).then(e => { + assert_equals(e.data, "SUCCESS: error handled via onerror"); + }); +}, 'Test script error handled.') +</script> diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-simple.html b/tests/wpt/web-platform-tests/workers/SharedWorker-simple.html new file mode 100644 index 00000000000..7cd3f4f3be6 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/SharedWorker-simple.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<title>Test simple shared worker construction case.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +promise_test(t => { + let worker; + + return new Promise(resolve => { + worker = new SharedWorker('support/SharedWorker-common.js', 'name'); + worker.port.postMessage("ping"); + worker.port.onmessage = resolve; + }).then(e => { + assert_equals(e.data, "PASS: Received ping message"); + }); +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/Worker-base64.any.js b/tests/wpt/web-platform-tests/workers/Worker-base64.any.js new file mode 100644 index 00000000000..b5957f201f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-base64.any.js @@ -0,0 +1,5 @@ +// META: global=!default,worker +test(() => { + assert_true(typeof atob === 'function'); + assert_true(typeof btoa === 'function'); +}, 'Tests that atob() / btoa() functions are exposed to workers'); diff --git a/tests/wpt/web-platform-tests/workers/Worker-call.worker.js b/tests/wpt/web-platform-tests/workers/Worker-call.worker.js new file mode 100644 index 00000000000..ba07498880c --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-call.worker.js @@ -0,0 +1,12 @@ +importScripts("/resources/testharness.js"); +test(() => { + try { + postMessage("SUCCESS: postMessage() called directly"); + postMessage.call(null, "SUCCESS: postMessage() invoked via postMessage.call()"); + var saved = postMessage; + saved("SUCCESS: postMessage() called via intermediate variable"); + } catch (ex) { + assert_unreached("FAIL: unexpected exception (" + ex + ") received while calling functions from the worker context."); + } +}, 'Test calling functions from WorkerContext.'); +done(); diff --git a/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js b/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js new file mode 100644 index 00000000000..73eabd55226 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js @@ -0,0 +1,7 @@ +//META: global=!default, worker +test(() => { + proto = new Number(42) + assert_equals(String(Object.getPrototypeOf(WorkerLocation)), "function () { [native code] }"); + WorkerLocation.__proto__ = proto; + assert_object_equals(Object.getPrototypeOf(WorkerLocation), Object(42)); +}, 'Tests that setting the proto of a built in constructor is not reset.'); diff --git a/tests/wpt/web-platform-tests/workers/Worker-location.any.js b/tests/wpt/web-platform-tests/workers/Worker-location.any.js new file mode 100644 index 00000000000..c2a4590b75a --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-location.any.js @@ -0,0 +1,14 @@ +// META: global=!default, dedicatedworker, sharedworker +test(() => { + assert_equals(String(WorkerLocation), "function WorkerLocation() { [native code] }"); + assert_true(location instanceof Object); + assert_equals(location.href, "http://web-platform.test:8001/workers/Worker-location.any.worker.js") + assert_equals(location.origin, "http://web-platform.test:8001"); + assert_equals(location.protocol, "http:"); + assert_equals(location.host, "web-platform.test:8001"); + assert_equals(location.hostname, "web-platform.test"); + assert_equals(location.port, "8001"); + assert_equals(location.pathname, "/workers/Worker-location.any.worker.js"); + assert_equals(location.search, ""); + assert_equals(location.hash, ""); +}, 'Test WorkerLocation properties.'); diff --git a/tests/wpt/web-platform-tests/workers/Worker-replace-global-constructor.any.js b/tests/wpt/web-platform-tests/workers/Worker-replace-global-constructor.any.js new file mode 100644 index 00000000000..f208f373636 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-replace-global-constructor.any.js @@ -0,0 +1,9 @@ +// META: global=!default,worker +test(() => { + try { + self.MessageEvent = 'PASS'; + assert_equals(self.MessageEvent, 'PASS'); + } catch (ex) { + assert_unreached("FAIL: unexpected exception (" + ex + ") received while replacing global constructor MessageEvent."); + } +}, 'Test replacing global constructors in a worker context.'); diff --git a/tests/wpt/web-platform-tests/workers/Worker-replace-self.any.js b/tests/wpt/web-platform-tests/workers/Worker-replace-self.any.js new file mode 100644 index 00000000000..6e732c0730d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-replace-self.any.js @@ -0,0 +1,9 @@ +// META: global=!default,worker +test(() => { + try { + self = 'PASS'; + assert_true(self instanceof WorkerGlobalScope); + } catch (ex) { + assert_unreached("FAIL: unexpected exception (" + ex + ") received while replacing self."); + } +}, 'Test that self is not replaceable.'); diff --git a/tests/wpt/web-platform-tests/workers/Worker-simultaneous-errors.html b/tests/wpt/web-platform-tests/workers/Worker-simultaneous-errors.html new file mode 100644 index 00000000000..4339f2e3343 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-simultaneous-errors.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>Test simultaneous errors on workers.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +promise_test(t => { + var workers = 4; + var promises = []; + + for (i = 0; i < workers; ++i) { + var worker = new Worker('support/throw-on-message-Worker.js'); + promises.push(new Promise(function(resolve, reject) { + var error = 0; + worker.onmessage = function(event) { + if (event.data === 'second') + resolve(error); + else if (event.data === 'error') + ++error; + } + })); + worker.postMessage('first'); + worker.postMessage('second'); + } + + return Promise.all(promises).then(e => { + var sum = 0; + for (var key in e) { + sum += e[key] + } + assert_equals(sum, workers); + }); +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/Worker-termination-with-port-messages.html b/tests/wpt/web-platform-tests/workers/Worker-termination-with-port-messages.html new file mode 100644 index 00000000000..bc19784adae --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/Worker-termination-with-port-messages.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<title>This test terminates a worker when there are many undelivered MessagePort messages still waiting to be dispatched into the Worker Context. This causes termination of JS execution and test should not try to dispatch the remaining messages. Test succeeds if it does not hang or crash (if worker thread is running in the separate process, that process could hang or crash).</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +async_test(function(t) { + var worker = new Worker("support/Worker-termination-with-port-messages.js"); + var channel = new MessageChannel(); + + channel.port2.onmessage = function(evt) + { + // On first message back from worker, terminate it. + worker.terminate(); + t.done(); + } + channel.port2.start(); + + worker.postMessage("", [channel.port1]); + for (i = 0; i < 1000; i++) + channel.port2.postMessage("message to worker"); +}); +</script> diff --git a/tests/wpt/web-platform-tests/workers/WorkerNavigator.any.js b/tests/wpt/web-platform-tests/workers/WorkerNavigator.any.js new file mode 100644 index 00000000000..3588045c490 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/WorkerNavigator.any.js @@ -0,0 +1,12 @@ +// META: global=!default, worker +test(() => { + assert_equals(typeof navigator, "object"); + assert_true(navigator instanceof WorkerNavigator); + assert_equals(navigator.appName, "Netscape"); + assert_true(navigator.appVersion.indexOf('WebKit') != 0); + assert_equals(typeof navigator.platform, "string"); + assert_true(navigator.userAgent.indexOf('WebKit') != 0); + assert_equals(typeof navigator.onLine, "boolean"); + assert_equals(navigator.appCodeName, 'Mozilla'); + assert_equals(navigator.product, 'Gecko'); +}, "Testing Navigator properties on workers."); diff --git a/tests/wpt/web-platform-tests/workers/support/SharedWorker-common.js b/tests/wpt/web-platform-tests/workers/support/SharedWorker-common.js new file mode 100644 index 00000000000..1c1dac39714 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/SharedWorker-common.js @@ -0,0 +1,32 @@ +function generateError() +{ + // Generate an exception by accessing an undefined variable. + foo.bar = 0; +} + +onconnect = function(event) { + event.ports[0].onmessage = function(evt) { handleMessage(evt, event.ports[0]); }; +}; + +function handleMessage(event, port) { + self.port = port; + if (event.data == "ping") + port.postMessage("PASS: Received ping message"); + else if (event.data == "close") + close(); + else if (event.data == "done") + port.postMessage("DONE"); + else if (event.data == "throw") + generateError(); + else if (event.data == "testingNameAttribute") + port.postMessage(self.name); + else if (/eval.+/.test(event.data)) { + try { + port.postMessage(event.data.substr(5) + ": " + eval(event.data.substr(5))); + } catch (ex) { + port.postMessage(event.data.substr(5) + ": " + ex); + } + } + else + port.postMessage("FAILURE: Received unknown message: " + event.data); +} diff --git a/tests/wpt/web-platform-tests/workers/support/SharedWorker-create-common.js b/tests/wpt/web-platform-tests/workers/support/SharedWorker-create-common.js new file mode 100644 index 00000000000..1d06174f12d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/SharedWorker-create-common.js @@ -0,0 +1,8 @@ +// Make a SharedWorker that has the same external interface as a DedicatedWorker, to use in shared test code. +function createWorker() +{ + var worker = new SharedWorker('support/SharedWorker-common.js', 'name'); + worker.port.onmessage = function(evt) { worker.onmessage(evt); }; + worker.postMessage = function(msg, port) { worker.port.postMessage(msg, port); }; + return worker; +} diff --git a/tests/wpt/web-platform-tests/workers/support/SharedWorker-script-error.js b/tests/wpt/web-platform-tests/workers/support/SharedWorker-script-error.js new file mode 100644 index 00000000000..0e78949d97b --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/SharedWorker-script-error.js @@ -0,0 +1,22 @@ +onconnect = function(event) { + event.ports[0].onmessage = function(evt) { handleMessage(evt, event.ports[0]); }; +}; + +function handleMessage(event, port) { + if (event.data == "unhandledError") { + // Generate an unhandled error. + onerror = null; + setTimeout(function() { + port.postMessage("SUCCESS: unhandled error generated"); + }, 100); + generateError(); // Undefined function call + } else if (event.data == "handledError") { + onerror = function() { + port.postMessage("SUCCESS: error handled via onerror"); + return true; + }; + generateError(); // Undefined function call + } else { + port.postMessage("FAIL: Got unexpected message: " + event.data); + } +}; diff --git a/tests/wpt/web-platform-tests/workers/support/Worker-common.js b/tests/wpt/web-platform-tests/workers/support/Worker-common.js new file mode 100644 index 00000000000..55188fe913c --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/Worker-common.js @@ -0,0 +1,16 @@ +onmessage = function(evt) +{ + if (evt.data == "ping") + postMessage("pong"); + else if (evt.data == "freeze") + while (1) {} + else if (evt.data == "close") + close(); + else if (/eval.+/.test(evt.data)) { + try { + postMessage(evt.data.substr(5) + ": " + eval(evt.data.substr(5))); + } catch (ex) { + postMessage(evt.data.substr(5) + ": " + ex); + } + } +} diff --git a/tests/wpt/web-platform-tests/workers/support/Worker-create-common.js b/tests/wpt/web-platform-tests/workers/support/Worker-create-common.js new file mode 100644 index 00000000000..f0b8efe46bd --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/Worker-create-common.js @@ -0,0 +1,4 @@ +function createWorker() +{ + return new Worker('support/Worker-common.js'); +} diff --git a/tests/wpt/web-platform-tests/workers/support/Worker-termination-with-port-messages.js b/tests/wpt/web-platform-tests/workers/support/Worker-termination-with-port-messages.js new file mode 100644 index 00000000000..a827db357e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/Worker-termination-with-port-messages.js @@ -0,0 +1,10 @@ +function echo(evt) +{ + evt.target.postMessage(evt.data); +} + +onmessage = function(evt) +{ + evt.ports[0].onmessage = echo; + evt.ports[0].start(); +} diff --git a/tests/wpt/web-platform-tests/workers/support/throw-on-message-Worker.js b/tests/wpt/web-platform-tests/workers/support/throw-on-message-Worker.js new file mode 100644 index 00000000000..3648f1f4785 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/throw-on-message-Worker.js @@ -0,0 +1,11 @@ +self.onerror = function(evt) { + postMessage('error'); + return true; +} + +self.onmessage = function(evt) { + if (evt.data === "first") + throw Error(); + else + postMessage(evt.data); +} |