From fb0507d17451ae1f0fb74a6a8a98cde02646f979 Mon Sep 17 00:00:00 2001 From: WPT Sync Bot Date: Tue, 12 May 2020 08:18:49 +0000 Subject: [PATCH] Update web-platform-tests to revision a49081e46a18e439defbd77d18cc5e261d68b215 --- .../borders/border-top-applies-to-009.xht.ini | 2 + .../CSS2/floats/hit-test-floats-003.html.ini | 4 + .../CSS2/floats/hit-test-floats-005.html.ini | 4 - .../transform-scale-hittest.html.ini | 3 - .../outline-width-interpolation.html.ini | 228 ++++-------- ...ryList-addListener-removeListener.html.ini | 3 + .../cssom-view/elementFromPoint-001.html.ini | 4 - .../elementsFromPoint-invalid-cases.html.ini | 4 + .../fetch/content-type/response.window.js.ini | 15 +- .../fetch/content-type/script.window.js.ini | 5 +- .../nosniff/parsing-nosniff.window.js.ini | 2 +- .../traverse_the_history_1.html.ini | 4 - .../traverse_the_history_2.html.ini | 4 - .../traverse_the_history_5.html.ini | 4 - .../iframe_sandbox_popups_escaping-3.html.ini | 2 +- .../webmessaging/without-ports/017.html.ini | 5 + tests/wpt/metadata/MANIFEST.json | 138 +++++-- .../borders/border-top-applies-to-009.xht.ini | 2 + .../CSS2/floats/hit-test-floats-003.html.ini | 4 + .../CSS2/floats/hit-test-floats-005.html.ini | 4 - .../transform-scale-hittest.html.ini | 3 - .../outline-width-interpolation.html.ini | 72 ++++ ...ryList-addListener-removeListener.html.ini | 3 + .../cssom-view/elementFromPoint-001.html.ini | 4 - .../elementsFromPoint-invalid-cases.html.ini | 4 + .../fetch/content-type/response.window.js.ini | 15 +- .../fetch/content-type/script.window.js.ini | 5 +- .../nosniff/parsing-nosniff.window.js.ini | 2 +- .../traverse_the_history_1.html.ini | 4 - .../traverse_the_history_2.html.ini | 4 - .../traverse_the_history_5.html.ini | 4 - .../iframe_sandbox_popups_escaping-3.html.ini | 2 +- ...ginal-referrer-policy-applied.sub.html.ini | 4 - .../webmessaging/without-ports/017.html.ini | 5 + .../css/css-overflow/scrollbar-empty-001.html | 12 + ...osition-absolute-dynamic-relayout-003.html | 14 + ...absolute-dynamic-static-position-flex.html | 12 + .../css/css-ruby/ruby-reflow-001-noruby.html | 2 +- .../css-ruby/ruby-reflow-001-opaqueruby.html | 2 +- .../ruby-reflow-001-transparentruby.html | 2 +- .../css/css-ruby/ruby-whitespace-001-ref.html | 2 +- .../css/css-ruby/ruby-whitespace-001.html | 2 +- .../css/css-ruby/ruby-whitespace-002-ref.html | 2 +- .../css/css-ruby/ruby-whitespace-002.html | 2 +- .../auto-scrollbar-inline-children.html | 2 +- .../outline-width-interpolation.html | 20 +- .../parsing/outline-width-computed.html | 1 + ...rage-reporting-dedicated-worker.https.html | 50 +-- ...ache-storage-reporting-document.https.html | 45 ++- ...torage-reporting-service-worker.https.html | 57 +-- ...storage-reporting-shared-worker.https.html | 45 +-- .../reporting-subresource-corp.https.html | 161 +++++++++ .../resources/cache-storage-reporting.js | 71 +--- .../resources/reporting-worker.js | 25 ++ ...y-referrerpolicy-change.sub.tentative.html | 45 +++ ...e-loading-lazy-crossorigin-change.sub.html | 30 +- ...oading-lazy-referrerpolicy-change.sub.html | 46 +++ .../original-referrer-policy-applied.sub.html | 51 --- ...referrer-origin-when-cross-origin.sub.html | 2 +- .../the-navigator-object/protocol.https.html | 8 +- tests/wpt/web-platform-tests/lint.ignore | 1 + .../scroll-animations/finish-animation.html | 342 ++++++++++++++++++ .../tools/ci/tc/tasks/test.yml | 1 + .../web-platform-tests/tools/wpt/browser.py | 80 ++-- .../tools/wpt/commands.json | 1 - .../tools/wptrunner/requirements_firefox.txt | 1 - .../wptrunner/wptrunner/executors/actions.py | 184 ++++++++++ .../wptrunner/wptrunner/executors/base.py | 163 +-------- ...nnection-addIceCandidate-timing.https.html | 54 +++ 69 files changed, 1412 insertions(+), 698 deletions(-) create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/borders/border-top-applies-to-009.xht.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini create mode 100644 tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini create mode 100644 tests/wpt/metadata/css/CSS2/borders/border-top-applies-to-009.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini delete mode 100644 tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini delete mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html.ini create mode 100644 tests/wpt/metadata/webmessaging/without-ports/017.html.ini create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/scrollbar-empty-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-relayout-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-static-position-flex.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/reporting-worker.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-referrerpolicy-change.sub.tentative.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-referrerpolicy-change.sub.html delete mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html create mode 100644 tests/wpt/web-platform-tests/scroll-animations/finish-animation.html create mode 100644 tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/actions.py diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/borders/border-top-applies-to-009.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/borders/border-top-applies-to-009.xht.ini new file mode 100644 index 00000000000..8616a7600aa --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/borders/border-top-applies-to-009.xht.ini @@ -0,0 +1,2 @@ +[border-top-applies-to-009.xht] + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini new file mode 100644 index 00000000000..f29da48a2a0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-003.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini index f8e7e539aae..4a1e8110f6f 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini @@ -2,6 +2,3 @@ [Hit test intersecting scaled box] expected: FAIL - [Hit test within unscaled box] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/animation/outline-width-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/animation/outline-width-interpolation.html.ini index 46930e193e1..793a69957e5 100644 --- a/tests/wpt/metadata-layout-2020/css/css-ui/animation/outline-width-interpolation.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-ui/animation/outline-width-interpolation.html.ini @@ -1,16 +1,10 @@ [outline-width-interpolation.html] - [CSS Transitions with transition: all: property from [inherit\] to [20px\] at (1.5) should be [15px\]] - expected: FAIL - [Web Animations: property from [inherit\] to [20px\] at (0.3) should be [27px\]] expected: FAIL [CSS Animations: property from [inherit\] to [20px\] at (1.5) should be [15px\]] expected: FAIL - [CSS Transitions: property from neutral to [20px\] at (0.3) should be [13px\]] - expected: FAIL - [CSS Transitions: property from [initial\] to [20px\] at (1) should be [20px\]] expected: FAIL @@ -23,27 +17,15 @@ [Web Animations: property from neutral to [20px\] at (0) should be [10px\]] expected: FAIL - [CSS Transitions with transition: all: property from [0px\] to [10px\] at (0) should be [0px\]] - expected: FAIL - [CSS Transitions: property from [initial\] to [20px\] at (0.6) should be [13px\]] expected: FAIL - [CSS Transitions: property from [inherit\] to [20px\] at (0.6) should be [24px\]] - expected: FAIL - [Web Animations: property from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL [CSS Animations: property from [inherit\] to [20px\] at (-0.3) should be [33px\]] expected: FAIL - [CSS Transitions: property from [0px\] to [10px\] at (1) should be [10px\]] - expected: FAIL - - [CSS Transitions: property from [thick\] to [15px\] at (-2) should be [0px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [initial\] to [20px\] at (1) should be [20px\]] expected: FAIL @@ -65,36 +47,18 @@ [CSS Animations: property from [unset\] to [20px\] at (0) should be [3px\]] expected: FAIL - [CSS Transitions: property from [inherit\] to [20px\] at (0) should be [30px\]] - expected: FAIL - [Web Animations: property from [initial\] to [20px\] at (1) should be [20px\]] expected: FAIL [Web Animations: property from [unset\] to [20px\] at (0.3) should be [8px\]] expected: FAIL - [CSS Transitions: property from neutral to [20px\] at (0.6) should be [16px\]] - expected: FAIL - - [CSS Transitions: property from [thick\] to [15px\] at (0.3) should be [8px\]] - expected: FAIL - [Web Animations: property from [unset\] to [20px\] at (0.6) should be [13px\]] expected: FAIL - [CSS Transitions with transition: all: property from neutral to [20px\] at (0.3) should be [13px\]] - expected: FAIL - - [CSS Transitions: property from [inherit\] to [20px\] at (1) should be [20px\]] - expected: FAIL - [CSS Animations: property from [unset\] to [20px\] at (0.6) should be [13px\]] expected: FAIL - [CSS Transitions with transition: all: property from [0px\] to [10px\] at (-0.3) should be [0px\]] - expected: FAIL - [Web Animations: property from [thick\] to [15px\] at (-2) should be [0px\]] expected: FAIL @@ -110,33 +74,21 @@ [Web Animations: property from neutral to [20px\] at (1) should be [20px\]] expected: FAIL - [CSS Transitions: property from [inherit\] to [20px\] at (-0.3) should be [33px\]] - expected: FAIL - [Web Animations: property from [0px\] to [10px\] at (0) should be [0px\]] expected: FAIL - [CSS Transitions with transition: all: property from [inherit\] to [20px\] at (0.6) should be [24px\]] - expected: FAIL - [CSS Animations: property from [inherit\] to [20px\] at (0.3) should be [27px\]] expected: FAIL [Web Animations: property from [thick\] to [15px\] at (1.5) should be [20px\]] expected: FAIL - [CSS Transitions with transition: all: property from neutral to [20px\] at (0.6) should be [16px\]] - expected: FAIL - [Web Animations: property from [thick\] to [15px\] at (1) should be [15px\]] expected: FAIL [Web Animations: property from [inherit\] to [20px\] at (0.6) should be [24px\]] expected: FAIL - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (0.6) should be [11px\]] - expected: FAIL - [CSS Animations: property from [unset\] to [20px\] at (0.3) should be [8px\]] expected: FAIL @@ -149,12 +101,6 @@ [Web Animations: property from [unset\] to [20px\] at (0) should be [3px\]] expected: FAIL - [CSS Transitions: property from [0px\] to [10px\] at (-0.3) should be [0px\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [inherit\] to [20px\] at (1) should be [20px\]] - expected: FAIL - [Web Animations: property from [initial\] to [20px\] at (0.3) should be [8px\]] expected: FAIL @@ -170,57 +116,33 @@ [CSS Animations: property from [thick\] to [15px\] at (1.5) should be [20px\]] expected: FAIL - [CSS Transitions with transition: all: property from [0px\] to [10px\] at (0.6) should be [6px\]] - expected: FAIL - [CSS Transitions: property from [unset\] to [20px\] at (-0.3) should be [0px\]] expected: FAIL [Web Animations: property from [unset\] to [20px\] at (-0.3) should be [0px\]] expected: FAIL - [CSS Transitions: property from [thick\] to [15px\] at (0) should be [5px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [unset\] to [20px\] at (0.3) should be [8px\]] expected: FAIL - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (-0.3) should be [2px\]] - expected: FAIL - [CSS Animations: property from [inherit\] to [20px\] at (0) should be [30px\]] expected: FAIL - [CSS Transitions with transition: all: property from [inherit\] to [20px\] at (-0.3) should be [33px\]] - expected: FAIL - [CSS Animations: property from neutral to [20px\] at (1.5) should be [25px\]] expected: FAIL [Web Animations: property from [thick\] to [15px\] at (0) should be [5px\]] expected: FAIL - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (1.5) should be [20px\]] - expected: FAIL - [CSS Animations: property from [unset\] to [20px\] at (1) should be [20px\]] expected: FAIL - [CSS Transitions: property from [0px\] to [10px\] at (0) should be [0px\]] - expected: FAIL - [CSS Transitions: property from [initial\] to [20px\] at (-0.3) should be [0px\]] expected: FAIL - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (1) should be [15px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [initial\] to [20px\] at (0) should be [3px\]] expected: FAIL - [CSS Animations: property from [0px\] to [10px\] at (1) should be [10px\]] - expected: FAIL - [CSS Animations: property from [initial\] to [20px\] at (1.5) should be [28px\]] expected: FAIL @@ -233,57 +155,24 @@ [Web Animations: property from [unset\] to [20px\] at (1) should be [20px\]] expected: FAIL - [CSS Transitions with transition: all: property from neutral to [20px\] at (1) should be [20px\]] - expected: FAIL - - [CSS Transitions: property from [inherit\] to [20px\] at (1.5) should be [15px\]] - expected: FAIL - [CSS Animations: property from neutral to [20px\] at (-0.3) should be [7px\]] expected: FAIL - [CSS Transitions: property from [thick\] to [15px\] at (-0.3) should be [2px\]] - expected: FAIL - [CSS Animations: property from [inherit\] to [20px\] at (0.6) should be [24px\]] expected: FAIL - [CSS Transitions: property from [thick\] to [15px\] at (0.6) should be [11px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [initial\] to [20px\] at (1.5) should be [28px\]] expected: FAIL - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (0.3) should be [8px\]] - expected: FAIL - - [CSS Transitions with transition: all: property from neutral to [20px\] at (-0.3) should be [7px\]] - expected: FAIL - [CSS Animations: property from [0px\] to [10px\] at (1.5) should be [15px\]] expected: FAIL - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (-2) should be [0px\]] - expected: FAIL - - [CSS Transitions: property from [thick\] to [15px\] at (1) should be [15px\]] - expected: FAIL - [CSS Animations: property from [initial\] to [20px\] at (-0.3) should be [0px\]] expected: FAIL - [CSS Transitions: property from [thick\] to [15px\] at (1.5) should be [20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property from neutral to [20px\] at (1.5) should be [25px\]] - expected: FAIL - [CSS Animations: property from [thick\] to [15px\] at (-2) should be [0px\]] expected: FAIL - [CSS Transitions: property from neutral to [20px\] at (0) should be [10px\]] - expected: FAIL - [CSS Transitions: property from [unset\] to [20px\] at (0) should be [3px\]] expected: FAIL @@ -293,27 +182,18 @@ [CSS Animations: property from [0px\] to [10px\] at (0.3) should be [3px\]] expected: FAIL - [CSS Transitions: property from [inherit\] to [20px\] at (0.3) should be [27px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [initial\] to [20px\] at (0.6) should be [13px\]] expected: FAIL [Web Animations: property from [thick\] to [15px\] at (0.6) should be [11px\]] expected: FAIL - [CSS Transitions with transition: all: property from [inherit\] to [20px\] at (0) should be [30px\]] - expected: FAIL - [Web Animations: property from neutral to [20px\] at (-0.3) should be [7px\]] expected: FAIL [Web Animations: property from [0px\] to [10px\] at (1.5) should be [15px\]] expected: FAIL - [CSS Transitions: property from [0px\] to [10px\] at (1.5) should be [15px\]] - expected: FAIL - [CSS Animations: property from [thick\] to [15px\] at (1) should be [15px\]] expected: FAIL @@ -329,33 +209,18 @@ [Web Animations: property from [thick\] to [15px\] at (-0.3) should be [2px\]] expected: FAIL - [CSS Transitions: property from [0px\] to [10px\] at (0.6) should be [6px\]] - expected: FAIL - [CSS Animations: property from [initial\] to [20px\] at (0.6) should be [13px\]] expected: FAIL [CSS Animations: property from [unset\] to [20px\] at (-0.3) should be [0px\]] expected: FAIL - [CSS Transitions: property from [0px\] to [10px\] at (0.3) should be [3px\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [thick\] to [15px\] at (0) should be [5px\]] - expected: FAIL - [CSS Animations: property from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL [Web Animations: property from neutral to [20px\] at (0.3) should be [13px\]] expected: FAIL - [CSS Transitions: property from neutral to [20px\] at (1) should be [20px\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [0px\] to [10px\] at (1.5) should be [15px\]] - expected: FAIL - [Web Animations: property from [initial\] to [20px\] at (0) should be [3px\]] expected: FAIL @@ -380,9 +245,6 @@ [CSS Animations: property from [thick\] to [15px\] at (0.6) should be [11px\]] expected: FAIL - [CSS Transitions with transition: all: property from [0px\] to [10px\] at (0.3) should be [3px\]] - expected: FAIL - [CSS Transitions: property from [unset\] to [20px\] at (0.6) should be [13px\]] expected: FAIL @@ -392,9 +254,6 @@ [CSS Animations: property from [inherit\] to [20px\] at (1) should be [20px\]] expected: FAIL - [CSS Transitions: property from neutral to [20px\] at (1.5) should be [25px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [initial\] to [20px\] at (0.3) should be [8px\]] expected: FAIL @@ -413,18 +272,9 @@ [CSS Transitions with transition: all: property from [initial\] to [20px\] at (-0.3) should be [0px\]] expected: FAIL - [CSS Transitions with transition: all: property from [0px\] to [10px\] at (1) should be [10px\]] - expected: FAIL - [CSS Transitions with transition: all: property from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL - [CSS Transitions with transition: all: property from neutral to [20px\] at (0) should be [10px\]] - expected: FAIL - - [CSS Transitions with transition: all: property from [inherit\] to [20px\] at (0.3) should be [27px\]] - expected: FAIL - [CSS Animations: property from [0px\] to [10px\] at (-0.3) should be [0px\]] expected: FAIL @@ -434,12 +284,78 @@ [CSS Transitions: property from [unset\] to [20px\] at (0.3) should be [8px\]] expected: FAIL - [CSS Transitions: property from neutral to [20px\] at (-0.3) should be [7px\]] - expected: FAIL - - [CSS Animations: property from neutral to [20px\] at (0) should be [10px\]] - expected: FAIL - [CSS Transitions: property from [unset\] to [20px\] at (1.5) should be [28px\]] expected: FAIL + [CSS Animations: property from [unset\] to [23px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [23px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [23px\] at (1.5) should be [33px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [23px\] at (0.6) should be [15px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [23px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [23px\] at (0.6) should be [15px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [23px\] at (1) should be [23px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [23px\] at (0.3) should be [9px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [23px\] at (0) should be [3px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [23px\] at (1) should be [23px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [23px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [23px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [23px\] at (0.3) should be [9px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [23px\] at (1.5) should be [33px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [23px\] at (0.3) should be [9px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [23px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [23px\] at (1) should be [23px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [23px\] at (1) should be [23px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [23px\] at (0.3) should be [9px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [23px\] at (1.5) should be [33px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [23px\] at (0.6) should be [15px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [23px\] at (0) should be [3px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [23px\] at (0.6) should be [15px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [23px\] at (1.5) should be [33px\]] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 628b1fab770..c884dc82eab 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,3 +2,6 @@ [listeners are called when + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html index 13560324854..3fb827df2d6 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html @@ -9,22 +9,32 @@
- + onload="img.resolve();" onerror="img.reject();"> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-referrerpolicy-change.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-referrerpolicy-change.sub.html new file mode 100644 index 00000000000..307d9571b49 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-referrerpolicy-change.sub.html @@ -0,0 +1,46 @@ + + + Deferred loading=lazy images are fetched with the latest + `referrerpolicy` attribute + + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html deleted file mode 100644 index c300119f72f..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/original-referrer-policy-applied.sub.html +++ /dev/null @@ -1,51 +0,0 @@ - - - Deferred iframes and images with loading='lazy' use the original referrer-policy specified at the parse time - - - - - - - - - - - -
- - - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub.html index 4cd427ee887..fd4c1ea4964 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub.html @@ -24,7 +24,7 @@ import { referrer as referrerRemoteRemote } from "http://{{domains[www1]}}:{{por import { referrer as referrerRemoteSame } from "http://{{domains[www1]}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/module/resources/import-same-origin-referrer-checker-from-remote-origin.sub.js?name=remote_same"; const origin = (new URL(location.href)).origin + "/"; -const remoteOrigin = "http://{{domains[www1]}}:{{ports[http][0]}}/"; +const remoteOrigin = new URL("http://{{domains[www1]}}:{{ports[http][0]}}/").origin + "/"; test(t => { assert_equals( diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html index d8b3e55d751..d8e064d66fa 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html @@ -59,7 +59,7 @@ test(() => { test(() => { assert_throws_dom('SYNTAX_ERR', () => { navigator.unregisterProtocolHandler('mailto', url); }); - assert_throws_dom('SECURITY_ERR', () => { navigator.registerProtocolHandler('x', url, 'foo'); }); + assert_throws_dom('SECURITY_ERR', () => { navigator.unregisterProtocolHandler('x', url, 'foo'); }); }, `unregisterProtocolHandler: Invalid URL "${url}" should throw (but after scheme)`); }); @@ -74,14 +74,16 @@ test(() => { `ftp://${location.host}/%s`, `chrome://${location.host}/%s`, `foo://${location.host}/%s`, + URL.createObjectURL(new Blob()) + "#%s", ].forEach(url => { + const title = url.startsWith("blob:") ? "blob: URL" : url; test(() => { assert_throws_dom('SECURITY_ERR', () => { navigator.registerProtocolHandler('mailto', url, 'foo'); }); - }, 'registerProtocolHandler: Invalid URL "' + url + '" should throw SECURITY_ERR.'); + }, `registerProtocolHandler: Invalid URL "${title}" should throw SECURITY_ERR.`); test(() => { assert_throws_dom('SECURITY_ERR', () => { navigator.unregisterProtocolHandler('mailto', url); }); - }, 'unregisterProtocolHandler: Invalid URL "' + url + '" should throw SECURITY_ERR.'); + }, `unregisterProtocolHandler: Invalid URL "${title}" should throw SECURITY_ERR.`); }); /* Protocol argument */ diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index acdeddbff39..49f88ddc7b3 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -298,6 +298,7 @@ SET TIMEOUT: html/browsers/windows/auxiliary-browsing-contexts/resources/close-o SET TIMEOUT: html/cross-origin-embedder-policy/resources/navigate-none.sub.html SET TIMEOUT: html/cross-origin-embedder-policy/resources/navigate-require-corp.sub.html SET TIMEOUT: html/cross-origin-embedder-policy/resources/navigate-require-corp-same-site.sub.html +SET TIMEOUT: html/cross-origin-embedder-policy/resources/reporting-worker.js SET TIMEOUT: html/dom/documents/dom-tree-accessors/Document.currentScript.html SET TIMEOUT: html/webappapis/timers/* SET TIMEOUT: orientation-event/resources/orientation-event-helpers.js diff --git a/tests/wpt/web-platform-tests/scroll-animations/finish-animation.html b/tests/wpt/web-platform-tests/scroll-animations/finish-animation.html new file mode 100644 index 00000000000..87bcc41a6a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/finish-animation.html @@ -0,0 +1,342 @@ + + +Finishing an animation + + + + + + + +
+ + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml index 6e22cc57081..318437a80ec 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml +++ b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml @@ -230,6 +230,7 @@ tasks: -- --channel=${vars.channel} --verify + --verify-no-chaos-mode - wpt-${vars.browser}-${vars.channel}-results: use: diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py index 8b1b55f607f..366dc781d90 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py @@ -18,8 +18,7 @@ from .utils import call, get, untar, unzip uname = platform.uname() # the rootUrl for the firefox-ci deployment of Taskcluster -# (after November 9, https://firefox-ci-tc.services.mozilla.com/) -FIREFOX_CI_ROOT_URL = 'https://taskcluster.net' +FIREFOX_CI_ROOT_URL = 'https://firefox-ci-tc.services.mozilla.com' def _get_fileversion(binary, logger=None): @@ -49,6 +48,15 @@ def get_ext(filename): return ext +def get_taskcluster_artifact(index, path): + TC_INDEX_BASE = FIREFOX_CI_ROOT_URL + "/api/index/v1/" + + resp = get(TC_INDEX_BASE + "task/%s/artifacts/%s" % (index, path)) + resp.raise_for_status() + + return resp + + class Browser(object): __metaclass__ = ABCMeta @@ -174,7 +182,7 @@ class Firefox(Browser): url = "https://download.mozilla.org/?product=%s&os=%s&lang=en-US" % (product[channel], os_builds[os_key]) self.logger.info("Downloading Firefox from %s" % url) - resp = requests.get(url) + resp = get(url) filename = None @@ -413,32 +421,32 @@ class Firefox(Browser): return find_executable(os.path.join(dest, "geckodriver")) def install_geckodriver_nightly(self, dest): - import tarfile - import mozdownload self.logger.info("Attempting to install webdriver from nightly") - try: - s = mozdownload.DailyScraper(branch="mozilla-central", - extension="common.tests.tar.gz", - destination=dest) - package_path = s.download() - except mozdownload.errors.NotFoundError: - return + + platform_bits = ("64" if uname[4] == "x86_64" else + ("32" if self.platform == "win" else "")) + tc_platform = "%s%s" % (self.platform, platform_bits) + + archive_ext = ".zip" if uname[0] == "Windows" else ".tar.gz" + archive_name = "public/geckodriver%s" % archive_ext try: - exe_suffix = ".exe" if uname[0] == "Windows" else "" - with tarfile.open(package_path, "r") as f: - try: - member = f.getmember("bin%sgeckodriver%s" % (os.path.sep, - exe_suffix)) - except KeyError: - return - # Remove bin/ from the path. - member.name = os.path.basename(member.name) - f.extractall(members=[member], path=dest) - path = os.path.join(dest, member.name) - self.logger.info("Extracted geckodriver to %s" % path) - finally: - os.unlink(package_path) + resp = get_taskcluster_artifact( + "gecko.v2.mozilla-central.latest.geckodriver.%s" % tc_platform, + archive_name) + except Exception: + self.logger.info("Geckodriver download failed") + return + + if archive_ext == ".zip": + unzip(resp.raw, dest) + else: + untar(resp.raw, dest) + + exe_ext = ".exe" if uname[0] == "Windows" else "" + path = os.path.join(dest, "geckodriver%s" % exe_ext) + + self.logger.info("Extracted geckodriver to %s" % path) return path @@ -461,24 +469,10 @@ class FirefoxAndroid(Browser): if dest is None: dest = os.pwd - if FIREFOX_CI_ROOT_URL == 'https://taskcluster.net': - # NOTE: this condition can be removed after November 9, 2019 - TC_QUEUE_BASE = "https://queue.taskcluster.net/v1/" - TC_INDEX_BASE = "https://index.taskcluster.net/v1/" - else: - TC_QUEUE_BASE = FIREFOX_CI_ROOT_URL + "/api/queue/v1/" - TC_INDEX_BASE = FIREFOX_CI_ROOT_URL + "/api/index/v1/" - - resp = requests.get(TC_INDEX_BASE + - "task/gecko.v2.mozilla-central.latest.mobile.android-x86_64-opt") - resp.raise_for_status() - index = resp.json() - task_id = index["taskId"] - - resp = requests.get(TC_QUEUE_BASE + "task/%s/artifacts/%s" % - (task_id, "public/build/geckoview-androidTest.apk")) - resp.raise_for_status() + resp = get_taskcluster_artifact( + "gecko.v2.mozilla-central.latest.mobile.android-x86_64-opt", + "public/build/geckoview-androidTest.apk") filename = "geckoview-androidTest.apk" if rename: diff --git a/tests/wpt/web-platform-tests/tools/wpt/commands.json b/tests/wpt/web-platform-tests/tools/wpt/commands.json index 60fe1621af0..a47ab40d728 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/commands.json +++ b/tests/wpt/web-platform-tests/tools/wpt/commands.json @@ -52,7 +52,6 @@ "parser": "get_parser", "help": "Install browser components", "install": [ - "mozdownload", "mozinstall" ] }, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt index c59351ba1a2..176705f3af5 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt @@ -1,6 +1,5 @@ marionette_driver==3.0.0 mozcrash==2.0.0 -mozdownload==1.26.0 mozinstall==2.0.0 mozleak==0.2 moznetwork==1.1.0 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/actions.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/actions.py new file mode 100644 index 00000000000..fc43dd665a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/actions.py @@ -0,0 +1,184 @@ + +class ClickAction(object): + name = "click" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + selector = payload["selector"] + element = self.protocol.select.element_by_selector(selector) + self.logger.debug("Clicking element: %s" % selector) + self.protocol.click.element(element) + + +class SendKeysAction(object): + name = "send_keys" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + selector = payload["selector"] + keys = payload["keys"] + element = self.protocol.select.element_by_selector(selector) + self.logger.debug("Sending keys to element: %s" % selector) + self.protocol.send_keys.send_keys(element, keys) + + +class ActionSequenceAction(object): + name = "action_sequence" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + # TODO: some sort of shallow error checking + actions = payload["actions"] + for actionSequence in actions: + if actionSequence["type"] == "pointer": + for action in actionSequence["actions"]: + if (action["type"] == "pointerMove" and + isinstance(action["origin"], dict)): + action["origin"] = self.get_element(action["origin"]["selector"], action["frame"]["frame"]) + self.protocol.action_sequence.send_actions({"actions": actions}) + + def get_element(self, element_selector, frame): + element = self.protocol.select.element_by_selector(element_selector, frame) + return element + +class GenerateTestReportAction(object): + name = "generate_test_report" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + message = payload["message"] + self.logger.debug("Generating test report: %s" % message) + self.protocol.generate_test_report.generate_test_report(message) + +class SetPermissionAction(object): + name = "set_permission" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + permission_params = payload["permission_params"] + descriptor = permission_params["descriptor"] + name = descriptor["name"] + state = permission_params["state"] + one_realm = permission_params.get("oneRealm", False) + self.logger.debug("Setting permission %s to %s, oneRealm=%s" % (name, state, one_realm)) + self.protocol.set_permission.set_permission(descriptor, state, one_realm) + +class AddVirtualAuthenticatorAction(object): + name = "add_virtual_authenticator" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + self.logger.debug("Adding virtual authenticator") + config = payload["config"] + authenticator_id = self.protocol.virtual_authenticator.add_virtual_authenticator(config) + self.logger.debug("Authenticator created with ID %s" % authenticator_id) + return authenticator_id + +class RemoveVirtualAuthenticatorAction(object): + name = "remove_virtual_authenticator" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + authenticator_id = payload["authenticator_id"] + self.logger.debug("Removing virtual authenticator %s" % authenticator_id) + return self.protocol.virtual_authenticator.remove_virtual_authenticator(authenticator_id) + + +class AddCredentialAction(object): + name = "add_credential" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + authenticator_id = payload["authenticator_id"] + credential = payload["credential"] + self.logger.debug("Adding credential to virtual authenticator %s " % authenticator_id) + return self.protocol.virtual_authenticator.add_credential(authenticator_id, credential) + +class GetCredentialsAction(object): + name = "get_credentials" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + authenticator_id = payload["authenticator_id"] + self.logger.debug("Getting credentials from virtual authenticator %s " % authenticator_id) + return self.protocol.virtual_authenticator.get_credentials(authenticator_id) + +class RemoveCredentialAction(object): + name = "remove_credential" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + authenticator_id = payload["authenticator_id"] + credential_id = payload["credential_id"] + self.logger.debug("Removing credential %s from authenticator %s" % (credential_id, authenticator_id)) + return self.protocol.virtual_authenticator.remove_credential(authenticator_id, credential_id) + +class RemoveAllCredentialsAction(object): + name = "remove_all_credentials" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + authenticator_id = payload["authenticator_id"] + self.logger.debug("Removing all credentials from authenticator %s" % authenticator_id) + return self.protocol.virtual_authenticator.remove_all_credentials(authenticator_id) + +class SetUserVerifiedAction(object): + name = "set_user_verified" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + authenticator_id = payload["authenticator_id"] + uv = payload["uv"] + self.logger.debug( + "Setting user verified flag on authenticator %s to %s" % (authenticator_id, uv["isUserVerified"])) + return self.protocol.virtual_authenticator.set_user_verified(authenticator_id, uv) + + +actions = [ClickAction, + SendKeysAction, + ActionSequenceAction, + GenerateTestReportAction, + SetPermissionAction, + AddVirtualAuthenticatorAction, + RemoveVirtualAuthenticatorAction, + AddCredentialAction, + GetCredentialsAction, + RemoveCredentialAction, + RemoveAllCredentialsAction, + SetUserVerifiedAction] diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py index ab36c95c113..5d6c283737e 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py @@ -13,6 +13,7 @@ from six.moves.http_client import HTTPConnection from six.moves.urllib.parse import urljoin, urlsplit, urlunsplit from ..testrunner import Stop +from .actions import actions from .protocol import Protocol, BaseProtocolPart here = os.path.split(__file__)[0] @@ -681,20 +682,7 @@ class CallbackHandler(object): "complete": self.process_complete } - self.actions = { - "click": ClickAction(self.logger, self.protocol), - "send_keys": SendKeysAction(self.logger, self.protocol), - "action_sequence": ActionSequenceAction(self.logger, self.protocol), - "generate_test_report": GenerateTestReportAction(self.logger, self.protocol), - "set_permission": SetPermissionAction(self.logger, self.protocol), - "add_virtual_authenticator": AddVirtualAuthenticatorAction(self.logger, self.protocol), - "remove_virtual_authenticator": RemoveVirtualAuthenticatorAction(self.logger, self.protocol), - "add_credential": AddCredentialAction(self.logger, self.protocol), - "get_credentials": GetCredentialsAction(self.logger, self.protocol), - "remove_credential": RemoveCredentialAction(self.logger, self.protocol), - "remove_all_credentials": RemoveAllCredentialsAction(self.logger, self.protocol), - "set_user_verified": SetUserVerifiedAction(self.logger, self.protocol), - } + self.actions = {cls.name: cls(self.logger, self.protocol) for cls in actions} def __call__(self, result): url, command, payload = result @@ -735,150 +723,3 @@ class CallbackHandler(object): def _send_message(self, message_type, status, message=None): self.protocol.testdriver.send_message(message_type, status, message=message) - - -class ClickAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - selector = payload["selector"] - element = self.protocol.select.element_by_selector(selector) - self.logger.debug("Clicking element: %s" % selector) - self.protocol.click.element(element) - - -class SendKeysAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - selector = payload["selector"] - keys = payload["keys"] - element = self.protocol.select.element_by_selector(selector) - self.logger.debug("Sending keys to element: %s" % selector) - self.protocol.send_keys.send_keys(element, keys) - - -class ActionSequenceAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - # TODO: some sort of shallow error checking - actions = payload["actions"] - for actionSequence in actions: - if actionSequence["type"] == "pointer": - for action in actionSequence["actions"]: - if (action["type"] == "pointerMove" and - isinstance(action["origin"], dict)): - action["origin"] = self.get_element(action["origin"]["selector"], action["frame"]["frame"]) - self.protocol.action_sequence.send_actions({"actions": actions}) - - def get_element(self, element_selector, frame): - element = self.protocol.select.element_by_selector(element_selector, frame) - return element - -class GenerateTestReportAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - message = payload["message"] - self.logger.debug("Generating test report: %s" % message) - self.protocol.generate_test_report.generate_test_report(message) - -class SetPermissionAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - permission_params = payload["permission_params"] - descriptor = permission_params["descriptor"] - name = descriptor["name"] - state = permission_params["state"] - one_realm = permission_params.get("oneRealm", False) - self.logger.debug("Setting permission %s to %s, oneRealm=%s" % (name, state, one_realm)) - self.protocol.set_permission.set_permission(descriptor, state, one_realm) - -class AddVirtualAuthenticatorAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - self.logger.debug("Adding virtual authenticator") - config = payload["config"] - authenticator_id = self.protocol.virtual_authenticator.add_virtual_authenticator(config) - self.logger.debug("Authenticator created with ID %s" % authenticator_id) - return authenticator_id - -class RemoveVirtualAuthenticatorAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - authenticator_id = payload["authenticator_id"] - self.logger.debug("Removing virtual authenticator %s" % authenticator_id) - return self.protocol.virtual_authenticator.remove_virtual_authenticator(authenticator_id) - - -class AddCredentialAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - authenticator_id = payload["authenticator_id"] - credential = payload["credential"] - self.logger.debug("Adding credential to virtual authenticator %s " % authenticator_id) - return self.protocol.virtual_authenticator.add_credential(authenticator_id, credential) - -class GetCredentialsAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - authenticator_id = payload["authenticator_id"] - self.logger.debug("Getting credentials from virtual authenticator %s " % authenticator_id) - return self.protocol.virtual_authenticator.get_credentials(authenticator_id) - -class RemoveCredentialAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - authenticator_id = payload["authenticator_id"] - credential_id = payload["credential_id"] - self.logger.debug("Removing credential %s from authenticator %s" % (credential_id, authenticator_id)) - return self.protocol.virtual_authenticator.remove_credential(authenticator_id, credential_id) - -class RemoveAllCredentialsAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - authenticator_id = payload["authenticator_id"] - self.logger.debug("Removing all credentials from authenticator %s" % authenticator_id) - return self.protocol.virtual_authenticator.remove_all_credentials(authenticator_id) - -class SetUserVerifiedAction(object): - def __init__(self, logger, protocol): - self.logger = logger - self.protocol = protocol - - def __call__(self, payload): - authenticator_id = payload["authenticator_id"] - uv = payload["uv"] - self.logger.debug( - "Setting user verified flag on authenticator %s to %s" % (authenticator_id, uv["isUserVerified"])) - return self.protocol.virtual_authenticator.set_user_verified(authenticator_id, uv) diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html index d89f353a89f..9793844f569 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html @@ -92,4 +92,58 @@ promise_test(async t => { }, 'addIceCandidate and setLocalDescription are resolved in the correct ' + 'order, as defined by the operations chain specification'); +promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + caller.addTransceiver('audio'); + let events = []; + let pendingPromises = []; + + const onCandidatePromise = new Promise(resolve => { + caller.onicecandidate = () => { + events.push('candidate generated'); + resolve(); + } + }); + pendingPromises.push(onCandidatePromise); + pendingPromises.push(caller.setLocalDescription().then(() => { + events.push('setLocalDescription'); + })); + await Promise.all(pendingPromises); + assert_array_equals(events, ['setLocalDescription', 'candidate generated']); +}, 'onicecandidate fires after resolving setLocalDescription in offerer'); + +promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + caller.addTransceiver('audio'); + let events = []; + let pendingPromises = []; + + caller.onicecandidate = (ev) => { + if (ev.candidate) { + callee.addIceCandidate(ev.candidate); + } + } + const offer = await caller.createOffer(); + const onCandidatePromise = new Promise(resolve => { + callee.onicecandidate = () => { + events.push('candidate generated'); + resolve(); + } + }); + await callee.setRemoteDescription(offer); + const answer = await callee.createAnswer(); + pendingPromises.push(onCandidatePromise); + pendingPromises.push(callee.setLocalDescription(answer).then(() => { + events.push('setLocalDescription'); + })); + await Promise.all(pendingPromises); + assert_array_equals(events, ['setLocalDescription', 'candidate generated']); +}, 'onicecandidate fires after resolving setLocalDescription in answerer'); +