Bug 1391582 - Update web-platform-tests to revision b039c00a086291f97df9caa6b999e9d123c91b27, a=testonly
authorJames Graham <james@hoppipolla.co.uk>
Fri, 11 Aug 2017 11:35:27 +0100
changeset 375501 265dd4b0a4d276ef32c26d185194c83a4b3cba9b
parent 375500 3c2cc6a87b0bb6b73c61c359aec1c658d0c17914
child 375502 38a224ff558117c94eb728616347d73c3b26b9e8
push id93938
push userjames@hoppipolla.co.uk
push dateFri, 18 Aug 2017 16:27:15 +0000
treeherdermozilla-inbound@66a69c9a2350 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1391582
milestone57.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1391582 - Update web-platform-tests to revision b039c00a086291f97df9caa6b999e9d123c91b27, a=testonly MozReview-Commit-ID: 1n6P2WJZJy3
testing/web-platform/meta/MANIFEST.json
testing/web-platform/meta/mozilla-sync
testing/web-platform/tests/.travis.yml
testing/web-platform/tests/.well-known/README.md
testing/web-platform/tests/.well-known/idp-proxy/README.md
testing/web-platform/tests/.well-known/idp-proxy/mock-idp.js
testing/web-platform/tests/README.md
testing/web-platform/tests/XMLHttpRequest/access-control-and-redirects.htm
testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-header.htm
testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-method.htm
testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow-star.htm
testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow.htm
testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py
testing/web-platform/tests/XMLHttpRequest/resources/redirect-cors.py
testing/web-platform/tests/XMLHttpRequest/resources/reset-token.py
testing/web-platform/tests/background-fetch/interfaces.idl
testing/web-platform/tests/beacon/headers/header-content-type.html
testing/web-platform/tests/check_stability.ini
testing/web-platform/tests/clear-site-data/storage.https.html
testing/web-platform/tests/clear-site-data/support/service_worker.js
testing/web-platform/tests/clear-site-data/support/test_utils.sub.js
testing/web-platform/tests/content-security-policy/inheritance/iframe.html
testing/web-platform/tests/content-security-policy/inheritance/window.html
testing/web-platform/tests/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html
testing/web-platform/tests/content-security-policy/navigation/support/test_csp_self_window.sub.html
testing/web-platform/tests/content-security-policy/navigation/support/test_csp_self_window.sub.html.sub.headers
testing/web-platform/tests/css-fonts/matching/fixed-stretch-style-over-weight.html
testing/web-platform/tests/css-fonts/matching/font-matching.css
testing/web-platform/tests/css-fonts/matching/stretch-distance-over-weight-distance.html
testing/web-platform/tests/css-fonts/matching/style-ranges-over-weight-direction.html
testing/web-platform/tests/css-fonts/variations/font-parse-numeric-stretch-style-weight.html
testing/web-platform/tests/css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-002.html
testing/web-platform/tests/css/css-grid-1/reference/grid-support-grid-auto-columns-rows-002-ref.html
testing/web-platform/tests/css/css-multicol-1/OWNERS
testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-001-ref.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-001.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-002-ref.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-002.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-001-ref.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-001.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-002-ref.xht
testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-002.xht
testing/web-platform/tests/css/css-multicol-1/multicol-clip-001.xht
testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-003-ref.xht
testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-003.xht
testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-005.xht
testing/web-platform/tests/css/css-multicol-1/multicol-gap-large-001.xht
testing/web-platform/tests/css/css-multicol-1/multicol-width-small-001.xht
testing/web-platform/tests/css/css-position-3/position-sticky-margins-ref.html
testing/web-platform/tests/css/css-position-3/position-sticky-margins.html
testing/web-platform/tests/css/css-position-3/position-sticky-stacking-context-ref.html
testing/web-platform/tests/css/css-position-3/position-sticky-stacking-context.html
testing/web-platform/tests/css/css-position-3/position-sticky-writing-modes-ref.html
testing/web-platform/tests/css/css-position-3/position-sticky-writing-modes.html
testing/web-platform/tests/css/css-position-3/sticky-input-box-position.html
testing/web-platform/tests/css/css-transforms-2/animation/resources/interpolation-testcommon.js
testing/web-platform/tests/css/css-transforms-2/animation/rotate-interpolation.html
testing/web-platform/tests/css/css-transforms-2/animation/scale-interpolation.html
testing/web-platform/tests/css/css-transforms-2/animation/translate-interpolation.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-006-ref.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-008-ref.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-012-ref.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-013-ref.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-016-ref.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-021-ref.html
testing/web-platform/tests/css/css-ui-3/reference/text-overflow-022-ref.html
testing/web-platform/tests/css/css-ui-3/support/1x1-red.png
testing/web-platform/tests/css/css-ui-3/text-overflow-006.html
testing/web-platform/tests/css/css-ui-3/text-overflow-007.html
testing/web-platform/tests/css/css-ui-3/text-overflow-008.html
testing/web-platform/tests/css/css-ui-3/text-overflow-009.html
testing/web-platform/tests/css/css-ui-3/text-overflow-010.html
testing/web-platform/tests/css/css-ui-3/text-overflow-011.html
testing/web-platform/tests/css/css-ui-3/text-overflow-012.html
testing/web-platform/tests/css/css-ui-3/text-overflow-013.html
testing/web-platform/tests/css/css-ui-3/text-overflow-014.html
testing/web-platform/tests/css/css-ui-3/text-overflow-015.html
testing/web-platform/tests/css/css-ui-3/text-overflow-016.html
testing/web-platform/tests/css/css-ui-3/text-overflow-017.html
testing/web-platform/tests/css/css-ui-3/text-overflow-018.html
testing/web-platform/tests/css/css-ui-3/text-overflow-019.html
testing/web-platform/tests/css/css-ui-3/text-overflow-020.html
testing/web-platform/tests/css/css-ui-3/text-overflow-021.html
testing/web-platform/tests/css/css-ui-3/text-overflow-022.html
testing/web-platform/tests/css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-lr.html
testing/web-platform/tests/css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-rl.html
testing/web-platform/tests/css/geometry-1/DOMRectList.html
testing/web-platform/tests/css/geometry-1/interfaces.html
testing/web-platform/tests/css/geometry-1/structured-serialization.html
testing/web-platform/tests/css/geometry-1/support/interfaces.js
testing/web-platform/tests/cssom-view/DOMRectList.html
testing/web-platform/tests/cssom-view/historical.html
testing/web-platform/tests/docs/.ruby-version
testing/web-platform/tests/docs/_running-tests/index.md
testing/web-platform/tests/docs/_writing-tests/general-guidelines.md
testing/web-platform/tests/docs/_writing-tests/lint-tool.md
testing/web-platform/tests/docs/_writing-tests/server-features.md
testing/web-platform/tests/docs/_writing-tests/testharness-api.md
testing/web-platform/tests/dom/nodes/Element-classlist.html
testing/web-platform/tests/dom/nodes/Node-cloneNode.html
testing/web-platform/tests/dom/traversal/NodeIterator.html
testing/web-platform/tests/dom/traversal/TreeWalker.html
testing/web-platform/tests/editing/data/insert-list-items-in-table-cells.js
testing/web-platform/tests/editing/run/insert-list-items-in-table-cell.html
testing/web-platform/tests/fetch/api/abort/cache.https.html
testing/web-platform/tests/fetch/api/abort/general-serviceworker.https.html
testing/web-platform/tests/fetch/api/abort/general.html
testing/web-platform/tests/fetch/api/abort/general.js
testing/web-platform/tests/fetch/api/abort/serviceworker-intercepted.https.html
testing/web-platform/tests/fetch/api/resources/basic.html
testing/web-platform/tests/fetch/api/resources/empty.txt
testing/web-platform/tests/fetch/api/resources/infinite-slow-response.py
testing/web-platform/tests/fetch/api/resources/stash-put.py
testing/web-platform/tests/fetch/api/resources/stash-take.py
testing/web-platform/tests/fetch/api/resources/sw-intercept.js
testing/web-platform/tests/fullscreen/model/move-to-inactive-document-manual.html
testing/web-platform/tests/generic-sensor/generic-sensor-tests.js
testing/web-platform/tests/hr-time/timeOrigin.html
testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.currentScript.html
testing/web-platform/tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html
testing/web-platform/tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.py
testing/web-platform/tests/html/semantics/embedded-content/the-img-element/delay-load-event-detached.html
testing/web-platform/tests/html/semantics/embedded-content/the-img-element/delay-load-event.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4a.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4b.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4c.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4d.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5a.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5b.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5c.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5d.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5e.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-6.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-6a.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-6b.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-6c.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-6d.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7.html
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7a.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7b.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7c.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7d.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7e.js
testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-7f.js
testing/web-platform/tests/html/semantics/scripting-1/the-template-element/template-element/template-content.html
testing/web-platform/tests/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html
testing/web-platform/tests/html/semantics/selectors/pseudo-classes/readwrite-readonly-type-change.html
testing/web-platform/tests/html/semantics/selectors/pseudo-classes/required-optional-hidden.html
testing/web-platform/tests/http/OWNERS
testing/web-platform/tests/http/refresh/README.md
testing/web-platform/tests/http/refresh/navigate.window.js
testing/web-platform/tests/http/refresh/resources/multiple.asis
testing/web-platform/tests/http/refresh/resources/refresh.py
testing/web-platform/tests/http/refresh/resources/refreshed.txt
testing/web-platform/tests/http/refresh/subresource.any.js
testing/web-platform/tests/interfaces/geometry.idl
testing/web-platform/tests/lint
testing/web-platform/tests/lint.whitelist
testing/web-platform/tests/manifest
testing/web-platform/tests/orientation-sensor/OrientationSensor.https.html
testing/web-platform/tests/orientation-sensor/OrientationSensor_insecure_context.html
testing/web-platform/tests/orientation-sensor/OrientationSensor_onerror-manual.https.html
testing/web-platform/tests/payment-request/payment-request-ctor-currency-code-checks.https.html
testing/web-platform/tests/payment-request/payment-request-shippingType-attribute.https.html
testing/web-platform/tests/referrer-policy/README.md
testing/web-platform/tests/resources/chromium/webusb-test.js
testing/web-platform/tests/resources/test/README.md
testing/web-platform/tests/resources/test/conftest.py
testing/web-platform/tests/resources/test/tests/api-tests-1.html
testing/web-platform/tests/resources/test/tox.ini
testing/web-platform/tests/resources/test/wptserver.py
testing/web-platform/tests/resources/testharness.js
testing/web-platform/tests/serve
testing/web-platform/tests/service-workers/service-worker/ServiceWorkerGlobalScope/resources/close-worker.js
testing/web-platform/tests/service-workers/service-worker/immutable-prototype-serviceworker.https.html
testing/web-platform/tests/service-workers/service-worker/interfaces-sw.https.html
testing/web-platform/tests/service-workers/service-worker/interfaces-window.https.html
testing/web-platform/tests/service-workers/service-worker/interfaces.https.html
testing/web-platform/tests/service-workers/service-worker/resources/immutable-prototype-serviceworker.js
testing/web-platform/tests/service-workers/service-worker/resources/interfaces-idls.js
testing/web-platform/tests/service-workers/service-worker/resources/interfaces-worker.sub.js
testing/web-platform/tests/service-workers/service-worker/resources/interfaces.js
testing/web-platform/tests/streams/piping/pipe-through.js
testing/web-platform/tests/streams/readable-streams/pipe-through.dedicatedworker.html
testing/web-platform/tests/streams/readable-streams/pipe-through.html
testing/web-platform/tests/streams/readable-streams/pipe-through.js
testing/web-platform/tests/streams/readable-streams/pipe-through.serviceworker.https.html
testing/web-platform/tests/streams/readable-streams/pipe-through.sharedworker.html
testing/web-platform/tests/svg/historical.html
testing/web-platform/tests/tools/ci/check_stability.py
testing/web-platform/tests/tools/html5lib/html5lib/tests/testdata/tree-construction/isindex.dat
testing/web-platform/tests/tools/lint/lint.py
testing/web-platform/tests/tools/webdriver/webdriver/client.py
testing/web-platform/tests/tools/wptserve/wptserve/response.py
testing/web-platform/tests/webaudio/js/helpers.js
testing/web-platform/tests/webdriver/get_title.py
testing/web-platform/tests/webdriver/interface.html
testing/web-platform/tests/webdriver/state/__init__.py
testing/web-platform/tests/webdriver/state/text/__init__.py
testing/web-platform/tests/webdriver/state/text/get_text.py
testing/web-platform/tests/webdriver/status.py
testing/web-platform/tests/webdriver/tests/contexts/maximize_window.py
testing/web-platform/tests/webdriver/tests/contexts/resizing_and_positioning.py
testing/web-platform/tests/webdriver/tests/cookies.py
testing/web-platform/tests/webdriver/tests/cookies/cookies.py
testing/web-platform/tests/webdriver/tests/interface.html
testing/web-platform/tests/webdriver/tests/maximize_window.py
testing/web-platform/tests/webdriver/tests/navigation.py
testing/web-platform/tests/webdriver/tests/navigation/current_url.py
testing/web-platform/tests/webdriver/tests/navigation/get_title.py
testing/web-platform/tests/webdriver/tests/state/__init__.py
testing/web-platform/tests/webdriver/tests/state/text/__init__.py
testing/web-platform/tests/webdriver/tests/state/text/get_text.py
testing/web-platform/tests/webdriver/tests/status.py
testing/web-platform/tests/webrtc/RTCPeerConnection-addTransceiver.html
testing/web-platform/tests/webrtc/RTCPeerConnection-getIdentityAssertion.html
testing/web-platform/tests/webrtc/RTCPeerConnection-getTransceivers.html
testing/web-platform/tests/webrtc/RTCPeerConnection-peerIdentity.html
testing/web-platform/tests/webrtc/RTCRtpParameters-codecs.html
testing/web-platform/tests/webrtc/RTCRtpParameters-degradationPreference.html
testing/web-platform/tests/webrtc/RTCRtpParameters-encodings.html
testing/web-platform/tests/webrtc/RTCRtpParameters-headerExtensions.html
testing/web-platform/tests/webrtc/RTCRtpParameters-helper.js
testing/web-platform/tests/webrtc/RTCRtpParameters-rtcp.html
testing/web-platform/tests/webrtc/RTCRtpParameters-transactionId.html
testing/web-platform/tests/webrtc/RTCRtpReceiver-getParameters.html
testing/web-platform/tests/webrtc/RTCRtpSender-setParameters.html
testing/web-platform/tests/webrtc/coverage/identity.txt
testing/web-platform/tests/webrtc/coverage/set-session-description.txt
testing/web-platform/tests/webrtc/historical.html
testing/web-platform/tests/webrtc/identity-helper.js
testing/web-platform/tests/webusb/idlharness.https.html
testing/web-platform/tests/wptrun
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -9842,16 +9842,34 @@
     ]
    ],
    "css/css-ui-3/select-cursor-001-manual.html": [
     [
      "/css/css-ui-3/select-cursor-001-manual.html",
      {}
     ]
    ],
+   "css/css-ui-3/text-overflow-017.html": [
+    [
+     "/css/css-ui-3/text-overflow-017.html",
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-018.html": [
+    [
+     "/css/css-ui-3/text-overflow-018.html",
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-019.html": [
+    [
+     "/css/css-ui-3/text-overflow-019.html",
+     {}
+    ]
+   ],
    "css/css-ui-3/text-overflow.html": [
     [
      "/css/css-ui-3/text-overflow.html",
      {}
     ]
    ],
    "css/css-writing-modes-3/background-position-vlr-003.xht": [
     [
@@ -10664,16 +10682,22 @@
     ]
    ],
    "fullscreen/model/move-to-iframe-manual.html": [
     [
      "/fullscreen/model/move-to-iframe-manual.html",
      {}
     ]
    ],
+   "fullscreen/model/move-to-inactive-document-manual.html": [
+    [
+     "/fullscreen/model/move-to-inactive-document-manual.html",
+     {}
+    ]
+   ],
    "fullscreen/model/remove-child-manual.html": [
     [
      "/fullscreen/model/remove-child-manual.html",
      {}
     ]
    ],
    "fullscreen/model/remove-first-manual.html": [
     [
@@ -12296,16 +12320,22 @@
     ]
    ],
    "orientation-event/t028-manual.html": [
     [
      "/orientation-event/t028-manual.html",
      {}
     ]
    ],
+   "orientation-sensor/OrientationSensor_onerror-manual.https.html": [
+    [
+     "/orientation-sensor/OrientationSensor_onerror-manual.https.html",
+     {}
+    ]
+   ],
    "page-visibility/test_minimize-manual.html": [
     [
      "/page-visibility/test_minimize-manual.html",
      {}
     ]
    ],
    "page-visibility/test_tab_state_change-manual.html": [
     [
@@ -110872,16 +110902,28 @@
       [
        "/css/css-grid-1/reference/grid-support-grid-auto-columns-rows-001-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-002.html": [
+    [
+     "/css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-002.html",
+     [
+      [
+       "/css/css-grid-1/reference/grid-support-grid-auto-columns-rows-002-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid-1/layout-algorithm/grid-layout-free-space-unit.html": [
     [
      "/css/css-grid-1/layout-algorithm/grid-layout-free-space-unit.html",
      [
       [
        "/css/css-grid-1/reference/grid-layout-basic-ref.html",
        "=="
       ]
@@ -112936,34 +112978,34 @@
       [
        "/css/css-multicol-1/reference/multicol-basic-005-ref.xht",
        "=="
       ]
      ],
      {}
     ]
    ],
-   "css/css-multicol-1/multicol-block-clip-001.xht": [
-    [
-     "/css/css-multicol-1/multicol-block-clip-001.xht",
-     [
-      [
-       "/css/css-multicol-1/multicol-block-clip-001-ref.xht",
-       "=="
-      ]
-     ],
-     {}
-    ]
-   ],
-   "css/css-multicol-1/multicol-block-clip-002.xht": [
-    [
-     "/css/css-multicol-1/multicol-block-clip-002.xht",
-     [
-      [
-       "/css/css-multicol-1/multicol-block-clip-002-ref.xht",
+   "css/css-multicol-1/multicol-block-no-clip-001.xht": [
+    [
+     "/css/css-multicol-1/multicol-block-no-clip-001.xht",
+     [
+      [
+       "/css/css-multicol-1/multicol-block-no-clip-001-ref.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-multicol-1/multicol-block-no-clip-002.xht": [
+    [
+     "/css/css-multicol-1/multicol-block-no-clip-002.xht",
+     [
+      [
+       "/css/css-multicol-1/multicol-block-no-clip-002-ref.xht",
        "=="
       ]
      ],
      {}
     ]
    ],
    "css/css-multicol-1/multicol-br-inside-avoidcolumn-001.xht": [
     [
@@ -114916,16 +114958,28 @@
       [
        "/css/css-position-3/position-sticky-left-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "css/css-position-3/position-sticky-margins.html": [
+    [
+     "/css/css-position-3/position-sticky-margins.html",
+     [
+      [
+       "/css/css-position-3/position-sticky-margins-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-position-3/position-sticky-nested-bottom.html": [
     [
      "/css/css-position-3/position-sticky-nested-bottom.html",
      [
       [
        "/css/css-position-3/position-sticky-nested-bottom-ref.html",
        "=="
       ]
@@ -115012,16 +115066,28 @@
       [
        "/css/css-position-3/position-sticky-right-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "css/css-position-3/position-sticky-stacking-context.html": [
+    [
+     "/css/css-position-3/position-sticky-stacking-context.html",
+     [
+      [
+       "/css/css-position-3/position-sticky-stacking-context-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-position-3/position-sticky-table-tfoot-bottom.html": [
     [
      "/css/css-position-3/position-sticky-table-tfoot-bottom.html",
      [
       [
        "/css/css-position-3/position-sticky-table-tfoot-bottom-ref.html",
        "=="
       ]
@@ -115120,16 +115186,28 @@
       [
        "/css/css-position-3/position-sticky-top-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "css/css-position-3/position-sticky-writing-modes.html": [
+    [
+     "/css/css-position-3/position-sticky-writing-modes.html",
+     [
+      [
+       "/css/css-position-3/position-sticky-writing-modes-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-pseudo-4/first-letter-001.html": [
     [
      "/css/css-pseudo-4/first-letter-001.html",
      [
       [
        "/css/css-pseudo-4/first-letter-001-ref.html",
        "=="
       ]
@@ -140136,16 +140214,184 @@
       [
        "/css/css-ui-3/reference/text-overflow-005-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "css/css-ui-3/text-overflow-006.html": [
+    [
+     "/css/css-ui-3/text-overflow-006.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-006-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-007.html": [
+    [
+     "/css/css-ui-3/text-overflow-007.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-008.html": [
+    [
+     "/css/css-ui-3/text-overflow-008.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-008-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-009.html": [
+    [
+     "/css/css-ui-3/text-overflow-009.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-010.html": [
+    [
+     "/css/css-ui-3/text-overflow-010.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-011.html": [
+    [
+     "/css/css-ui-3/text-overflow-011.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-012.html": [
+    [
+     "/css/css-ui-3/text-overflow-012.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-012-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-013.html": [
+    [
+     "/css/css-ui-3/text-overflow-013.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-013-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-014.html": [
+    [
+     "/css/css-ui-3/text-overflow-014.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-015.html": [
+    [
+     "/css/css-ui-3/text-overflow-015.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-016.html": [
+    [
+     "/css/css-ui-3/text-overflow-016.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-016-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-020.html": [
+    [
+     "/css/css-ui-3/text-overflow-020.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-021.html": [
+    [
+     "/css/css-ui-3/text-overflow-021.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-021-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-ui-3/text-overflow-022.html": [
+    [
+     "/css/css-ui-3/text-overflow-022.html",
+     [
+      [
+       "/css/css-ui-3/reference/text-overflow-022-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-values-3/attr-color-invalid-cast.html": [
     [
      "/css/css-values-3/attr-color-invalid-cast.html",
      [
       [
        "/css/css-values-3/reference/200-200-green.html",
        "=="
       ]
@@ -175108,36 +175354,21 @@
      {}
     ]
    ],
    "./config.default.json": [
     [
      {}
     ]
    ],
-   "./lint": [
-    [
-     {}
-    ]
-   ],
    "./lint.whitelist": [
     [
      {}
     ]
    ],
-   "./manifest": [
-    [
-     {}
-    ]
-   ],
-   "./serve": [
-    [
-     {}
-    ]
-   ],
    "./serve.py": [
     [
      {}
     ]
    ],
    "./server-side.md": [
     [
      {}
@@ -175148,17 +175379,27 @@
      {}
     ]
    ],
    "./wpt": [
     [
      {}
     ]
    ],
-   "./wptrun": [
+   ".well-known/README.md": [
+    [
+     {}
+    ]
+   ],
+   ".well-known/idp-proxy/README.md": [
+    [
+     {}
+    ]
+   ],
+   ".well-known/idp-proxy/mock-idp.js": [
     [
      {}
     ]
    ],
    "2dcontext/2x2.png": [
     [
      {}
     ]
@@ -177243,16 +177484,21 @@
      {}
     ]
    ],
    "XMLHttpRequest/resources/access-control-basic-allow.py": [
     [
      {}
     ]
    ],
+   "XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py": [
+    [
+     {}
+    ]
+   ],
    "XMLHttpRequest/resources/access-control-origin-header.py": [
     [
      {}
     ]
    ],
    "XMLHttpRequest/resources/auth1/auth.py": [
     [
      {}
@@ -177433,26 +177679,36 @@
      {}
     ]
    ],
    "XMLHttpRequest/resources/parse-headers.py": [
     [
      {}
     ]
    ],
+   "XMLHttpRequest/resources/redirect-cors.py": [
+    [
+     {}
+    ]
+   ],
    "XMLHttpRequest/resources/redirect.py": [
     [
      {}
     ]
    ],
    "XMLHttpRequest/resources/requri.py": [
     [
      {}
     ]
    ],
+   "XMLHttpRequest/resources/reset-token.py": [
+    [
+     {}
+    ]
+   ],
    "XMLHttpRequest/resources/send-after-setting-document-domain-window-1.htm": [
     [
      {}
     ]
    ],
    "XMLHttpRequest/resources/send-after-setting-document-domain-window-2.htm": [
     [
      {}
@@ -180188,16 +180444,21 @@
      {}
     ]
    ],
    "clear-site-data/support/send_report.html": [
     [
      {}
     ]
    ],
+   "clear-site-data/support/service_worker.js": [
+    [
+     {}
+    ]
+   ],
    "clear-site-data/support/test_utils.sub.js": [
     [
      {}
     ]
    ],
    "clipboard/OWNERS": [
     [
      {}
@@ -203678,16 +203939,26 @@
      {}
     ]
    ],
    "content-security-policy/media-src/media-src-redir-bug.sub.html.sub.headers": [
     [
      {}
     ]
    ],
+   "content-security-policy/navigation/support/test_csp_self_window.sub.html": [
+    [
+     {}
+    ]
+   ],
+   "content-security-policy/navigation/support/test_csp_self_window.sub.html.sub.headers": [
+    [
+     {}
+    ]
+   ],
    "content-security-policy/nonce-hiding/script-nonces-hidden.tentative.html.headers": [
     [
      {}
     ]
    ],
    "content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative.html.headers": [
     [
      {}
@@ -236818,16 +237089,21 @@
      {}
     ]
    ],
    "css/css-grid-1/reference/grid-support-grid-auto-columns-rows-001-ref.html": [
     [
      {}
     ]
    ],
+   "css/css-grid-1/reference/grid-support-grid-auto-columns-rows-002-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-grid-1/reference/grid-text-green-margin-no-collapse-ref.html": [
     [
      {}
     ]
    ],
    "css/css-grid-1/support/check-layout-th.js": [
     [
      {}
@@ -237348,22 +237624,22 @@
      {}
     ]
    ],
    "css/css-multicol-1/OWNERS": [
     [
      {}
     ]
    ],
-   "css/css-multicol-1/multicol-block-clip-001-ref.xht": [
-    [
-     {}
-    ]
-   ],
-   "css/css-multicol-1/multicol-block-clip-002-ref.xht": [
+   "css/css-multicol-1/multicol-block-no-clip-001-ref.xht": [
+    [
+     {}
+    ]
+   ],
+   "css/css-multicol-1/multicol-block-no-clip-002-ref.xht": [
     [
      {}
     ]
    ],
    "css/css-multicol-1/multicol-br-inside-avoidcolumn-ref.xht": [
     [
      {}
     ]
@@ -238343,16 +238619,21 @@
      {}
     ]
    ],
    "css/css-position-3/position-sticky-left-ref.html": [
     [
      {}
     ]
    ],
+   "css/css-position-3/position-sticky-margins-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-position-3/position-sticky-nested-bottom-ref.html": [
     [
      {}
     ]
    ],
    "css/css-position-3/position-sticky-nested-inline-ref.html": [
     [
      {}
@@ -238383,16 +238664,21 @@
      {}
     ]
    ],
    "css/css-position-3/position-sticky-right-ref.html": [
     [
      {}
     ]
    ],
+   "css/css-position-3/position-sticky-stacking-context-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-position-3/position-sticky-table-tfoot-bottom-ref.html": [
     [
      {}
     ]
    ],
    "css/css-position-3/position-sticky-table-th-bottom-ref.html": [
     [
      {}
@@ -238428,16 +238714,21 @@
      {}
     ]
    ],
    "css/css-position-3/position-sticky-top-ref.html": [
     [
      {}
     ]
    ],
+   "css/css-position-3/position-sticky-writing-modes-ref.html": [
+    [
+     {}
+    ]
+   ],
    "css/css-pseudo-4/OWNERS": [
     [
      {}
     ]
    ],
    "css/css-pseudo-4/first-letter-001-ref.html": [
     [
      {}
@@ -245073,16 +245364,21 @@
      {}
     ]
    ],
    "css/css-transforms-1/translateY/reference/svg-translatey-ref.html": [
     [
      {}
     ]
    ],
+   "css/css-transforms-2/animation/resources/interpolation-testcommon.js": [
+    [
+     {}
+    ]
+   ],
    "css/css-transforms-2/css-rotate-2d-3d-001-ref.html": [
     [
      {}
     ]
    ],
    "css/css-transforms-2/css3-transform-rotateY-ref.html": [
     [
      {}
@@ -245673,16 +245969,56 @@
      {}
     ]
    ],
    "css/css-ui-3/reference/text-overflow-005-ref.html": [
     [
      {}
     ]
    ],
+   "css/css-ui-3/reference/text-overflow-006-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/reference/text-overflow-008-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/reference/text-overflow-012-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/reference/text-overflow-013-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/reference/text-overflow-016-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/reference/text-overflow-021-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/reference/text-overflow-022-ref.html": [
+    [
+     {}
+    ]
+   ],
+   "css/css-ui-3/support/1x1-red.png": [
+    [
+     {}
+    ]
+   ],
    "css/css-ui-3/support/PTS/PngSuite.LICENSE": [
     [
      {}
     ]
    ],
    "css/css-ui-3/support/PTS/PngSuite.README": [
     [
      {}
@@ -284678,16 +285014,21 @@
      {}
     ]
    ],
    "editing/data/indent.js": [
     [
      {}
     ]
    ],
+   "editing/data/insert-list-items-in-table-cells.js": [
+    [
+     {}
+    ]
+   ],
    "editing/data/inserthorizontalrule.js": [
     [
      {}
     ]
    ],
    "editing/data/inserthtml.js": [
     [
      {}
@@ -286188,16 +286529,21 @@
      {}
     ]
    ],
    "fetch/README.md": [
     [
      {}
     ]
    ],
+   "fetch/api/abort/general.js": [
+    [
+     {}
+    ]
+   ],
    "fetch/api/basic/integrity.js": [
     [
      {}
     ]
    ],
    "fetch/api/basic/mode-no-cors.js": [
     [
      {}
@@ -286378,16 +286724,21 @@
      {}
     ]
    ],
    "fetch/api/resources/bad-chunk-encoding.py": [
     [
      {}
     ]
    ],
+   "fetch/api/resources/basic.html": [
+    [
+     {}
+    ]
+   ],
    "fetch/api/resources/cache.py": [
     [
      {}
     ]
    ],
    "fetch/api/resources/clean-stash.py": [
     [
      {}
@@ -286398,16 +286749,26 @@
      {}
     ]
    ],
    "fetch/api/resources/echo-content.py": [
     [
      {}
     ]
    ],
+   "fetch/api/resources/empty.txt": [
+    [
+     {}
+    ]
+   ],
+   "fetch/api/resources/infinite-slow-response.py": [
+    [
+     {}
+    ]
+   ],
    "fetch/api/resources/inspect-headers.py": [
     [
      {}
     ]
    ],
    "fetch/api/resources/method.py": [
     [
      {}
@@ -286423,21 +286784,36 @@
      {}
     ]
    ],
    "fetch/api/resources/script-with-header.py": [
     [
      {}
     ]
    ],
+   "fetch/api/resources/stash-put.py": [
+    [
+     {}
+    ]
+   ],
+   "fetch/api/resources/stash-take.py": [
+    [
+     {}
+    ]
+   ],
    "fetch/api/resources/status.py": [
     [
      {}
     ]
    ],
+   "fetch/api/resources/sw-intercept.js": [
+    [
+     {}
+    ]
+   ],
    "fetch/api/resources/top.txt": [
     [
      {}
     ]
    ],
    "fetch/api/resources/trickle.py": [
     [
      {}
@@ -295133,16 +295509,21 @@
      {}
     ]
    ],
    "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo'bar": [
     [
      {}
     ]
    ],
+   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.py": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html": [
     [
      {}
     ]
    ],
    "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/ufoo": [
     [
      {}
@@ -296628,16 +297009,111 @@
      {}
     ]
    ],
    "html/semantics/scripting-1/the-script-element/module/instantiation-error-1.js": [
     [
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4b.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4c.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4d.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5b.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5c.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5d.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5e.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-6a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-6b.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-6c.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-6d.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7a.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7b.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7c.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7d.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7e.js": [
+    [
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7f.js": [
+    [
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/missing-export-nested.js": [
     [
      {}
     ]
    ],
    "html/semantics/scripting-1/the-script-element/module/missing-export.js": [
     [
      {}
@@ -297863,26 +298339,51 @@
      {}
     ]
    ],
    "html/webappapis/user-prompts/simple-dialogs/.gitkeep": [
     [
      {}
     ]
    ],
+   "http/OWNERS": [
+    [
+     {}
+    ]
+   ],
    "http/basic-auth-cache-test-ref.html": [
     [
      {}
     ]
    ],
    "http/content_length.html.headers": [
     [
      {}
     ]
    ],
+   "http/refresh/README.md": [
+    [
+     {}
+    ]
+   ],
+   "http/refresh/resources/multiple.asis": [
+    [
+     {}
+    ]
+   ],
+   "http/refresh/resources/refresh.py": [
+    [
+     {}
+    ]
+   ],
+   "http/refresh/resources/refreshed.txt": [
+    [
+     {}
+    ]
+   ],
    "http/resources/securedimage.py": [
     [
      {}
     ]
    ],
    "images/OWNERS": [
     [
      {}
@@ -304993,16 +305494,21 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/iframe-register-link-element.html": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/immutable-prototype-serviceworker.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/import-mime-type-worker.py": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/import-scripts-echo.py": [
     [
      {}
@@ -305033,26 +305539,26 @@
      {}
     ]
    ],
    "service-workers/service-worker/resources/install-worker-helper.html": [
     [
      {}
     ]
    ],
+   "service-workers/service-worker/resources/interfaces-idls.js": [
+    [
+     {}
+    ]
+   ],
    "service-workers/service-worker/resources/interfaces-worker.sub.js": [
     [
      {}
     ]
    ],
-   "service-workers/service-worker/resources/interfaces.js": [
-    [
-     {}
-    ]
-   ],
    "service-workers/service-worker/resources/invalid-blobtype-iframe.https.html": [
     [
      {}
     ]
    ],
    "service-workers/service-worker/resources/invalid-blobtype-worker.js": [
     [
      {}
@@ -305748,21 +306254,16 @@
      {}
     ]
    ],
    "streams/readable-streams/general.js": [
     [
      {}
     ]
    ],
-   "streams/readable-streams/pipe-through.js": [
-    [
-     {}
-    ]
-   ],
    "streams/readable-streams/tee.js": [
     [
      {}
     ]
    ],
    "streams/readable-streams/templated.js": [
     [
      {}
@@ -306993,26 +307494,16 @@
      {}
     ]
    ],
    "webdriver/README.md": [
     [
      {}
     ]
    ],
-   "webdriver/state/__init__.py": [
-    [
-     {}
-    ]
-   ],
-   "webdriver/state/text/__init__.py": [
-    [
-     {}
-    ]
-   ],
    "webdriver/tests/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/actions/__init__.py": [
     [
      {}
@@ -307048,16 +307539,26 @@
      {}
     ]
    ],
    "webdriver/tests/element_click/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/state/__init__.py": [
+    [
+     {}
+    ]
+   ],
+   "webdriver/tests/state/text/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/support/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/support/asserts.py": [
     [
      {}
@@ -315473,31 +315974,46 @@
      {}
     ]
    ],
    "webrtc/RTCRtpCapabilities-helper.js": [
     [
      {}
     ]
    ],
+   "webrtc/RTCRtpParameters-helper.js": [
+    [
+     {}
+    ]
+   ],
    "webrtc/RTCStats-helper.js": [
     [
      {}
     ]
    ],
+   "webrtc/coverage/identity.txt": [
+    [
+     {}
+    ]
+   ],
    "webrtc/coverage/set-session-description.txt": [
     [
      {}
     ]
    ],
    "webrtc/dictionary-helper.js": [
     [
      {}
     ]
    ],
+   "webrtc/identity-helper.js": [
+    [
+     {}
+    ]
+   ],
    "websockets/OWNERS": [
     [
      {}
     ]
    ],
    "websockets/README.md": [
     [
      {}
@@ -326068,28 +326584,58 @@
     ]
    ],
    "XMLHttpRequest/access-control-and-redirects-async-same-origin.htm": [
     [
      "/XMLHttpRequest/access-control-and-redirects-async-same-origin.htm",
      {}
     ]
    ],
+   "XMLHttpRequest/access-control-and-redirects.htm": [
+    [
+     "/XMLHttpRequest/access-control-and-redirects.htm",
+     {}
+    ]
+   ],
    "XMLHttpRequest/access-control-basic-allow-access-control-origin-header.htm": [
     [
      "/XMLHttpRequest/access-control-basic-allow-access-control-origin-header.htm",
      {}
     ]
    ],
    "XMLHttpRequest/access-control-basic-allow-async.htm": [
     [
      "/XMLHttpRequest/access-control-basic-allow-async.htm",
      {}
     ]
    ],
+   "XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-header.htm": [
+    [
+     "/XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-header.htm",
+     {}
+    ]
+   ],
+   "XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-method.htm": [
+    [
+     "/XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-method.htm",
+     {}
+    ]
+   ],
+   "XMLHttpRequest/access-control-basic-allow-star.htm": [
+    [
+     "/XMLHttpRequest/access-control-basic-allow-star.htm",
+     {}
+    ]
+   ],
+   "XMLHttpRequest/access-control-basic-allow.htm": [
+    [
+     "/XMLHttpRequest/access-control-basic-allow.htm",
+     {}
+    ]
+   ],
    "XMLHttpRequest/allow-lists-starting-with-comma.htm": [
     [
      "/XMLHttpRequest/allow-lists-starting-with-comma.htm",
      {}
     ]
    ],
    "XMLHttpRequest/anonymous-mode-unsupported.htm": [
     [
@@ -327508,16 +328054,22 @@
     ]
    ],
    "clear-site-data/resource.html": [
     [
      "/clear-site-data/resource.html",
      {}
     ]
    ],
+   "clear-site-data/storage.https.html": [
+    [
+     "/clear-site-data/storage.https.html",
+     {}
+    ]
+   ],
    "clipboard-apis/async-interfaces.https.html": [
     [
      "/clipboard-apis/async-interfaces.https.html",
      {}
     ]
    ],
    "clipboard-apis/async-navigator-clipboard-basics.https.html": [
     [
@@ -328772,16 +329324,28 @@
     ]
    ],
    "content-security-policy/img-src/img-src-wildcard-allowed.html": [
     [
      "/content-security-policy/img-src/img-src-wildcard-allowed.html",
      {}
     ]
    ],
+   "content-security-policy/inheritance/iframe.html": [
+    [
+     "/content-security-policy/inheritance/iframe.html",
+     {}
+    ]
+   ],
+   "content-security-policy/inheritance/window.html": [
+    [
+     "/content-security-policy/inheritance/window.html",
+     {}
+    ]
+   ],
    "content-security-policy/inside-worker/dedicated-inheritance.html": [
     [
      "/content-security-policy/inside-worker/dedicated-inheritance.html",
      {}
     ]
    ],
    "content-security-policy/inside-worker/dedicated-script.html": [
     [
@@ -328862,16 +329426,22 @@
     ]
    ],
    "content-security-policy/meta/meta-modified.html": [
     [
      "/content-security-policy/meta/meta-modified.html",
      {}
     ]
    ],
+   "content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [
+    [
+     "/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html",
+     {}
+    ]
+   ],
    "content-security-policy/navigation/to-javascript-url-frame-src.html": [
     [
      "/content-security-policy/navigation/to-javascript-url-frame-src.html",
      {}
     ]
    ],
    "content-security-policy/navigation/to-javascript-url-script-src.html": [
     [
@@ -332602,16 +333172,34 @@
     ]
    ],
    "css/css-transforms-1/transform_translate_zero.html": [
     [
      "/css/css-transforms-1/transform_translate_zero.html",
      {}
     ]
    ],
+   "css/css-transforms-2/animation/rotate-interpolation.html": [
+    [
+     "/css/css-transforms-2/animation/rotate-interpolation.html",
+     {}
+    ]
+   ],
+   "css/css-transforms-2/animation/scale-interpolation.html": [
+    [
+     "/css/css-transforms-2/animation/scale-interpolation.html",
+     {}
+    ]
+   ],
+   "css/css-transforms-2/animation/translate-interpolation.html": [
+    [
+     "/css/css-transforms-2/animation/translate-interpolation.html",
+     {}
+    ]
+   ],
    "css/css-transforms-2/parsing/rotate-parsing-invalid.html": [
     [
      "/css/css-transforms-2/parsing/rotate-parsing-invalid.html",
      {}
     ]
    ],
    "css/css-transforms-2/parsing/rotate-parsing-valid.html": [
     [
@@ -333466,16 +334054,28 @@
     ]
    ],
    "css/css-writing-modes-3/wm-propagation-body-computed-root.html": [
     [
      "/css/css-writing-modes-3/wm-propagation-body-computed-root.html",
      {}
     ]
    ],
+   "css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-lr.html": [
+    [
+     "/css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-lr.html",
+     {}
+    ]
+   ],
+   "css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-rl.html": [
+    [
+     "/css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-rl.html",
+     {}
+    ]
+   ],
    "css/css-writing-modes-3/writing-mode-parsing-001.html": [
     [
      "/css/css-writing-modes-3/writing-mode-parsing-001.html",
      {}
     ]
    ],
    "css/css-writing-modes-3/writing-mode-parsing-sideways-lr-001.html": [
     [
@@ -333820,16 +334420,22 @@
     ]
    ],
    "css/geometry-1/DOMRect-001.html": [
     [
      "/css/geometry-1/DOMRect-001.html",
      {}
     ]
    ],
+   "css/geometry-1/DOMRectList.html": [
+    [
+     "/css/geometry-1/DOMRectList.html",
+     {}
+    ]
+   ],
    "css/geometry-1/WebKitCSSMatrix.html": [
     [
      "/css/geometry-1/WebKitCSSMatrix.html",
      {}
     ]
    ],
    "css/geometry-1/WebKitCSSMatrix.worker.js": [
     [
@@ -333958,16 +334564,22 @@
     ]
    ],
    "cssom-view/CaretPosition-001.html": [
     [
      "/cssom-view/CaretPosition-001.html",
      {}
     ]
    ],
+   "cssom-view/DOMRectList.html": [
+    [
+     "/cssom-view/DOMRectList.html",
+     {}
+    ]
+   ],
    "cssom-view/HTMLBody-ScrollArea_quirksmode.html": [
     [
      "/cssom-view/HTMLBody-ScrollArea_quirksmode.html",
      {}
     ]
    ],
    "cssom-view/MediaQueryList-001.html": [
     [
@@ -336886,16 +337498,22 @@
     ]
    ],
    "editing/run/indent.html": [
     [
      "/editing/run/indent.html",
      {}
     ]
    ],
+   "editing/run/insert-list-items-in-table-cell.html": [
+    [
+     "/editing/run/insert-list-items-in-table-cell.html",
+     {}
+    ]
+   ],
    "editing/run/inserthorizontalrule.html": [
     [
      "/editing/run/inserthorizontalrule.html",
      {}
     ]
    ],
    "editing/run/inserthtml.html": [
     [
@@ -338808,16 +339426,40 @@
     ]
    ],
    "ext-xhtml-pubid/the-xhtml-syntax/parsing-xhtml-documents/xhtml-pubid-1.html": [
     [
      "/ext-xhtml-pubid/the-xhtml-syntax/parsing-xhtml-documents/xhtml-pubid-1.html",
      {}
     ]
    ],
+   "fetch/api/abort/cache.https.html": [
+    [
+     "/fetch/api/abort/cache.https.html",
+     {}
+    ]
+   ],
+   "fetch/api/abort/general-serviceworker.https.html": [
+    [
+     "/fetch/api/abort/general-serviceworker.https.html",
+     {}
+    ]
+   ],
+   "fetch/api/abort/general.html": [
+    [
+     "/fetch/api/abort/general.html",
+     {}
+    ]
+   ],
+   "fetch/api/abort/serviceworker-intercepted.https.html": [
+    [
+     "/fetch/api/abort/serviceworker-intercepted.https.html",
+     {}
+    ]
+   ],
    "fetch/api/basic/accept-header.any.js": [
     [
      "/fetch/api/basic/accept-header.any.html",
      {}
     ],
     [
      "/fetch/api/basic/accept-header.any.worker.html",
      {}
@@ -345738,16 +346380,22 @@
     ]
    ],
    "html/semantics/embedded-content/the-img-element/data-url.html": [
     [
      "/html/semantics/embedded-content/the-img-element/data-url.html",
      {}
     ]
    ],
+   "html/semantics/embedded-content/the-img-element/delay-load-event-detached.html": [
+    [
+     "/html/semantics/embedded-content/the-img-element/delay-load-event-detached.html",
+     {}
+    ]
+   ],
    "html/semantics/embedded-content/the-img-element/delay-load-event.html": [
     [
      "/html/semantics/embedded-content/the-img-element/delay-load-event.html",
      {}
     ]
    ],
    "html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html": [
     [
@@ -347122,16 +347770,40 @@
     ]
    ],
    "html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html": [
     [
      "/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html",
      {}
     ]
    ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-6.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/instantiation-error-6.html",
+     {}
+    ]
+   ],
+   "html/semantics/scripting-1/the-script-element/module/instantiation-error-7.html": [
+    [
+     "/html/semantics/scripting-1/the-script-element/module/instantiation-error-7.html",
+     {}
+    ]
+   ],
    "html/semantics/scripting-1/the-script-element/module/late-namespace-request.html": [
     [
      "/html/semantics/scripting-1/the-script-element/module/late-namespace-request.html",
      {}
     ]
    ],
    "html/semantics/scripting-1/the-script-element/module/late-star-export-request.html": [
     [
@@ -347542,22 +348214,40 @@
     ]
    ],
    "html/semantics/selectors/pseudo-classes/link.html": [
     [
      "/html/semantics/selectors/pseudo-classes/link.html",
      {}
     ]
    ],
+   "html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html": [
+    [
+     "/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html",
+     {}
+    ]
+   ],
+   "html/semantics/selectors/pseudo-classes/readwrite-readonly-type-change.html": [
+    [
+     "/html/semantics/selectors/pseudo-classes/readwrite-readonly-type-change.html",
+     {}
+    ]
+   ],
    "html/semantics/selectors/pseudo-classes/readwrite-readonly.html": [
     [
      "/html/semantics/selectors/pseudo-classes/readwrite-readonly.html",
      {}
     ]
    ],
+   "html/semantics/selectors/pseudo-classes/required-optional-hidden.html": [
+    [
+     "/html/semantics/selectors/pseudo-classes/required-optional-hidden.html",
+     {}
+    ]
+   ],
    "html/semantics/selectors/pseudo-classes/required-optional.html": [
     [
      "/html/semantics/selectors/pseudo-classes/required-optional.html",
      {}
     ]
    ],
    "html/semantics/selectors/pseudo-classes/valid-invalid.html": [
     [
@@ -349946,16 +350636,32 @@
     ]
    ],
    "http/content_length.html": [
     [
      "/http/content_length.html",
      {}
     ]
    ],
+   "http/refresh/navigate.window.js": [
+    [
+     "/http/refresh/navigate.window.html",
+     {}
+    ]
+   ],
+   "http/refresh/subresource.any.js": [
+    [
+     "/http/refresh/subresource.any.html",
+     {}
+    ],
+    [
+     "/http/refresh/subresource.any.worker.html",
+     {}
+    ]
+   ],
    "image-decodes/image-decode-iframe.html": [
     [
      "/image-decodes/image-decode-iframe.html",
      {
       "timeout": "long"
      }
     ]
    ],
@@ -362992,16 +363698,28 @@
     ]
    ],
    "orientation-event/idlharness.html": [
     [
      "/orientation-event/idlharness.html",
      {}
     ]
    ],
+   "orientation-sensor/OrientationSensor.https.html": [
+    [
+     "/orientation-sensor/OrientationSensor.https.html",
+     {}
+    ]
+   ],
+   "orientation-sensor/OrientationSensor_insecure_context.html": [
+    [
+     "/orientation-sensor/OrientationSensor_insecure_context.html",
+     {}
+    ]
+   ],
    "orientation-sensor/idlharness.https.html": [
     [
      "/orientation-sensor/idlharness.https.html",
      {}
     ]
    ],
    "page-visibility/idlharness.html": [
     [
@@ -363180,16 +363898,22 @@
     ]
    ],
    "payment-request/payment-request-constructor.https.html": [
     [
      "/payment-request/payment-request-constructor.https.html",
      {}
     ]
    ],
+   "payment-request/payment-request-ctor-currency-code-checks.https.html": [
+    [
+     "/payment-request/payment-request-ctor-currency-code-checks.https.html",
+     {}
+    ]
+   ],
    "payment-request/payment-request-id.https.html": [
     [
      "/payment-request/payment-request-id.https.html",
      {}
     ]
    ],
    "payment-request/payment-request-onshippingaddresschange-attribute.https.html": [
     [
@@ -363198,16 +363922,22 @@
     ]
    ],
    "payment-request/payment-request-onshippingoptionchange-attribute.https.html": [
     [
      "/payment-request/payment-request-onshippingoptionchange-attribute.https.html",
      {}
     ]
    ],
+   "payment-request/payment-request-shippingType-attribute.https.html": [
+    [
+     "/payment-request/payment-request-shippingType-attribute.https.html",
+     {}
+    ]
+   ],
    "payment-request/payment-request-show-method.https.html": [
     [
      "/payment-request/payment-request-show-method.https.html",
      {}
     ]
    ],
    "payment-request/payment-request-update-event-constructor.http.html": [
     [
@@ -372982,16 +373712,22 @@
     ]
    ],
    "service-workers/service-worker/iframe-sandbox-register-link-element.https.html": [
     [
      "/service-workers/service-worker/iframe-sandbox-register-link-element.https.html",
      {}
     ]
    ],
+   "service-workers/service-worker/immutable-prototype-serviceworker.https.html": [
+    [
+     "/service-workers/service-worker/immutable-prototype-serviceworker.https.html",
+     {}
+    ]
+   ],
    "service-workers/service-worker/import-scripts-resource-map.https.html": [
     [
      "/service-workers/service-worker/import-scripts-resource-map.https.html",
      {}
     ]
    ],
    "service-workers/service-worker/import-scripts-updated-flag.https.html": [
     [
@@ -373012,19 +373748,25 @@
     ]
    ],
    "service-workers/service-worker/installing.https.html": [
     [
      "/service-workers/service-worker/installing.https.html",
      {}
     ]
    ],
-   "service-workers/service-worker/interfaces.https.html": [
-    [
-     "/service-workers/service-worker/interfaces.https.html",
+   "service-workers/service-worker/interfaces-sw.https.html": [
+    [
+     "/service-workers/service-worker/interfaces-sw.https.html",
+     {}
+    ]
+   ],
+   "service-workers/service-worker/interfaces-window.https.html": [
+    [
+     "/service-workers/service-worker/interfaces-window.https.html",
      {}
     ]
    ],
    "service-workers/service-worker/invalid-blobtype.https.html": [
     [
      "/service-workers/service-worker/invalid-blobtype.https.html",
      {}
     ]
@@ -374550,40 +375292,16 @@
     ]
    ],
    "streams/readable-streams/general.sharedworker.html": [
     [
      "/streams/readable-streams/general.sharedworker.html",
      {}
     ]
    ],
-   "streams/readable-streams/pipe-through.dedicatedworker.html": [
-    [
-     "/streams/readable-streams/pipe-through.dedicatedworker.html",
-     {}
-    ]
-   ],
-   "streams/readable-streams/pipe-through.html": [
-    [
-     "/streams/readable-streams/pipe-through.html",
-     {}
-    ]
-   ],
-   "streams/readable-streams/pipe-through.serviceworker.https.html": [
-    [
-     "/streams/readable-streams/pipe-through.serviceworker.https.html",
-     {}
-    ]
-   ],
-   "streams/readable-streams/pipe-through.sharedworker.html": [
-    [
-     "/streams/readable-streams/pipe-through.sharedworker.html",
-     {}
-    ]
-   ],
    "streams/readable-streams/tee.dedicatedworker.html": [
     [
      "/streams/readable-streams/tee.dedicatedworker.html",
      {}
     ]
    ],
    "streams/readable-streams/tee.html": [
     [
@@ -376148,19 +376866,19 @@
     ]
    ],
    "webauthn/makecredential-badargs-cryptoparameters.https.html": [
     [
      "/webauthn/makecredential-badargs-cryptoparameters.https.html",
      {}
     ]
    ],
-   "webdriver/interface.html": [
-    [
-     "/webdriver/interface.html",
+   "webdriver/tests/interface.html": [
+    [
+     "/webdriver/tests/interface.html",
      {}
     ]
    ],
    "webgl/bufferSubData.html": [
     [
      "/webgl/bufferSubData.html",
      {}
     ]
@@ -380978,16 +381696,22 @@
     ]
    ],
    "webrtc/RTCPeerConnection-getDefaultIceServers.html": [
     [
      "/webrtc/RTCPeerConnection-getDefaultIceServers.html",
      {}
     ]
    ],
+   "webrtc/RTCPeerConnection-getIdentityAssertion.html": [
+    [
+     "/webrtc/RTCPeerConnection-getIdentityAssertion.html",
+     {}
+    ]
+   ],
    "webrtc/RTCPeerConnection-getStats.html": [
     [
      "/webrtc/RTCPeerConnection-getStats.html",
      {}
     ]
    ],
    "webrtc/RTCPeerConnection-getTransceivers.html": [
     [
@@ -381026,16 +381750,22 @@
     ]
    ],
    "webrtc/RTCPeerConnection-ontrack.html": [
     [
      "/webrtc/RTCPeerConnection-ontrack.html",
      {}
     ]
    ],
+   "webrtc/RTCPeerConnection-peerIdentity.html": [
+    [
+     "/webrtc/RTCPeerConnection-peerIdentity.html",
+     {}
+    ]
+   ],
    "webrtc/RTCPeerConnection-removeTrack.html": [
     [
      "/webrtc/RTCPeerConnection-removeTrack.html",
      {}
     ]
    ],
    "webrtc/RTCPeerConnection-setDescription-transceiver.html": [
     [
@@ -381104,28 +381834,70 @@
     ]
    ],
    "webrtc/RTCPeerConnectionIceEvent-constructor.html": [
     [
      "/webrtc/RTCPeerConnectionIceEvent-constructor.html",
      {}
     ]
    ],
+   "webrtc/RTCRtpParameters-codecs.html": [
+    [
+     "/webrtc/RTCRtpParameters-codecs.html",
+     {}
+    ]
+   ],
+   "webrtc/RTCRtpParameters-degradationPreference.html": [
+    [
+     "/webrtc/RTCRtpParameters-degradationPreference.html",
+     {}
+    ]
+   ],
+   "webrtc/RTCRtpParameters-encodings.html": [
+    [
+     "/webrtc/RTCRtpParameters-encodings.html",
+     {}
+    ]
+   ],
+   "webrtc/RTCRtpParameters-headerExtensions.html": [
+    [
+     "/webrtc/RTCRtpParameters-headerExtensions.html",
+     {}
+    ]
+   ],
+   "webrtc/RTCRtpParameters-rtcp.html": [
+    [
+     "/webrtc/RTCRtpParameters-rtcp.html",
+     {}
+    ]
+   ],
+   "webrtc/RTCRtpParameters-transactionId.html": [
+    [
+     "/webrtc/RTCRtpParameters-transactionId.html",
+     {}
+    ]
+   ],
    "webrtc/RTCRtpReceiver-getCapabilities.html": [
     [
      "/webrtc/RTCRtpReceiver-getCapabilities.html",
      {}
     ]
    ],
    "webrtc/RTCRtpReceiver-getContributingSources.html": [
     [
      "/webrtc/RTCRtpReceiver-getContributingSources.html",
      {}
     ]
    ],
+   "webrtc/RTCRtpReceiver-getParameters.html": [
+    [
+     "/webrtc/RTCRtpReceiver-getParameters.html",
+     {}
+    ]
+   ],
    "webrtc/RTCRtpReceiver-getStats.html": [
     [
      "/webrtc/RTCRtpReceiver-getStats.html",
      {}
     ]
    ],
    "webrtc/RTCRtpReceiver-getSynchronizationSources.html": [
     [
@@ -381146,16 +381918,22 @@
     ]
    ],
    "webrtc/RTCRtpSender-replaceTrack.html": [
     [
      "/webrtc/RTCRtpSender-replaceTrack.html",
      {}
     ]
    ],
+   "webrtc/RTCRtpSender-setParameters.html": [
+    [
+     "/webrtc/RTCRtpSender-setParameters.html",
+     {}
+    ]
+   ],
    "webrtc/RTCRtpTransceiver-setCodecPreferences.html": [
     [
      "/webrtc/RTCRtpTransceiver-setCodecPreferences.html",
      {}
     ]
    ],
    "webrtc/RTCRtpTransceiver-setDirection.html": [
     [
@@ -381188,16 +381966,22 @@
     ]
    ],
    "webrtc/getstats.html": [
     [
      "/webrtc/getstats.html",
      {}
     ]
    ],
+   "webrtc/historical.html": [
+    [
+     "/webrtc/historical.html",
+     {}
+    ]
+   ],
    "webrtc/interfaces.html": [
     [
      "/webrtc/interfaces.html",
      {}
     ]
    ],
    "webrtc/no-media-call.html": [
     [
@@ -404074,22 +404858,16 @@
     ]
    ],
    "css/css-namespaces-3/syntax-016.xml": [
     [
      "/css/css-namespaces-3/syntax-016.xml",
      {}
     ]
    ],
-   "css/css-position-3/sticky-input-box-position.html": [
-    [
-     "/css/css-position-3/sticky-input-box-position.html",
-     {}
-    ]
-   ],
    "css/css-regions-1/elements/video-001.html": [
     [
      "/css/css-regions-1/elements/video-001.html",
      {}
     ]
    ],
    "css/css-regions-1/stacking-context/javascript-stacking-context-002.html": [
     [
@@ -405072,34 +405850,16 @@
   },
   "wdspec": {
    "webdriver/elements/active.py": [
     [
      "/webdriver/elements/active.py",
      {}
     ]
    ],
-   "webdriver/get_title.py": [
-    [
-     "/webdriver/get_title.py",
-     {}
-    ]
-   ],
-   "webdriver/state/text/get_text.py": [
-    [
-     "/webdriver/state/text/get_text.py",
-     {}
-    ]
-   ],
-   "webdriver/status.py": [
-    [
-     "/webdriver/status.py",
-     {}
-    ]
-   ],
    "webdriver/tests/actions/key.py": [
     [
      "/webdriver/tests/actions/key.py",
      {}
     ]
    ],
    "webdriver/tests/actions/mouse.py": [
     [
@@ -405116,51 +405876,75 @@
    "webdriver/tests/actions/special_keys.py": [
     [
      "/webdriver/tests/actions/special_keys.py",
      {
       "timeout": "long"
      }
     ]
    ],
-   "webdriver/tests/cookies.py": [
-    [
-     "/webdriver/tests/cookies.py",
+   "webdriver/tests/contexts/maximize_window.py": [
+    [
+     "/webdriver/tests/contexts/maximize_window.py",
+     {}
+    ]
+   ],
+   "webdriver/tests/contexts/resizing_and_positioning.py": [
+    [
+     "/webdriver/tests/contexts/resizing_and_positioning.py",
+     {}
+    ]
+   ],
+   "webdriver/tests/cookies/cookies.py": [
+    [
+     "/webdriver/tests/cookies/cookies.py",
      {}
     ]
    ],
    "webdriver/tests/element_click/select.py": [
     [
      "/webdriver/tests/element_click/select.py",
      {}
     ]
    ],
    "webdriver/tests/get_window_rect.py": [
     [
      "/webdriver/tests/get_window_rect.py",
      {}
     ]
    ],
-   "webdriver/tests/maximize_window.py": [
-    [
-     "/webdriver/tests/maximize_window.py",
-     {}
-    ]
-   ],
-   "webdriver/tests/navigation.py": [
-    [
-     "/webdriver/tests/navigation.py",
+   "webdriver/tests/navigation/current_url.py": [
+    [
+     "/webdriver/tests/navigation/current_url.py",
+     {}
+    ]
+   ],
+   "webdriver/tests/navigation/get_title.py": [
+    [
+     "/webdriver/tests/navigation/get_title.py",
      {}
     ]
    ],
    "webdriver/tests/set_window_rect.py": [
     [
      "/webdriver/tests/set_window_rect.py",
      {}
     ]
+   ],
+   "webdriver/tests/state/text/get_text.py": [
+    [
+     "/webdriver/tests/state/text/get_text.py",
+     {}
+    ]
+   ],
+   "webdriver/tests/status.py": [
+    [
+     "/webdriver/tests/status.py",
+     {}
+    ]
    ]
   }
  },
  "paths": {
   "./.codecov.yml": [
    "e2322808739a5977e90896b4755cfc20f4ab2046",
    "support"
   ],
@@ -405168,57 +405952,45 @@
    "c8dab707b3810b2e1c7d2bb03dde0d302f7647ce",
    "support"
   ],
   "./.gitmodules": [
    "525f7d93f00f11086aabc1f652cf06623e21986c",
    "support"
   ],
   "./.travis.yml": [
-   "cbb810d5a5a5cc34871de3ccb0faae448c8f2d99",
+   "250f9bc8512445215c63504d28305b723c4b3385",
    "support"
   ],
   "./CONTRIBUTING.md": [
    "cc9b0261662898aef7f4eed81741361c3f7c6467",
    "support"
   ],
   "./LICENSE": [
    "cfedb92777a36954d6e285461bf224cb6d2b5407",
    "support"
   ],
   "./LICENSE.md": [
    "722729a1062b97ad2fdd43896b2c6a45b1fff144",
    "support"
   ],
   "./README.md": [
-   "aed51ad470a533b4bd11f6dc51c70c5cbcc825fd",
+   "d218aa2f6f1fcf5a6cd74dde0373dca431542353",
    "support"
   ],
   "./check_stability.ini": [
-   "4ee10945191db8ce3e1d8bfae86bc3f0ad40868f",
+   "f8af4287f3b0f6925a2a6c5c75b3788e24de1680",
    "support"
   ],
   "./config.default.json": [
    "26f2c0e4aced7e1787adacb36e11c3cbf44bbd48",
    "support"
   ],
-  "./lint": [
-   "ab5e8d20914f329be7e14690a21af641dd33f752",
-   "support"
-  ],
   "./lint.whitelist": [
-   "26bc4191618aa8880f5d0cd84510d09889e0cbab",
-   "support"
-  ],
-  "./manifest": [
-   "d949c67f96ff8bda8fc80d487aa5c1109ec77005",
-   "support"
-  ],
-  "./serve": [
-   "aa28dcfdd87f967544e051978bbccf9f3ce9c097",
+   "03e30970dd6e2a62a999b8aa1592a88c4cfc84be",
    "support"
   ],
   "./serve.py": [
    "0efa39b1f26f86d73f2fce4f9e46003d62057b41",
    "support"
   ],
   "./server-side.md": [
    "c51b17fbac2a2e3121dc74f7badbd2873ce92f61",
@@ -405227,18 +405999,26 @@
   "./update-built-tests.sh": [
    "99b5beb84b30521fa4c4a8a061acc309ee3d0d4a",
    "support"
   ],
   "./wpt": [
    "4312550682b01b597b993e75d0c521e9a26b09d9",
    "support"
   ],
-  "./wptrun": [
-   "43c9d3fce7085be3c51a34cced8a69706c125219",
+  ".well-known/README.md": [
+   "04a3fdbfc71c56c334f20d931dc7b427af2cce30",
+   "support"
+  ],
+  ".well-known/idp-proxy/README.md": [
+   "ff5a09cfac1bf14fee4c6c057bac351e3229706a",
+   "support"
+  ],
+  ".well-known/idp-proxy/mock-idp.js": [
+   "c6687ea38b936e06efda7e48c443250c289f3c62",
    "support"
   ],
   "2dcontext/2x2.png": [
    "c67d3f646e86413722833d2308a9bfc793a916bf",
    "support"
   ],
   "2dcontext/2x4.png": [
    "690bac789fecf2530b36dd889c68db3bd93ed9fd",
@@ -412211,24 +412991,44 @@
   "XMLHttpRequest/abort-upload-event-loadend.htm": [
    "07fc81c4d96ced6791efde32982fe3edff515cfe",
    "testharness"
   ],
   "XMLHttpRequest/access-control-and-redirects-async-same-origin.htm": [
    "48f2e103991c8c308054fd873be8b561b412b9c7",
    "testharness"
   ],
+  "XMLHttpRequest/access-control-and-redirects.htm": [
+   "ff051032814b1242f527970edc58675e3e14fb98",
+   "testharness"
+  ],
   "XMLHttpRequest/access-control-basic-allow-access-control-origin-header.htm": [
    "88aa693115ee05b05adea5273bdfab501b167a60",
    "testharness"
   ],
   "XMLHttpRequest/access-control-basic-allow-async.htm": [
    "eb115b994e3d5de90ccf54a904266c347959f35b",
    "testharness"
   ],
+  "XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-header.htm": [
+   "567806f8997dc26cc5a9334aaa7dfe6c222404a5",
+   "testharness"
+  ],
+  "XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-method.htm": [
+   "782aca237c5d30a3a6ba2ee9be4824e01446e411",
+   "testharness"
+  ],
+  "XMLHttpRequest/access-control-basic-allow-star.htm": [
+   "694f8b8d67002e7b27d98ea2eb32f27fee311cad",
+   "testharness"
+  ],
+  "XMLHttpRequest/access-control-basic-allow.htm": [
+   "8c2f2df46c8086f657806f763e68d775e1294bd0",
+   "testharness"
+  ],
   "XMLHttpRequest/allow-lists-starting-with-comma.htm": [
    "5e7870a6d66c475c2f96fd64a146ea751b08f4b1",
    "testharness"
   ],
   "XMLHttpRequest/anonymous-mode-unsupported.htm": [
    "54a03fefabfad02e09baa4e9d37e19b6403dad9b",
    "testharness"
   ],
@@ -412579,16 +413379,20 @@
   "XMLHttpRequest/resources/access-control-basic-allow-star.py": [
    "d9aa8e1eaf8e73256edabafec32960bba8499f40",
    "support"
   ],
   "XMLHttpRequest/resources/access-control-basic-allow.py": [
    "b7351f59af91646549075b6b732eeb6c750e3faf",
    "support"
   ],
+  "XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py": [
+   "5b043f99d8f9d3f1c253324447df2d0586bf735a",
+   "support"
+  ],
   "XMLHttpRequest/resources/access-control-origin-header.py": [
    "529883eed380c4505c1ddbc87ae5885254756626",
    "support"
   ],
   "XMLHttpRequest/resources/auth1/auth.py": [
    "cbe9305740f7e0a9e8c7be9dbfcb606f8abb2758",
    "support"
   ],
@@ -412731,24 +413535,32 @@
   "XMLHttpRequest/resources/nocors/folder.txt": [
    "92400e232461d345128d2d7303eb5f5bba12763f",
    "support"
   ],
   "XMLHttpRequest/resources/parse-headers.py": [
    "cc9f324cf5b044646edfc6aa9e98cdc2a40e41b9",
    "support"
   ],
+  "XMLHttpRequest/resources/redirect-cors.py": [
+   "7c3f13dda9213bb3c283f144fd9c0e26ec45a0df",
+   "support"
+  ],
   "XMLHttpRequest/resources/redirect.py": [
    "988961f44badedfcea4e1660339ea921178b7a42",
    "support"
   ],
   "XMLHttpRequest/resources/requri.py": [
    "7e84cbcb29783dd435c9be6ad960731d5d92706c",
    "support"
   ],
+  "XMLHttpRequest/resources/reset-token.py": [
+   "ba56e4c405f81ea5ca396417ae7cd48f2029f7cb",
+   "support"
+  ],
   "XMLHttpRequest/resources/send-after-setting-document-domain-window-1.htm": [
    "a4bd8b70cc61f9d403b529c079d47691a27abb8a",
    "support"
   ],
   "XMLHttpRequest/resources/send-after-setting-document-domain-window-2.htm": [
    "36e89e62be6ce5c28e943c9cf7eb4f4fdb5dfe3a",
    "support"
   ],
@@ -415512,17 +416324,17 @@
    "3bdcb55c864d99da109cdc0abe56c06aaf3e3d1e",
    "testharness"
   ],
   "background-fetch/interfaces.html": [
    "b8a8e6792e6f3df1057e1c1b38c5e62291838a22",
    "testharness"
   ],
   "background-fetch/interfaces.idl": [
-   "cb1f28998d888157cfde900072ab8220f9709837",
+   "fce19c6d658a1bae8c79ab659da9a9201a7b02bb",
    "support"
   ],
   "background-fetch/interfaces.worker.js": [
    "0c959d5fa41c3db70c326b83e064b8261a6f90b4",
    "testharness"
   ],
   "battery-status/OWNERS": [
    "c08081d13e4029cf4fffb48c15d323d8b15a581b",
@@ -415572,17 +416384,17 @@
    "3c203529afca2f6b2a075eb8a42bf2206e4f16af",
    "support"
   ],
   "battery-status/support-window-open.html": [
    "61b61d09a21daee964e0ebd26f7bdfdd1964c8ae",
    "support"
   ],
   "beacon/headers/header-content-type.html": [
-   "5753ef82d17941aaf0c929da8952f88aa4186f02",
+   "86ea95acb53498323dde13266834bb4bd2f3ad35",
    "testharness"
   ],
   "beacon/headers/header-referrer-no-referrer-when-downgrade.https.html": [
    "273c7d0110d5efc9fac0029cd257256894d3eb4b",
    "testharness"
   ],
   "beacon/headers/header-referrer-no-referrer.html": [
    "26a0a9453b36efbadb05c8185efe7f9a0d9d54c9",
@@ -415639,30 +416451,38 @@
   "clear-site-data/navigation.https.html": [
    "462ebc571ae718c9b34ed78e8798c9edfec18e8d",
    "testharness"
   ],
   "clear-site-data/resource.html": [
    "d60a41f939a4e69e162ba760f86f63bfaeef0360",
    "testharness"
   ],
+  "clear-site-data/storage.https.html": [
+   "2b14613ad14aa9925b7882a972efd44c2ccc29e7",
+   "testharness"
+  ],
   "clear-site-data/support/echo-clear-site-data.py": [
    "6d6822db671d4591d9c9d8aecfc9d6d2dcf2f308",
    "support"
   ],
   "clear-site-data/support/page_with_resource.sub.html": [
    "246451c21ea53f7ac0868a5d8772aa4527dd5664",
    "support"
   ],
   "clear-site-data/support/send_report.html": [
    "352a8a947bfa42fd59a93181f8aedb64ee6e37ae",
    "support"
   ],
+  "clear-site-data/support/service_worker.js": [
+   "eb87eb25d4b84ae78c57a7bd3cd3d43b4df99881",
+   "support"
+  ],
   "clear-site-data/support/test_utils.sub.js": [
-   "d2160b80cf5ff065516bd3f73410d41034a2ffcb",
+   "10f5f9d409ef513edb129e0e8522aa5f74d51ce8",
    "support"
   ],
   "clipboard-apis/async-interfaces.https.html": [
    "68a1ea255a72e54e6a2147797d4213914a79aece",
    "testharness"
   ],
   "clipboard-apis/async-navigator-clipboard-basics.https.html": [
    "59f25a9968d47079857989146e26562c3784be34",
@@ -435299,16 +436119,24 @@
   "content-security-policy/img-src/img-src-self-unique-origin.html": [
    "62e4c6f09a455e1338ef9c7463b0a210c6d3f0f7",
    "testharness"
   ],
   "content-security-policy/img-src/img-src-wildcard-allowed.html": [
    "4114664a54645718ccbb5292f5103dc1942724aa",
    "testharness"
   ],
+  "content-security-policy/inheritance/iframe.html": [
+   "3121f2277196e721af7d8cd522be148c875c79bd",
+   "testharness"
+  ],
+  "content-security-policy/inheritance/window.html": [
+   "5a59b9b239186ad49aa1928f0beb9cf4234b4a6e",
+   "testharness"
+  ],
   "content-security-policy/inside-worker/dedicated-inheritance.html": [
    "225fa2ffe085ac9b419d7ed5287cfad28f3945bf",
    "testharness"
   ],
   "content-security-policy/inside-worker/dedicated-script.html": [
    "6aa78808362a447ed6535a87f61f6a7cd4ef5670",
    "testharness"
   ],
@@ -435403,16 +436231,28 @@
   "content-security-policy/meta/meta-img-src.html": [
    "6cce46e53c3a3934f7f09a086026d550ec3b31d3",
    "testharness"
   ],
   "content-security-policy/meta/meta-modified.html": [
    "2553698b40d91f95f33bb14e7bd906d665b0381a",
    "testharness"
   ],
+  "content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [
+   "bb01b98b633fe5ffb79b1b4e0943a77b85a11057",
+   "testharness"
+  ],
+  "content-security-policy/navigation/support/test_csp_self_window.sub.html": [
+   "df2273c83ff0d663fdcd46d91a0eb0e8a743b49b",
+   "support"
+  ],
+  "content-security-policy/navigation/support/test_csp_self_window.sub.html.sub.headers": [
+   "44b5dae4b9d0c5570e79d4fed8a7e8a709470c95",
+   "support"
+  ],
   "content-security-policy/navigation/to-javascript-url-frame-src.html": [
    "3070ea56bcb7dc454d7bc252377f0dc5bcb03c7c",
    "testharness"
   ],
   "content-security-policy/navigation/to-javascript-url-script-src.html": [
    "26e0c14927bab1b2fd6ce44b59472f336a700aa4",
    "testharness"
   ],
@@ -436360,49 +437200,49 @@
    "194fbc4cdaf1ff4a43e1a4e6b7bc7fbc17eec6d8",
    "support"
   ],
   "css-fonts/matching/fixed-stretch-style-over-weight-ref.html": [
    "ad90e9467acd3120ba00239b453199aa95497c5e",
    "support"
   ],
   "css-fonts/matching/fixed-stretch-style-over-weight.html": [
-   "9416d454fb13f9cdf3f8335ef2b93875b630fd66",
+   "3badf758ea56c9fb5113abca48be629f293e6abf",
    "reftest"
   ],
   "css-fonts/matching/font-matching.css": [
-   "aa898540134a6971823aba54b36027a436c99fd9",
+   "a24323853e4e73ee13b9a969090b0f721024114b",
    "support"
   ],
   "css-fonts/matching/resources/variabletest_matching.ttf": [
    "de5e05decac0303e5297ed2cb067c715ff4c4adf",
    "support"
   ],
   "css-fonts/matching/stretch-distance-over-weight-distance-ref.html": [
    "40ff6866132dd3e29a8d85c5fd949aba729ae304",
    "support"
   ],
   "css-fonts/matching/stretch-distance-over-weight-distance.html": [
-   "334199682aa1641d9904d5fb38be61f96c590a8f",
+   "2d666b0543d30fc1cf85fc7a9bda1946ed83507d",
    "reftest"
   ],
   "css-fonts/matching/style-ranges-over-weight-direction-ref.html": [
    "05fe52539dc7bb809fc88ee1fee597288d843bf1",
    "support"
   ],
   "css-fonts/matching/style-ranges-over-weight-direction.html": [
-   "7c9fdc01ea1591a5926942f5c577ff8fbd36b260",
+   "9959089a65b466230e6217944c68342e5269b49a",
    "reftest"
   ],
   "css-fonts/variations/OWNERS": [
    "2f711301297bd297b6bf5ccde958cd7a59c9e678",
    "support"
   ],
   "css-fonts/variations/font-parse-numeric-stretch-style-weight.html": [
-   "93c5b724dd4cc44683a55316b568fa73f11affef",
+   "421e402060f1418562819bb6efae85a7a1cc8958",
    "testharness"
   ],
   "css-fonts/variations/resources/variabletest_box.ttf": [
    "2fc122ff444d3ddef1f29ebde9a87827244ceeb0",
    "support"
   ],
   "css-fonts/variations/variable-box-font-ref.html": [
    "65ccabcdeaa322eeceaa646863eba52654e3149b",
@@ -511775,16 +512615,20 @@
   "css/css-grid-1/grid-model/grid-vertical-align-001.html": [
    "adfa657da1bb65a313894a8b5010a62d7c629c34",
    "reftest"
   ],
   "css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-001.html": [
    "85a397623ccb6b2ced1450af19f0eaf3a2f6df22",
    "reftest"
   ],
+  "css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-002.html": [
+   "909c91b995daafc31a6fa9f6989dc78c892840e3",
+   "reftest"
+  ],
   "css/css-grid-1/layout-algorithm/grid-layout-free-space-unit.html": [
    "5873efcda9c17e48a8437a62bf6871cbf96bdc46",
    "reftest"
   ],
   "css/css-grid-1/placement/grid-layout-grid-span.html": [
    "d7767a1bbe0af424621e669376fc46fdd685af18",
    "reftest"
   ],
@@ -511851,16 +512695,20 @@
   "css/css-grid-1/reference/grid-layout-z-order-ref.html": [
    "3ac4bb610d37d2d31a42e0e6bd86837c9f097b79",
    "support"
   ],
   "css/css-grid-1/reference/grid-support-grid-auto-columns-rows-001-ref.html": [
    "ff487f266aa067949899506059e19d4b8fbf429c",
    "support"
   ],
+  "css/css-grid-1/reference/grid-support-grid-auto-columns-rows-002-ref.html": [
+   "15153e77178d8cd869839e9a449e9beb130af023",
+   "support"
+  ],
   "css/css-grid-1/reference/grid-text-green-margin-no-collapse-ref.html": [
    "feb53485e24aeaf9a5f27be5e42cc4a6fc5b8df0",
    "support"
   ],
   "css/css-grid-1/support/check-layout-th.js": [
    "a9d8444db24ab38518f07a965a8a537cc6add437",
    "support"
   ],
@@ -512944,17 +513792,17 @@
    "6307ecf282b941dbe1475bdb603208f4140b2f26",
    "support"
   ],
   "css/css-masking-1/test-mask.html": [
    "13f1c2ad253ea55e13781544bbfad4900a3a58c1",
    "reftest"
   ],
   "css/css-multicol-1/OWNERS": [
-   "b57cbdb893bb5494e68700974ff711b6078f962e",
+   "721c176d7b1e3d610405ea043c93288f7c09ebd0",
    "support"
   ],
   "css/css-multicol-1/multicol-basic-001.html": [
    "7cb568d75ea3fec9046ec69770fe59b8539beb02",
    "reftest"
   ],
   "css/css-multicol-1/multicol-basic-002.html": [
    "ebbb17ad93e23c81e7ddf899d7e7b13b8bed193a",
@@ -512979,30 +513827,30 @@
   "css/css-multicol-1/multicol-basic-007.xht": [
    "e3e436b319ffb1f337dc570de518f42cb1f365a7",
    "reftest"
   ],
   "css/css-multicol-1/multicol-basic-008.xht": [
    "848a55c4030658976dbd2d974e6f84af5b04c983",
    "reftest"
   ],
-  "css/css-multicol-1/multicol-block-clip-001-ref.xht": [
-   "52df45645962d7755cc5b3bc8b6a23390aa5e9a2",
-   "support"
-  ],
-  "css/css-multicol-1/multicol-block-clip-001.xht": [
-   "0bfb98cd583828b29fc633a5a81414b4487e9498",
-   "reftest"
-  ],
-  "css/css-multicol-1/multicol-block-clip-002-ref.xht": [
-   "62c7651a40669c2dab4e65287c40b283c6fb85a4",
-   "support"
-  ],
-  "css/css-multicol-1/multicol-block-clip-002.xht": [
-   "8d79a3ed0586ff53c953b815ab8bc2fa744d8be6",
+  "css/css-multicol-1/multicol-block-no-clip-001-ref.xht": [
+   "6afb96f8754a72747da16aacdab0570da8767884",
+   "support"
+  ],
+  "css/css-multicol-1/multicol-block-no-clip-001.xht": [
+   "68de9967f55c35fec8dc5320faa7eba3bb1ad98a",
+   "reftest"
+  ],
+  "css/css-multicol-1/multicol-block-no-clip-002-ref.xht": [
+   "7adc06282f790b8f92222983b9deb83e12f9a7f8",
+   "support"
+  ],
+  "css/css-multicol-1/multicol-block-no-clip-002.xht": [
+   "40425dbeaafff125094148caf361809b63b558c5",
    "reftest"
   ],
   "css/css-multicol-1/multicol-br-inside-avoidcolumn-001.xht": [
    "f2fe604ad53155fe3ba1eaaaadad7d4842aef239",
    "reftest"
   ],
   "css/css-multicol-1/multicol-br-inside-avoidcolumn-ref.xht": [
    "d6c09e048d1a938cbf814a9e88b9ba0877b0222f",
@@ -513024,17 +513872,17 @@
    "225895c702c7e5b91d9f167463410b795bd5bc2d",
    "reftest"
   ],
   "css/css-multicol-1/multicol-clip-001-ref.xht": [
    "6cc9e132ee13f51464a26aa9de40310ea9e02250",
    "support"
   ],
   "css/css-multicol-1/multicol-clip-001.xht": [
-   "eada3dec72ce77b3f574682a9f10001f5cd177b4",
+   "c73c8d4449e585178c120285c894f705fe59860d",
    "reftest"
   ],
   "css/css-multicol-1/multicol-clip-002-ref.xht": [
    "98e9f7426a389d86562a823b0f31fdbb2d62fb38",
    "support"
   ],
   "css/css-multicol-1/multicol-clip-002.xht": [
    "f117d40704ac1cde4c162410d52964ef0ac77242",
@@ -513128,33 +513976,33 @@
    "0b899eed278c7427523cdabd0b4f73d1f70f4c8a",
    "reftest"
   ],
   "css/css-multicol-1/multicol-count-computed-002.xht": [
    "76581613fb9ec4c0cf786361cb9f5b3d2977537b",
    "reftest"
   ],
   "css/css-multicol-1/multicol-count-computed-003-ref.xht": [
-   "6609329dd3993b57f79b9fe037f9f6c9346e3db7",
+   "80e54fbeedd11f39d9041d45d266cf87a69d28b1",
    "support"
   ],
   "css/css-multicol-1/multicol-count-computed-003.xht": [
-   "6e7d8e1fa3bf54c055158fb48ad43c9269b8d010",
+   "ce7639f1d4f7f992f529aa7016e6a7f0ab256464",
    "reftest"
   ],
   "css/css-multicol-1/multicol-count-computed-004-ref.xht": [
    "baee264cbbaed26a7cd1cc810a1a4b197be4b85f",
    "support"
   ],
   "css/css-multicol-1/multicol-count-computed-004.xht": [
    "1e8e1bbc0a9ede8998ebf395bb7aaafcd29216d8",
    "reftest"
   ],
   "css/css-multicol-1/multicol-count-computed-005.xht": [
-   "f3395d21c0fcab726231a414bbb4114457d271b1",
+   "fdc0811616680d44203af48c16fcbd91f5e2d9ea",
    "reftest"
   ],
   "css/css-multicol-1/multicol-count-computed-2-ref.xht": [
    "c56592171fc03c060391ed79cdc07504e3331110",
    "support"
   ],
   "css/css-multicol-1/multicol-count-computed-ref.xht": [
    "6709a84fd18a48dfb086fc16f9c5c88e428ba19d",
@@ -513308,17 +514156,17 @@
    "9d12dc2b311ab4bf2dfda4565fcdfab0008754c5",
    "reftest"
   ],
   "css/css-multicol-1/multicol-gap-large-001-ref.xht": [
    "a502a720a1ac5a28f3857caf36ccb2a9fec02776",
    "support"
   ],
   "css/css-multicol-1/multicol-gap-large-001.xht": [
-   "10fbfdc7a7e6a111e16af1361d81f73a9d69e76b",
+   "289b2d6a252b42203190818bf2998c869cba8f79",
    "reftest"
   ],
   "css/css-multicol-1/multicol-gap-large-002-ref.xht": [
    "aa667642c4d01eddaaf1f8dcf2e226f861f98b55",
    "support"
   ],
   "css/css-multicol-1/multicol-gap-large-002.xht": [
    "8db42282229ac06ac266dda7e9db56595dc135fb",
@@ -513916,17 +514764,17 @@
    "963ac6d7da248ff6f1589b51ffd34fc3dcc587a8",
    "reftest"
   ],
   "css/css-multicol-1/multicol-width-small-001-ref.xht": [
    "6d5602742ed66c1b24393aeff7605f2d93682e30",
    "support"
   ],
   "css/css-multicol-1/multicol-width-small-001.xht": [
-   "e9d93c9734aae96cfd5676c4ac52c2f2e0a6e63b",
+   "0962e4c7c6f3698ccbf6c82fa0664b9817ffe208",
    "reftest"
   ],
   "css/css-multicol-1/multicol-zero-height-001-ref.xht": [
    "77a1ed4066efbb3d248a899f327b3de37723f5db",
    "support"
   ],
   "css/css-multicol-1/multicol-zero-height-001.xht": [
    "88922e252f8ec0437ee747fe161f12983e94bd6f",
@@ -514527,16 +515375,24 @@
   "css/css-position-3/position-sticky-left-ref.html": [
    "9de7a8ba6019395d729b32e514cc3bd9fee25d2b",
    "support"
   ],
   "css/css-position-3/position-sticky-left.html": [
    "5151bca08dff652ea728cb8bccbb6b7c6d364dd8",
    "reftest"
   ],
+  "css/css-position-3/position-sticky-margins-ref.html": [
+   "0cdb788c913f47a121114ac5b8e6a140bb08c1ff",
+   "support"
+  ],
+  "css/css-position-3/position-sticky-margins.html": [
+   "72fb6ae7d97bf2448ebd68ccf110edd6bae2c92f",
+   "reftest"
+  ],
   "css/css-position-3/position-sticky-nested-bottom-ref.html": [
    "59a8e46358a8a5bf8638a2d1982c63becef5bc77",
    "support"
   ],
   "css/css-position-3/position-sticky-nested-bottom.html": [
    "3604a921be04927dd19b805b7c9abaed6d0e7c72",
    "reftest"
   ],
@@ -514599,16 +515455,24 @@
   "css/css-position-3/position-sticky-right-ref.html": [
    "9a4a11b22cb0ea13f38a7dded8469f4848550ed4",
    "support"
   ],
   "css/css-position-3/position-sticky-right.html": [
    "f79c0e3e99085e483652950b141fe15c3c4d01d8",
    "reftest"
   ],
+  "css/css-position-3/position-sticky-stacking-context-ref.html": [
+   "dd6e5d4734c924c1ad08d14db986fb89d7cb03f6",
+   "support"
+  ],
+  "css/css-position-3/position-sticky-stacking-context.html": [
+   "ac1e643ac9f03d0fe415c3f52a4db7c407dd3537",
+   "reftest"
+  ],
   "css/css-position-3/position-sticky-table-tfoot-bottom-ref.html": [
    "b902bec7e12fd6d9cad02c61f332a44f5818f8ee",
    "support"
   ],
   "css/css-position-3/position-sticky-table-tfoot-bottom.html": [
    "4caf24ad5f783119598d52b40425ae3433b61da6",
    "reftest"
   ],
@@ -514671,19 +515535,23 @@
   "css/css-position-3/position-sticky-top-ref.html": [
    "e5a05c21494a2e2923d1ed37050ec75db7ab55cd",
    "support"
   ],
   "css/css-position-3/position-sticky-top.html": [
    "30c0c00c6313a747b51c8b6d4f1301056af56560",
    "reftest"
   ],
-  "css/css-position-3/sticky-input-box-position.html": [
-   "9db7590153e30d3f8ad34e76384ef19678e5bbdb",
-   "visual"
+  "css/css-position-3/position-sticky-writing-modes-ref.html": [
+   "407a1831479ccca61f6f7b268abcbf97f667f0bf",
+   "support"
+  ],
+  "css/css-position-3/position-sticky-writing-modes.html": [
+   "b6d16a38b73d4c107e587194818a542fee9d0716",
+   "reftest"
   ],
   "css/css-pseudo-4/OWNERS": [
    "e196548942a4d77448f734235b3456e2a830a5a7",
    "support"
   ],
   "css/css-pseudo-4/first-letter-001-ref.html": [
    "f53ee70c3b61a9f812a9a44afb1364040563f473",
    "support"
@@ -529451,16 +530319,32 @@
   "css/css-transforms-1/ttwf-transform-translatex-001.html": [
    "856b911eeac68b140967802497080aeb7ffebbe6",
    "reftest"
   ],
   "css/css-transforms-1/ttwf-transform-translatey-001.html": [
    "7a9cc02dc9cddb5888ffe57ff57693689a510594",
    "reftest"
   ],
+  "css/css-transforms-2/animation/resources/interpolation-testcommon.js": [
+   "e53ebd086f11169bf516f4d2e68449290943ba98",
+   "support"
+  ],
+  "css/css-transforms-2/animation/rotate-interpolation.html": [
+   "f5b8b30c9bc0789d59b3451789c24009b93dd21f",
+   "testharness"
+  ],
+  "css/css-transforms-2/animation/scale-interpolation.html": [
+   "51271e16c98a7a4e6405c28d149e77eb439e670c",
+   "testharness"
+  ],
+  "css/css-transforms-2/animation/translate-interpolation.html": [
+   "9a28f675c790c3dec66f655418051a5a7ba52ec7",
+   "testharness"
+  ],
   "css/css-transforms-2/backface-visibility-hidden-001.html": [
    "d12cfa3b31b7f98d0ff5693bfde49247d34cb156",
    "reftest"
   ],
   "css/css-transforms-2/css-rotate-2d-3d-001-ref.html": [
    "e8eb884dee96dd6ed6af0b06aff76b45ef2f4996",
    "support"
   ],
@@ -531767,16 +532651,44 @@
   "css/css-ui-3/reference/text-overflow-002-ref.html": [
    "4d1a34038e19a8b086c7e0a1d56cebac202ead91",
    "support"
   ],
   "css/css-ui-3/reference/text-overflow-005-ref.html": [
    "ea7ec45c0b7b59812e6592c6211986d5ea3127af",
    "support"
   ],
+  "css/css-ui-3/reference/text-overflow-006-ref.html": [
+   "e6c2501941e2c8275d2d2a5322c217533f370d63",
+   "support"
+  ],
+  "css/css-ui-3/reference/text-overflow-008-ref.html": [
+   "1aeb23c5928c075cffbb7fc81a4b6e328f60fc06",
+   "support"
+  ],
+  "css/css-ui-3/reference/text-overflow-012-ref.html": [
+   "cd83e5bc38f51672eff31efab017431065d17b9e",
+   "support"
+  ],
+  "css/css-ui-3/reference/text-overflow-013-ref.html": [
+   "414a9396a5972ec32b7d4b0e891c4b883b8bfb33",
+   "support"
+  ],
+  "css/css-ui-3/reference/text-overflow-016-ref.html": [
+   "cd35899144c43cb2a76d2986a28cd009140d7cca",
+   "support"
+  ],
+  "css/css-ui-3/reference/text-overflow-021-ref.html": [
+   "317e02ebc1fb90e7d91bed1fd982d2bf81a10cfc",
+   "support"
+  ],
+  "css/css-ui-3/reference/text-overflow-022-ref.html": [
+   "a223e8c0151a7ffc350466dd3b13f766f67425e8",
+   "support"
+  ],
   "css/css-ui-3/resize-001.html": [
    "cee9af6bf866dc360a2f6e8a8a8b29376205dfde",
    "manual"
   ],
   "css/css-ui-3/resize-002.html": [
    "6bac967ea52ac21e91e2360aadb98e8811a08174",
    "manual"
   ],
@@ -531855,16 +532767,20 @@
   "css/css-ui-3/resize-021.html": [
    "cb95c6ff5f784bcd91a044a5ed3fcc2ae311f388",
    "manual"
   ],
   "css/css-ui-3/select-cursor-001-manual.html": [
    "192de157a390bef30b481257c3979c117c08e6fa",
    "manual"
   ],
+  "css/css-ui-3/support/1x1-red.png": [
+   "b8da86921d04ba42f42b0a60b03c5c2172f58c2b",
+   "support"
+  ],
   "css/css-ui-3/support/PTS/PngSuite.LICENSE": [
    "6535877ae26ff794820c6bde77fb7d59a322e2ff",
    "support"
   ],
   "css/css-ui-3/support/PTS/PngSuite.README": [
    "0bda6749a496b4ad12d80a0a71f89799135e84d5",
    "support"
   ],
@@ -532803,16 +533719,84 @@
   "css/css-ui-3/text-overflow-004.html": [
    "7f8d6b8a49fe41b336b437083978acf69e562a1e",
    "reftest"
   ],
   "css/css-ui-3/text-overflow-005.html": [
    "19d88ba58ec539abc1e32a3e07526a7abea355f4",
    "reftest"
   ],
+  "css/css-ui-3/text-overflow-006.html": [
+   "f52b6fb409dac90a71fa71c201d0b8c08d805fbd",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-007.html": [
+   "c4efe1edf35eaf83285d87829304ff371e33c76e",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-008.html": [
+   "6dae594a6197701649c6fafcbc2f266131fcd041",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-009.html": [
+   "e5de25b0ba1656c38a7c732baffc4f3306683f23",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-010.html": [
+   "6f55e6742384c08368649656cda8f46aee5fe619",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-011.html": [
+   "5ce16822f7171d50bc2e2659f9231cd33f5593ca",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-012.html": [
+   "2c83443f2808e4b20b25dcdc4f8bb254e00b40e8",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-013.html": [
+   "625eeabf9fad164337a1e40cbd038d3a6b471786",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-014.html": [
+   "d3b43ba202011615e0fc2ccd80e742e7b7a22b84",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-015.html": [
+   "ed90af2ad47fd37b3c40ae2c9ac2ae5c9343abf1",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-016.html": [
+   "a1e53d9b311db7d49fcbffeb9a4632ec79bd5721",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-017.html": [
+   "03ae27b87d81b474cbea774f2f39ff32e654575c",
+   "manual"
+  ],
+  "css/css-ui-3/text-overflow-018.html": [
+   "f46736c20bfc3cf7bd169d7bdad2c90f2e206556",
+   "manual"
+  ],
+  "css/css-ui-3/text-overflow-019.html": [
+   "42c979c66b0bc6a253416c6dfc665ab88fc110ce",
+   "manual"
+  ],
+  "css/css-ui-3/text-overflow-020.html": [
+   "99c73b2e261a5526d7883572eb2ce61da0b58688",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-021.html": [
+   "afbaf2e7d3acfa93b295b656a0ffbb2a4f74011f",
+   "reftest"
+  ],
+  "css/css-ui-3/text-overflow-022.html": [
+   "095f78700529b34397887722b57b56dd7dd97861",
+   "reftest"
+  ],
   "css/css-ui-3/text-overflow-ref.html": [
    "db55b0b95a7406e9c4f00081b3e2cbe6b07363f7",
    "support"
   ],
   "css/css-ui-3/text-overflow.html": [
    "d3a6c835c23b82a85398e7981461a0cd3a75b861",
    "manual"
   ],
@@ -539711,16 +540695,24 @@
   "css/css-writing-modes-3/wm-propagation-body-015.xht": [
    "cd58814cd747579216fc3d038849b2ecfaa22e39",
    "reftest"
   ],
   "css/css-writing-modes-3/wm-propagation-body-computed-root.html": [
    "a212bca7bfbf52fb0358d0ea6567fa8e3df643a9",
    "testharness"
   ],
+  "css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-lr.html": [
+   "a4284176396d19a960760502597a34f7852aa4b9",
+   "testharness"
+  ],
+  "css/css-writing-modes-3/wm-propagation-body-scroll-offset-vertical-rl.html": [
+   "eba0c1019f7a6294520aadd26f67d5b9ff993f4f",
+   "testharness"
+  ],
   "css/css-writing-modes-3/writing-mode-horizontal-001l.html": [
    "b8266a3ac8d55bcf9ee7ddddc31cdedb07717da1",
    "reftest"
   ],
   "css/css-writing-modes-3/writing-mode-horizontal-001r.html": [
    "31e5adcbf86ca246d91728a67fb5a81194d9df0f",
    "reftest"
   ],
@@ -542535,16 +543527,20 @@
   "css/geometry-1/DOMQuad-002.html": [
    "722ba06b5998c0ed9608ef3509a536df3a914880",
    "testharness"
   ],
   "css/geometry-1/DOMRect-001.html": [
    "f24895dc1d994388c45fb6fa39132a7e1c03d18b",
    "testharness"
   ],
+  "css/geometry-1/DOMRectList.html": [
+   "382b6c7ea9bc4c75d1b007b59ccdcb9c642f51ce",
+   "testharness"
+  ],
   "css/geometry-1/OWNERS": [
    "4b2b22591c272446136118ce3d174d1b66200743",
    "support"
   ],
   "css/geometry-1/WebKitCSSMatrix.html": [
    "353fb5d2950784a88ce7764bb23c4267ac837ca8",
    "testharness"
   ],
@@ -542552,33 +543548,33 @@
    "35d9a1d1a7f655b55d94d0b409e9562a3fd08db5",
    "testharness"
   ],
   "css/geometry-1/historical.html": [
    "f3462b981784755425a82ba050850ef8d3d36976",
    "testharness"
   ],
   "css/geometry-1/interfaces.html": [
-   "5381de7d65645da14f56f906363b00ffda90e524",
+   "c3ec6da200303fb99e86255eaf1da1e261374d39",
    "testharness"
   ],
   "css/geometry-1/interfaces.worker.js": [
    "22348a0aaeec8dcd677b8f60486f2e043b8f8a86",
    "testharness"
   ],
   "css/geometry-1/structured-serialization.html": [
-   "6f38a37d56ffb9d2ddc17f7c4ed0613b7a5c8136",
+   "1cc9f91deb2cf68704f0f5cda77a3288f45d5c5a",
    "testharness"
   ],
   "css/geometry-1/support/dommatrix-test-util.js": [
    "d0f0c482648ac39ccaebe359880b079369a8ba21",
    "support"
   ],
   "css/geometry-1/support/interfaces.js": [
-   "083416b9f77bf1d06802ca30b6231c2897f4348d",
+   "13d88ccf8c2f03db7e1db7f6fc704ba46a06e0e1",
    "support"
   ],
   "css/mediaqueries-3/OWNERS": [
    "38493049aff40e744da38bc0755d40fa4d56bfc9",
    "support"
   ],
   "css/mediaqueries-3/aspect-ratio-001.html": [
    "2fb6b604885428889a4d21d1e9aa382d86c71b44",
@@ -572455,16 +573451,20 @@
   "css/work-in-progress/ttwf_tokyo/takuya/font-family-fallback18n.html": [
    "c0e7ffc3849463b430b08fc7ba4dada987315ec3",
    "support"
   ],
   "cssom-view/CaretPosition-001.html": [
    "182826b894852721a2efa7eaa0a3437904f13dbc",
    "testharness"
   ],
+  "cssom-view/DOMRectList.html": [
+   "020d13088ba7b4b58ecb80bef3656a5a415b03ea",
+   "testharness"
+  ],
   "cssom-view/HTMLBody-ScrollArea_quirksmode.html": [
    "6de6ee944522c61bc45335df91db210fd066b4f3",
    "testharness"
   ],
   "cssom-view/MediaQueryList-001.html": [
    "4b209fa18eda5f0c50639357e9851de28e545cf7",
    "testharness"
   ],
@@ -572560,17 +573560,17 @@
    "b3edbc3743a4c62125580846346f28aa8652242e",
    "testharness"
   ],
   "cssom-view/elementsFromPoint.html": [
    "72967af1e05060624a2eaacd059a59bcedacd934",
    "testharness"
   ],
   "cssom-view/historical.html": [
-   "1d88b7050e61c06aae97c42251401e1d6acb7f06",
+   "a7a39c209b62ff516b955bc16c28ea0f5b94d8ac",
    "testharness"
   ],
   "cssom-view/htmlelement-offset-width-001.html": [
    "071bcc0320577077bc6768921f28e33e892ccd9a",
    "testharness"
   ],
   "cssom-view/iframe.html": [
    "81c8e70138fc30d0954d9de692ee396310586c7f",
@@ -573460,17 +574460,17 @@
    "2ec52a6baa7490478ec61e72bf89b2ec09d453b5",
    "testharness"
   ],
   "docs/.gitignore": [
    "e74984773578df84decce0bfd0db831220a2b008",
    "support"
   ],
   "docs/.ruby-version": [
-   "6a53a60564f3c6b4956718496467be313e77067d",
+   "1398f232620ec3c548dc2756fd74cfb365773033",
    "support"
   ],
   "docs/CNAME": [
    "107ba21d88f427ac417717e9082a26f2c024afb8",
    "support"
   ],
   "docs/Gemfile": [
    "aeebae31cec9dcf7a29f11858f6e67e03366e876",
@@ -573536,17 +574536,17 @@
    "c3f14eb28a73ec65fe80396c89fe94cd49a698ed",
    "support"
   ],
   "docs/_reviewing-tests/index.md": [
    "e1b4b49cbd7ea1fd703c7ab3814deee0669e9336",
    "support"
   ],
   "docs/_running-tests/index.md": [
-   "8c996a7b797bec83c579f5fd643fdfca32a30cc6",
+   "db5774a0002bdc110d889ca1c925c1a0d6741ae8",
    "support"
   ],
   "docs/_writing-tests/ahem.md": [
    "f3c2b3315367f25f4b29900a4ff37c7b82979e19",
    "support"
   ],
   "docs/_writing-tests/assumptions.md": [
    "8bb7a1cda9084f179e1373b8600d597d1072c08c",
@@ -573560,53 +574560,53 @@
    "05dbc66f5b2a1a590432d4669753d16b9d2b5da2",
    "support"
   ],
   "docs/_writing-tests/file-names.md": [
    "4c97665a2c746bcc44be925352e798311562fc12",
    "support"
   ],
   "docs/_writing-tests/general-guidelines.md": [
-   "f527b13136eda8b5ee74fc0e8f26190c38b542f7",
+   "f579498b3ed235aacbf0e359a48a7e95b963f16f",
    "support"
   ],
   "docs/_writing-tests/idlharness.md": [
    "9f908f014553757d12fb91626a31a8312ec75bc5",
    "support"
   ],
   "docs/_writing-tests/index.md": [
    "8ef1c49c0692116968994e66483a318f6f40f5d3",
    "support"
   ],
   "docs/_writing-tests/lint-tool.md": [
-   "76bb45b6385e589efcfadd523dac8babd07b16d6",
+   "efbc0361cf1f9ae0ac46ea7b57f8a2e8de7e4f8d",
    "support"
   ],
   "docs/_writing-tests/manual.md": [
    "2c2ba2b257c7705a5b1f98f259fc0bc5df4bce17",
    "support"
   ],
   "docs/_writing-tests/reftests.md": [
    "19c5c75eb5d2a09f8ba61f94900f4e80a2d6b1bf",
    "support"
   ],
   "docs/_writing-tests/rendering.md": [
    "ec1533df5a1bc5a13b9ceaac1265c0784ccd0a27",
    "support"
   ],
   "docs/_writing-tests/server-features.md": [
-   "b99519a3280770fb339c31237f1d90fa523e3644",
+   "d89a6d340ebb3808293d5b480772a65e765945a7",
    "support"
   ],
   "docs/_writing-tests/submission-process.md": [
    "62747b6d0328445778050f3e4d6ec46dbdc3a18c",
    "support"
   ],
   "docs/_writing-tests/testharness-api.md": [
-   "41fd0824ee16043f2b59ce51f00f42785e8ed0ee",
+   "a5070b56fd0b045a0863b16d7b62d8c53ac1a56e",
    "support"
   ],
   "docs/_writing-tests/testharness.md": [
    "154bd922b6f50ec003280616381522a24faffb14",
    "support"
   ],
   "docs/_writing-tests/visual.md": [
    "43ab66e46d0a59851c3ad9d11cc0e2d5dd3ca8c5",
@@ -574476,17 +575476,17 @@
    "e3daa6a1f0c1d87f0b02909affcf190bd29eadf9",
    "testharness"
   ],
   "dom/nodes/Element-children.html": [
    "e3fe31ea198922fe64fbf985ae99d1cd4512567a",
    "testharness"
   ],
   "dom/nodes/Element-classlist.html": [
-   "c197df35960b77a7794eed10a1a927867a6658f4",
+   "10a0336430514dbbe8e837472c4476254ea8f8fc",
    "testharness"
   ],
   "dom/nodes/Element-closest.html": [
    "4171fb8b70948ba2617e05b118aaf5d9367e916f",
    "testharness"
   ],
   "dom/nodes/Element-firstElementChild-entity-xhtml.xhtml": [
    "d8babfc580fb43cfec2a2600be979ae769087c05",
@@ -574664,17 +575664,17 @@
    "141693242b110f7e0792efdd82f4c16e37653294",
    "testharness"
   ],
   "dom/nodes/Node-childNodes.html": [
    "29ae8fe6e50a9080aea5710ff96b253d6b4a77e0",
    "testharness"
   ],
   "dom/nodes/Node-cloneNode.html": [
-   "f35c88d16e9a3bfc47eb6965d13076f537a20c3c",
+   "f2f37f4ad272aef9f5ee46f8b44a668ff394d6c8",
    "testharness"
   ],
   "dom/nodes/Node-compareDocumentPosition.html": [
    "f0fff76218759f57e76cabafba32c2a1e6538532",
    "testharness"
   ],
   "dom/nodes/Node-constants.html": [
    "5baa1460bf427732d0b72b7e842245c21ddecf48",
@@ -575140,17 +576140,17 @@
    "cd87e7ecb902e44ec5e62a29f95331e614f1e221",
    "testharness"
   ],
   "dom/traversal/NodeIterator-removal.html": [
    "94eba47487961f5d3e5eecf3c44d3d7b993d95d4",
    "testharness"
   ],
   "dom/traversal/NodeIterator.html": [
-   "86f51fa036aeda8fa544509e32b3b7e41a831f6d",
+   "eb86c6666fc081eb37edaca8f53adb72993faf8e",
    "testharness"
   ],
   "dom/traversal/TreeWalker-acceptNode-filter.html": [
    "6c53fc62d9b4f3fe7b3e4c29b68ab568043fa6e8",
    "testharness"
   ],
   "dom/traversal/TreeWalker-basic.html": [
    "e66c403551d8b94133239a3131238fafe5fda296",
@@ -575180,17 +576180,17 @@
    "06d05eec6c7d2770ffd55d1cd68e82241db0724a",
    "testharness"
   ],
   "dom/traversal/TreeWalker-walking-outside-a-tree.html": [
    "d854688523b4a42e32a933fc80cd9b859af9ecbc",
    "testharness"
   ],
   "dom/traversal/TreeWalker.html": [
-   "539f28f8c9c46049e3866ba847fbe47a13ebe7bd",
+   "75038e47051a5667e305b363e73034342aa0a073",
    "testharness"
   ],
   "dom/traversal/traversal-support.js": [
    "a9514c0a23bbab2f59ef0b3033253530fd0dcc09",
    "support"
   ],
   "dom/traversal/unfinished/001.xml": [
    "c14cc82a551c239818bfaee7ca1ed5d8226d9f18",
@@ -575583,16 +576583,20 @@
   "editing/data/hilitecolor.js": [
    "8901795b4f4cde2f59d616764870b93220366180",
    "support"
   ],
   "editing/data/indent.js": [
    "821cc4fefcfce96832c1a4547698801b554ae426",
    "support"
   ],
+  "editing/data/insert-list-items-in-table-cells.js": [
+   "f6e8969d30a53e42c6adace5bd9598862b92c611",
+   "support"
+  ],
   "editing/data/inserthorizontalrule.js": [
    "118414ee839b94b9a747e0dfd2068d728c171db7",
    "support"
   ],
   "editing/data/inserthtml.js": [
    "3e853e0b406e4441a2326468b4e21c5b6ffc1c98",
    "support"
   ],
@@ -575779,16 +576783,20 @@
   "editing/run/hilitecolor.html": [
    "267c72c439d1b10fa29431cf4051a21e1188aada",
    "testharness"
   ],
   "editing/run/indent.html": [
    "1bed1283ad3b220b2949c0720cba60105c888ec2",
    "testharness"
   ],
+  "editing/run/insert-list-items-in-table-cell.html": [
+   "7bb730a43273a9220ef491511acbdd5c91fbc9b7",
+   "testharness"
+  ],
   "editing/run/inserthorizontalrule.html": [
    "49b66e6425c8d7d8c3c7b63070a745483bcfc46f",
    "testharness"
   ],
   "editing/run/inserthtml.html": [
    "030d9b7c2a4beeb59771824026bbeca52412f11e",
    "testharness"
   ],
@@ -577987,16 +578995,36 @@
   "fetch/OWNERS": [
    "e62831c5bfccaebe49384f42c515ece1b65244bb",
    "support"
   ],
   "fetch/README.md": [
    "cc3f679ff78bf2e3b39cf967102c257b84fd7680",
    "support"
   ],
+  "fetch/api/abort/cache.https.html": [
+   "9465007a35059e9d72d4ab1dd8bff0d44f47c3d6",
+   "testharness"
+  ],
+  "fetch/api/abort/general-serviceworker.https.html": [
+   "c7baa6df72fb31f6e5463d1a459c3dbf37d106e2",
+   "testharness"
+  ],
+  "fetch/api/abort/general.html": [
+   "203afd95b91a83943d3d84db5d43bfe4245fa177",
+   "testharness"
+  ],
+  "fetch/api/abort/general.js": [
+   "980a50cf0be82bc7ffb2e7024739173273ae1263",
+   "support"
+  ],
+  "fetch/api/abort/serviceworker-intercepted.https.html": [
+   "ee3512098bed44d034d9a0e6f2ccdbd5a07c7e42",
+   "testharness"
+  ],
   "fetch/api/basic/accept-header.any.js": [
    "ab322023411faca98534f620806b2418a6767e64",
    "testharness"
   ],
   "fetch/api/basic/block-mime-as-script.html": [
    "63ec2123a1f652ddd34d63bed20494068222c98d",
    "testharness"
   ],
@@ -578571,32 +579599,44 @@
   "fetch/api/resources/authentication.py": [
    "b915aef6ecaacf3484e7a1144ed4769c4ff36539",
    "support"
   ],
   "fetch/api/resources/bad-chunk-encoding.py": [
    "a916571cccadbe7dcc59ae1fa60f968b28d1ef47",
    "support"
   ],
+  "fetch/api/resources/basic.html": [
+   "eccdc121af21a750b7b75697402fc90b54c070cc",
+   "support"
+  ],
   "fetch/api/resources/cache.py": [
    "fe01c89d7bef1b6385f29250a0b458024b3e28ca",
    "support"
   ],
   "fetch/api/resources/clean-stash.py": [
    "beeda08c43c04dcef5c8d0f4f5d4f2c661bbee57",
    "support"
   ],
   "fetch/api/resources/data.json": [
    "6418064de426ecf8f0e508c751e60a0079ba044d",
    "support"
   ],
   "fetch/api/resources/echo-content.py": [
    "edc7a1d75d7c438ca3cca59f81d03058b3c2758f",
    "support"
   ],
+  "fetch/api/resources/empty.txt": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "fetch/api/resources/infinite-slow-response.py": [
+   "dee0fa986bf9ce4fd5cd5127a9945caf1b1a4e6f",
+   "support"
+  ],
   "fetch/api/resources/inspect-headers.py": [
    "c9ac2870a45253664da7de1aaf82626fdd1482bb",
    "support"
   ],
   "fetch/api/resources/method.py": [
    "9ad4c5907e6fa4d8c4bca085f637af92db0f38f3",
    "support"
   ],
@@ -578607,20 +579647,32 @@
   "fetch/api/resources/redirect.py": [
    "387c35bf1e576f00a10ce5abb4cc92e78da56845",
    "support"
   ],
   "fetch/api/resources/script-with-header.py": [
    "07a90ffa656f67c9774d8080f80456e81750dc0c",
    "support"
   ],
+  "fetch/api/resources/stash-put.py": [
+   "c7619b1c9d5616bfcdd4c1dc8bc680ab291c8e7e",
+   "support"
+  ],
+  "fetch/api/resources/stash-take.py": [
+   "96cf0b3e0ef753633f3ea84e3e0fba95c38ecc6f",
+   "support"
+  ],
   "fetch/api/resources/status.py": [
    "d521bae08fa1ee19e7bbf4301157703e567ad5c6",
    "support"
   ],
+  "fetch/api/resources/sw-intercept.js": [
+   "833e7b3a3cd91a6b0482e1a1159aaed59fd63341",
+   "support"
+  ],
   "fetch/api/resources/top.txt": [
    "af2c7b4ca07ae6c74d261bc745e174df8ab3ffef",
    "support"
   ],
   "fetch/api/resources/trickle.py": [
    "adb1bc80366cf924cfe13f6c73555d999d1d8e4f",
    "support"
   ],
@@ -579295,16 +580347,20 @@
   "fullscreen/interfaces.html": [
    "f6f0dbc8a505896a0e7ec7aca2746bbd5c1eb7d9",
    "testharness"
   ],
   "fullscreen/model/move-to-iframe-manual.html": [
    "818cb1b5db729db4959591dc75d4bb1ae3c7542d",
    "manual"
   ],
+  "fullscreen/model/move-to-inactive-document-manual.html": [
+   "552d65141acc2221e8407316c02e0d4cf17db7eb",
+   "manual"
+  ],
   "fullscreen/model/remove-child-manual.html": [
    "b1142930c6c972057213bd477cf116fcc9e7fc2a",
    "manual"
   ],
   "fullscreen/model/remove-first-manual.html": [
    "3de98ae96822370fa80c1b8d61df254910a63ff9",
    "manual"
   ],
@@ -579348,17 +580404,17 @@
    "b2432e7ea263fb80be42e7eecf93a9d885c0205d",
    "manual"
   ],
   "generic-sensor/OWNERS": [
    "b1349055762c7d44414c0c11fb8500d5eee9a75f",
    "support"
   ],
   "generic-sensor/generic-sensor-tests.js": [
-   "8dc0d616ed851dcb9fca9aa751ebe580d6006f05",
+   "afe53161d26459005788e6e9e9bbc5461b3a9ea2",
    "support"
   ],
   "generic-sensor/idlharness.html": [
    "f968f5a81d25796f79cd22987810ec6832fa120d",
    "testharness"
   ],
   "geolocation-API/OWNERS": [
    "84c4182ceed0f75ada11e63c3dfc2acc2939cbb6",
@@ -579460,17 +580516,17 @@
    "031edb78f5ab21f51005fdb30a99a605669254ce",
    "support"
   ],
   "hr-time/test_cross_frame_start.html": [
    "289c39cd0c74f3ca28fe5087b75ef01135396594",
    "testharness"
   ],
   "hr-time/timeOrigin.html": [
-   "b121bee0f0c59cbd5e6b9860ebad694132842fc9",
+   "f07da265bb9d1036589ff116b14ea1370abc4194",
    "testharness"
   ],
   "hr-time/timing-attack.html": [
    "1d3d88e71fb886374b50c6dc2c1141a80c8c0a06",
    "testharness"
   ],
   "hr-time/window-worker-time-origin.html": [
    "556079c9d81c55df55c69738384991d31cad2c77",
@@ -582224,17 +583280,17 @@
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/dom/documents/dom-tree-accessors/Document.body.html": [
    "a9c8feb21f69d7a1c4824fa3dab73a7ae45dfd8f",
    "testharness"
   ],
   "html/dom/documents/dom-tree-accessors/Document.currentScript.html": [
-   "c7bbd7f042cf5b674217b4435be00b1dfd3af900",
+   "b8c28696c0974a392a9a62e079934641f57415b5",
    "testharness"
   ],
   "html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null-undef.html": [
    "2abf22188b368da2ec2f0990b33aabec66e1a8b4",
    "testharness"
   ],
   "html/dom/documents/dom-tree-accessors/Element.getElementsByClassName-null-undef.html": [
    "c841aa05ad82b8524e8daebfa1895265877fc124",
@@ -589568,17 +590624,17 @@
    "bf4610909834f094b85d4c2113009fc9f25b140b",
    "testharness"
   ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html": [
    "0d5f568af3b295b36e390156caf5ce523fd83d93",
    "testharness"
   ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html": [
-   "e27bab4742633bc3a092806cb29e1417d2e8abf7",
+   "80aa762a69d2ed8a702ad42fc38a3b9ef58c8be1",
    "testharness"
   ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/remove-from-document.html": [
    "d7222fbc63c3cda31b31e63e8e3119a9c61cef0d",
    "testharness"
   ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/;url=foo": [
    "4cd564f2f49d02aae8967c874ab8e397ae331ac2",
@@ -589591,16 +590647,20 @@
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo": [
    "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15",
    "support"
   ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo'bar": [
    "5bb64e33bd2c80d47ade635a802d316dbfd33911",
    "support"
   ],
+  "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.py": [
+   "299080c29e63843d660229bb8b974ebc0bfa0f18",
+   "support"
+  ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html": [
    "bc4cbc00c0d68887d3ff616acad34b519cfd2532",
    "support"
   ],
   "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/ufoo": [
    "f7defc9f99f2223629762f6b6d5ce1d2b461af1a",
    "support"
   ],
@@ -591607,18 +592667,22 @@
   "html/semantics/embedded-content/the-img-element/current-pixel-density/error.html": [
    "ca607612e24b5354ab806a717315bc313b924751",
    "testharness"
   ],
   "html/semantics/embedded-content/the-img-element/data-url.html": [
    "bdbfbe9a5908c6233bd7b9697a0762bd2e0f6ede",
    "testharness"
   ],
+  "html/semantics/embedded-content/the-img-element/delay-load-event-detached.html": [
+   "6845b4a7fd45b083c1c380ad021860654baefc4f",
+   "testharness"
+  ],
   "html/semantics/embedded-content/the-img-element/delay-load-event.html": [
-   "e4782535af755b29864fd3de67bbdd0de13f19d7",
+   "54096da852f0ba13a634ba6bf9e3d2070bba8e5f",
    "testharness"
   ],
   "html/semantics/embedded-content/the-img-element/document-adopt-base-url.html": [
    "a4b542eb344cca6bdcceceb3aa7006e900f5400f",
    "reftest"
   ],
   "html/semantics/embedded-content/the-img-element/document-base-url-ref.html": [
    "add78257076d22891334b93c8072d098ace9b6eb",
@@ -593499,16 +594563,108 @@
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-2.html": [
    "70271ef6fbf9f6e4f6e61438691b6fce317137e9",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html": [
    "80fa90a214bb4839703c36f9db36e07f3a2ca7f2",
    "testharness"
   ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html": [
+   "dbb8eb640576cd4f658e32dec441919e943f8d21",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-4a.js": [
+   "051586d3af5158af29ee8f46157964252a47ef65",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-4b.js": [
+   "ab58fcee083c1484097922a5e4f90927d798b13d",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-4c.js": [
+   "7ba0fbc265b5d816566bbee9dda4959270cd739c",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-4d.js": [
+   "bcbde9b3648aaac72d8d2ae20846a53cef8abed3",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html": [
+   "fcc8da57e88ee87592a02888c54bb6d66e5172f6",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5a.js": [
+   "b946a91f9241587336e2e173ad2e094c3c374e79",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5b.js": [
+   "4ce41460910bd773fb1ba8432e20187991af5a9e",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5c.js": [
+   "d19dda7708e1f524da0ae82f26d01897290d5c2e",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5d.js": [
+   "ccc29417e76a978123dc6a0c85eeb4b61fd128e1",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-5e.js": [
+   "49aebfc4b8248cd6039ef345ce89331bd18be4c8",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-6.html": [
+   "3551a3ff4bb431ac58f5756f44fd529008f57379",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-6a.js": [
+   "7e23dd514acd330e9156c45cd5821138d48fc427",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-6b.js": [
+   "babcf67942ddc996ec49bc2e7cf0db30378ae1fa",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-6c.js": [
+   "105bb52e0cb5bbbf47a959b2da23c14a9a8d3391",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-6d.js": [
+   "52199bd9779c8ff3c606934f2db7801a8fb791dd",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7.html": [
+   "0a0751baa86be9922f3676e459472cfdb4aa67e6",
+   "testharness"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7a.js": [
+   "ae6edd647b25ebc5267dc54a85e41d09d0159252",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7b.js": [
+   "73c79dc1dfd80094b8a983171ec380fd8f4d39c0",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7c.js": [
+   "35739dc7feeeb2121f9559d6dd2f16a881c00cbd",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7d.js": [
+   "a2ac1ce5cc9f227728edba988d4d0700394ed13f",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7e.js": [
+   "a2b6fc5dc9bcee139c7f9148cd39536f43a295ff",
+   "support"
+  ],
+  "html/semantics/scripting-1/the-script-element/module/instantiation-error-7f.js": [
+   "b8f46f5cfd3f85714684fe3f175723437d03b6a2",
+   "support"
+  ],
   "html/semantics/scripting-1/the-script-element/module/late-namespace-request.html": [
    "a04ecfd484ada80c436c880c6fb39abba47eac1c",
    "testharness"
   ],
   "html/semantics/scripting-1/the-script-element/module/late-star-export-request.html": [
    "2fd8c4ee6fcc66a8ddc2100a0840ebcc324a7d58",
    "testharness"
   ],
@@ -593976,17 +595132,17 @@
    "661adb3f098161bf4535d9184e175612cfcab886",
    "testharness"
   ],
   "html/semantics/scripting-1/the-template-element/template-element/template-content-node-document.html": [
    "1943b45780474af52c24d8c734072aba2fe6a442",
    "testharness"
   ],
   "html/semantics/scripting-1/the-template-element/template-element/template-content.html": [
-   "61432b241e8d7e2cd8d4c70f10260fd2f13371eb",
+   "a4d34cf0ed7b52cc9c30ad1d6b6aa322b5cfd2b4",
    "testharness"
   ],
   "html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html": [
    "546e0eb799aff1ab94e85d56674074f9dfc17e41",
    "testharness"
   ],
   "html/semantics/scripting-1/the-template-element/template-element/template-descendant-frameset.html": [
    "cda202e09a0d5f89e72984e2bfba4307d4a65647",
@@ -594115,20 +595271,32 @@
   "html/semantics/selectors/pseudo-classes/inrange-outofrange.html": [
    "8bcc8d0d7997c2bd55d66e816741ec4a9651dec7",
    "testharness"
   ],
   "html/semantics/selectors/pseudo-classes/link.html": [
    "c35cbd27d802f058e34ef687e41e3bb0f5a1ec3b",
    "testharness"
   ],
+  "html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html": [
+   "d3d596673f9a9310d433f3500109ec03e1b7e588",
+   "testharness"
+  ],
+  "html/semantics/selectors/pseudo-classes/readwrite-readonly-type-change.html": [
+   "68bfceb6c65638a0deeba8630c2e6e09f5dc344c",
+   "testharness"
+  ],
   "html/semantics/selectors/pseudo-classes/readwrite-readonly.html": [
    "835c87fe2a1952890b1adc3f39981a0c1360b5be",
    "testharness"
   ],
+  "html/semantics/selectors/pseudo-classes/required-optional-hidden.html": [
+   "0d132ded36e5eaad8c5a4018bc6f966c739f70ca",
+   "testharness"
+  ],
   "html/semantics/selectors/pseudo-classes/required-optional.html": [
    "503189428dbc44ad4cd5d9c93b22d2ea9307d89e",
    "testharness"
   ],
   "html/semantics/selectors/pseudo-classes/utils.js": [
    "ce490289e6d666e7c5af684ba949a48e08538e95",
    "support"
   ],
@@ -595995,32 +597163,60 @@
   "html/webappapis/user-prompts/printing/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "html/webappapis/user-prompts/simple-dialogs/.gitkeep": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
+  "http/OWNERS": [
+   "0bf8031d11c018af20c2a7387685b7b370ce643a",
+   "support"
+  ],
   "http/basic-auth-cache-test-ref.html": [
    "42fbbd76956a8d2a84221500f70bd5c42cf5c75a",
    "support"
   ],
   "http/basic-auth-cache-test.html": [
    "3695684b66b1929a582d7b1cffee9487400b9c1c",
    "reftest"
   ],
   "http/content_length.html": [
    "5ade7f549fe195af4e897debb4913e07ad237243",
    "testharness"
   ],
   "http/content_length.html.headers": [
    "c86f164a128d02814744e0456e4588062eb016c8",
    "support"
   ],
+  "http/refresh/README.md": [
+   "f503dfb32f6762191ad3fda507256b697ffd1602",
+   "support"
+  ],
+  "http/refresh/navigate.window.js": [
+   "d49d82110916c7bb675bb1c332c0d5499c180028",
+   "testharness"
+  ],
+  "http/refresh/resources/multiple.asis": [
+   "b0986e96d4eea0e280aec1a82bec472e39abcb22",
+   "support"
+  ],
+  "http/refresh/resources/refresh.py": [
+   "a64a162dee650125a4ba6244caa9a8a1de397371",
+   "support"
+  ],
+  "http/refresh/resources/refreshed.txt": [
+   "eb5608b416f1f461e2acd0dbc848cd93807250d9",
+   "support"
+  ],
+  "http/refresh/subresource.any.js": [
+   "dd861a7c3fd42255edb603f50c7466dd9132917c",
+   "testharness"
+  ],
   "http/resources/securedimage.py": [
    "bc4c7a8b5eef0e082a5fa7c8c763957d92730747",
    "support"
   ],
   "image-decodes/image-decode-iframe.html": [
    "2632f69b005ea382ed91bfb71a7e0e2ee931a0c8",
    "testharness"
   ],
@@ -596276,17 +597472,17 @@
    "f39e0bad95534e2cc59012436ea430fe2a414c05",
    "support"
   ],
   "interfaces/fullscreen.idl": [
    "fda57b55aabdc54d674851851451c6c69c514ed1",
    "support"
   ],
   "interfaces/geometry.idl": [
-   "b4c2837ade7a509306755eb7b682f6648c3684e3",
+   "738cdbf500518bb912f003a4c3da2daa94458115",
    "support"
   ],
   "interfaces/html.idl": [
    "7c77578dededdc99f2be1737373b9ebe59357938",
    "support"
   ],
   "interfaces/mediacapture-main.idl": [
    "3d59aebd6219a0312ade8c543bb389030d670d82",
@@ -607507,16 +608703,28 @@
   "orientation-event/t028-manual.html": [
    "6948dbbdc88ffd9aa84ad5a6c822b354809561b2",
    "manual"
   ],
   "orientation-sensor/OWNERS": [
    "b119dbb984792f33c6e7463f3105d37c3c3b7ad8",
    "support"
   ],
+  "orientation-sensor/OrientationSensor.https.html": [
+   "145b750c49bf703c68bcf4ad645448bc284d393b",
+   "testharness"
+  ],
+  "orientation-sensor/OrientationSensor_insecure_context.html": [
+   "700603c508503fe859502f334153aaa7f5e6f511",
+   "testharness"
+  ],
+  "orientation-sensor/OrientationSensor_onerror-manual.https.html": [
+   "6f0eb976affc21e49f48c42c1bd9d9eb0083ee40",
+   "manual"
+  ],
   "orientation-sensor/idlharness.https.html": [
    "71100177bcb537c18f98edfd7bf04d420714a78b",
    "testharness"
   ],
   "page-visibility/OWNERS": [
    "b82f9756b15ef3ea45fb250e304031d9ceaee9c7",
    "support"
   ],
@@ -607695,32 +608903,40 @@
   "payment-request/payment-request-constructor-crash.https.html": [
    "9983391839ed64c41f9a7ecfb48a9b4abe6b497c",
    "testharness"
   ],
   "payment-request/payment-request-constructor.https.html": [
    "847cc78f52dc5696886eedc77b2969a562caf74f",
    "testharness"
   ],
+  "payment-request/payment-request-ctor-currency-code-checks.https.html": [
+   "7efdfa3457fff90fc3f66054505dcf7a7ff4645b",
+   "testharness"
+  ],
   "payment-request/payment-request-id.https.html": [
    "a90cf1e385cfee1c2090f4144e08b7cb051366d5",
    "testharness"
   ],
   "payment-request/payment-request-onshippingaddresschange-attribute.https.html": [
    "c716788baf4b5e74c5bd5adbbd9f95d9ca98ce12",
    "testharness"
   ],
   "payment-request/payment-request-onshippingoptionchange-attribute.https.html": [
    "fc4772725ab7cab838d0d7bb97d0febeef8d093c",
    "testharness"
   ],
   "payment-request/payment-request-response-id.html": [
    "8feda1d3b4c071014d4c8c7898598c7d23086216",
    "support"
   ],
+  "payment-request/payment-request-shippingType-attribute.https.html": [
+   "b6c449dfe568dea727a18e10428e1b8e0186f8d4",
+   "testharness"
+  ],
   "payment-request/payment-request-show-method.https.html": [
    "e30f506c253ada159d343ef995f8a062c42677c5",
    "testharness"
   ],
   "payment-request/payment-request-update-event-constructor.http.html": [
    "017f1f1aca43171083833ddb27ff66e39902e85d",
    "testharness"
   ],
@@ -608672,17 +609888,17 @@
    "578d2aed4afa7cd6739610d353aebc591d832418",
    "testharness"
   ],
   "referrer-policy/OWNERS": [
    "f87103278641394f49c7e36acc9ff1ef60bacb79",
    "support"
   ],
   "referrer-policy/README.md": [
-   "a908472f8b8c083f37da8feb38a198363f75376c",
+   "da67e3de754801ef0b51b7be9bebc7170769388c",
    "support"
   ],
   "referrer-policy/css-integration/README.md": [
    "4723887022f00b8aaff113e8244708c0fe12b716",
    "support"
   ],
   "referrer-policy/css-integration/external-import-stylesheet.html": [
    "d5ee0ef7b717105e7aca8f3f688f1f41cec9bf2e",
@@ -616936,17 +618152,17 @@
    "590ee3c06c61aa6788a40a79c2d14fe813da11fe",
    "testharness"
   ],
   "service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html": [
    "a6652870c60e93ff522ac107c1b69ec9c9fb2781",
    "testharness"
   ],
   "service-workers/service-worker/ServiceWorkerGlobalScope/resources/close-worker.js": [
-   "559815205e99f825fdc0a0f2564e7e25586f3c05",
+   "4c116d7223d6d76ed2baa2cd39e2002f45d58171",
    "support"
   ],
   "service-workers/service-worker/ServiceWorkerGlobalScope/resources/error-worker.js": [
    "41b92697bbc0b75ce1087f8437afefb52ea7ce7a",
    "support"
   ],
   "service-workers/service-worker/ServiceWorkerGlobalScope/resources/extendable-message-event-constructor-worker.js": [
    "1ac8fb8c675c398257be0be676872b2944418aa8",
@@ -617283,16 +618499,20 @@
   "service-workers/service-worker/http-to-https-redirect-and-register.https.html": [
    "95aee5b0d561467fb5da27f62210be9808539706",
    "testharness"
   ],
   "service-workers/service-worker/iframe-sandbox-register-link-element.https.html": [
    "6cafc3245c88f7d96f6a4672b327d3b58ee4a0ee",
    "testharness"
   ],
+  "service-workers/service-worker/immutable-prototype-serviceworker.https.html": [
+   "5c17042fa54cd1fdba6f7aae513412d4a223b432",
+   "testharness"
+  ],
   "service-workers/service-worker/import-scripts-resource-map.https.html": [
    "6bc46467c667f942fd30de063806474e8c94cff0",
    "testharness"
   ],
   "service-workers/service-worker/import-scripts-updated-flag.https.html": [
    "e902940bec870cf548c576b5fd06d2e71fd3f97a",
    "testharness"
   ],
@@ -617303,18 +618523,22 @@
   "service-workers/service-worker/install-event-type.https.html": [
    "55175d94a5d90a030c03d598c079455bb93c71c8",
    "testharness"
   ],
   "service-workers/service-worker/installing.https.html": [
    "dda1a1967e6e0be64b9bd2198a08aa0429e185ff",
    "testharness"
   ],
-  "service-workers/service-worker/interfaces.https.html": [
-   "f5e18c249ad8264548923f3c875ffeff523ab424",
+  "service-workers/service-worker/interfaces-sw.https.html": [
+   "c6ea8c330c7886581ba57314cc65a707b25b44f3",
+   "testharness"
+  ],
+  "service-workers/service-worker/interfaces-window.https.html": [
+   "c596bb509623d00646cd8c1420394f7de8ff742d",
    "testharness"
   ],
   "service-workers/service-worker/invalid-blobtype.https.html": [
    "e2867d9813601fffbe2f8ea3827430015e0c4444",
    "testharness"
   ],
   "service-workers/service-worker/invalid-header.https.html": [
    "5cc3f2c872435df9c735390426a6cf8b4b788fb0",
@@ -618007,16 +619231,20 @@
   "service-workers/service-worker/resources/http-to-https-redirect-and-register-iframe.html": [
    "b1a69bedbfbcb8f5b38d35f637f75f167d80118a",
    "support"
   ],
   "service-workers/service-worker/resources/iframe-register-link-element.html": [
    "9ea5eb8893ae3d75c18566f5862c66df6bc831c0",
    "support"
   ],
+  "service-workers/service-worker/resources/immutable-prototype-serviceworker.js": [
+   "0a428649e0ceaaacdea5d156e829c63668bc3f72",
+   "support"
+  ],
   "service-workers/service-worker/resources/import-mime-type-worker.py": [
    "7881cd81f7fe54bf3be799f3549098c78b896574",
    "support"
   ],
   "service-workers/service-worker/resources/import-scripts-echo.py": [
    "95d29c9b8749cabf795d9a867e260827a8360640",
    "support"
   ],
@@ -618039,22 +619267,22 @@
   "service-workers/service-worker/resources/install-event-type-worker.js": [
    "fd486a19472f142bbd2909929a67ac3d39adc845",
    "support"
   ],
   "service-workers/service-worker/resources/install-worker-helper.html": [
    "9682ae01719d07e5713307a26b1b825087c4cf65",
    "support"
   ],
+  "service-workers/service-worker/resources/interfaces-idls.js": [
+   "881448e41003f3e942e6a0b8220e39db279da5cf",
+   "support"
+  ],
   "service-workers/service-worker/resources/interfaces-worker.sub.js": [
-   "393be6f93713e198afc5d2b7e6d229a39d591426",
-   "support"
-  ],
-  "service-workers/service-worker/resources/interfaces.js": [
-   "87d2be95591f013b611a30c6251b6d49099e377d",
+   "1cb237ff00a54414a6e4010f1288be51799a52d5",
    "support"
   ],
   "service-workers/service-worker/resources/invalid-blobtype-iframe.https.html": [
    "b491adf190bf4d891dfc613c10e3a05b8852969d",
    "support"
   ],
   "service-workers/service-worker/resources/invalid-blobtype-worker.js": [
    "af9e165e70fe3cb06eaae6a22d26370d8e368c26",
@@ -619440,17 +620668,17 @@
    "ed05dd7416cc07e178e481375c2372ce1094905e",
    "testharness"
   ],
   "streams/piping/pipe-through.html": [
    "ef036e94d09d47d1dc160a38ee6be2499431bf5f",
    "testharness"
   ],
   "streams/piping/pipe-through.js": [
-   "b9e607cc7a9b05d659000ac4171374351511d616",
+   "df36e48e468e526d2d77e80906d62d1ec8e6d276",
    "support"
   ],
   "streams/piping/pipe-through.serviceworker.https.html": [
    "e6604dc4e7f4404ee9dea5ab237fb4636bf9e85a",
    "testharness"
   ],
   "streams/piping/pipe-through.sharedworker.html": [
    "8ecb019e754fd4239cb35c27787897efc2dacccb",
@@ -619671,36 +620899,16 @@
   "streams/readable-streams/general.serviceworker.https.html": [
    "1792d6c45a5687777291a4dab031a954aa053752",
    "testharness"
   ],
   "streams/readable-streams/general.sharedworker.html": [
    "44f9ceaa3bfc9d8b92885997d322486bd0f237a6",
    "testharness"
   ],
-  "streams/readable-streams/pipe-through.dedicatedworker.html": [
-   "ed05dd7416cc07e178e481375c2372ce1094905e",
-   "testharness"
-  ],
-  "streams/readable-streams/pipe-through.html": [
-   "fddee6be61036c7fcd88a2e4661fbf5b5f796a18",
-   "testharness"
-  ],
-  "streams/readable-streams/pipe-through.js": [
-   "53d19585660c8c9062019eae5186de333417bbde",
-   "support"
-  ],
-  "streams/readable-streams/pipe-through.serviceworker.https.html": [
-   "e6604dc4e7f4404ee9dea5ab237fb4636bf9e85a",
-   "testharness"
-  ],
-  "streams/readable-streams/pipe-through.sharedworker.html": [
-   "8ecb019e754fd4239cb35c27787897efc2dacccb",
-   "testharness"
-  ],
   "streams/readable-streams/tee.dedicatedworker.html": [
    "028f2d402a74140b40a9a3eace6aad1cc862bb64",
    "testharness"
   ],
   "streams/readable-streams/tee.html": [
    "2cebca15a9977e98c8f2f85648d6a72b5341464e",
    "testharness"
   ],
@@ -620136,17 +621344,17 @@
    "fd41b1f5db84abb71fcaff4d84eb9106f464f1da",
    "support"
   ],
   "svg/README.md": [
    "ce9e3471676d5a50b91f6b274d648b481e509223",
    "support"
   ],
   "svg/historical.html": [
-   "aa221f26b20b39ff503bed79780a565e9be5ef21",
+   "f18f89f68fdf1266768700235f08e7181ce0e0e1",
    "testharness"
   ],
   "svg/import/animate-dom-01-f-manual.svg": [
    "a409e81f05b515bb5e074be278202b85b4024352",
    "manual"
   ],
   "svg/import/animate-dom-02-f-manual.svg": [
    "26fa48e80b616b407d456083a1b17cfb754368da",
@@ -624316,17 +625524,17 @@
    "55100f7d505bc8cbc966ced0d1337ed78534a553",
    "testharness"
   ],
   "web-animations/animation-model/animation-types/property-list.js": [
    "31ad7b4aa12e4485f95545b087779cabb56c696c",
    "support"
   ],
   "web-animations/animation-model/animation-types/property-types.js": [
-   "80be6cea9cc4d5986abbdf2823e013b8e5b4bcab",
+   "f7947653d8668f236117913217d808e690476059",
    "support"
   ],
   "web-animations/animation-model/combining-effects/effect-composition.html": [
    "8ac06085132d822e908d48de4c1109b66323f19f",
    "testharness"
   ],
   "web-animations/animation-model/keyframe-effects/effect-value-context.html": [
    "10d9ee521240475a1729c2facfcea8b50342614e",
@@ -624740,17 +625948,17 @@
    "230684ec60fd2e408f9b6014417f3eddfe2dc95a",
    "support"
   ],
   "webaudio/js/buffer-loader.js": [
    "4d564eae0b3d7d1045626d1f144cd2638dba64e5",
    "support"
   ],
   "webaudio/js/helpers.js": [
-   "c8f3fa9e30a721973bc63f329cc0654ac52592c3",
+   "c5d44cf8101c50b59c366ed1971205193f32e1bf",
    "support"
   ],
   "webaudio/js/lodash.js": [
    "58c3eae918fedad54c56d488a14f99ce87943500",
    "support"
   ],
   "webaudio/js/vendor-prefixes.js": [
    "3b7d06164273077415b7fc99652355bcf0e10e17",
@@ -624987,40 +626195,16 @@
   "webdriver/README.md": [
    "2d1f3aef3972668066ceed1ad10dc52f8b059afa",
    "support"
   ],
   "webdriver/elements/active.py": [
    "40ac5fcc5db4d489a802f58bb03dfc78563eafa0",
    "wdspec"
   ],
-  "webdriver/get_title.py": [
-   "7cfc8b7302442c585429094db89c12a042dc9fd2",
-   "wdspec"
-  ],
-  "webdriver/interface.html": [
-   "d783d0dd370f58b264ef238d8da5cd8601dc3c7f",
-   "testharness"
-  ],
-  "webdriver/state/__init__.py": [
-   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
-   "support"
-  ],
-  "webdriver/state/text/__init__.py": [
-   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
-   "support"
-  ],
-  "webdriver/state/text/get_text.py": [
-   "6a72c2fb91081bf25cc505ff23291236967d6f23",
-   "wdspec"
-  ],
-  "webdriver/status.py": [
-   "5d3ae3da2967072dff274f384cceaecc07b6aa4b",
-   "wdspec"
-  ],
   "webdriver/tests/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/actions/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
@@ -625059,44 +626243,72 @@
   "webdriver/tests/actions/support/test_actions_wdspec.html": [
    "94b6f474bb4417cf2c06cb5fc6042c01bde98aa2",
    "support"
   ],
   "webdriver/tests/conftest.py": [
    "ab95734024a8e152ed84128eb804344740be91d4",
    "support"
   ],
-  "webdriver/tests/cookies.py": [
+  "webdriver/tests/contexts/maximize_window.py": [
+   "55cb76c60c7914bc024f470f6d1f0a47294b6fe3",
+   "wdspec"
+  ],
+  "webdriver/tests/contexts/resizing_and_positioning.py": [
+   "479379109115668183643e8a050396219332887d",
+   "wdspec"
+  ],
+  "webdriver/tests/cookies/cookies.py": [
    "e31177e638269864031e44808945fa1e7c46031c",
    "wdspec"
   ],
   "webdriver/tests/element_click/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/element_click/select.py": [
    "5ba51b660c7203bba3ada597c2f56fe094358e1f",
    "wdspec"
   ],
   "webdriver/tests/get_window_rect.py": [
    "2d4c13edc4e659af864750d0341c06ff969a687f",
    "wdspec"
   ],
-  "webdriver/tests/maximize_window.py": [
-   "55cb76c60c7914bc024f470f6d1f0a47294b6fe3",
+  "webdriver/tests/interface.html": [
+   "d783d0dd370f58b264ef238d8da5cd8601dc3c7f",
+   "testharness"
+  ],
+  "webdriver/tests/navigation/current_url.py": [
+   "cec2987258d9c807a247da9e0216b3af1f171484",
    "wdspec"
   ],
-  "webdriver/tests/navigation.py": [
-   "cec2987258d9c807a247da9e0216b3af1f171484",
+  "webdriver/tests/navigation/get_title.py": [
+   "16bdf435f3d05ceca30394dee6d82adcb64c997b",
    "wdspec"
   ],
   "webdriver/tests/set_window_rect.py": [
    "89b247aae02cf1aee8c7e4832db424840b66d12d",
    "wdspec"
   ],
+  "webdriver/tests/state/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/state/text/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/state/text/get_text.py": [
+   "570274d59020c4d8d0b8ecd604660ee7d710a165",
+   "wdspec"
+  ],
+  "webdriver/tests/status.py": [
+   "5d3ae3da2967072dff274f384cceaecc07b6aa4b",
+   "wdspec"
+  ],
   "webdriver/tests/support/__init__.py": [
    "5a31a3917a5157516c10951a3b3d5ffb43b992d9",
    "support"
   ],
   "webdriver/tests/support/asserts.py": [
    "c6d7303efd64a6a632a1cd1eef10acf1d7de04cd",
    "support"
   ],
@@ -635000,17 +636212,17 @@
    "dd19f1d7a8d12ee85101e53bb30c553e94d67b6a",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-addTrack.html": [
    "c434d2cdcb134f28b203df07cecca04e11195700",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-addTransceiver.html": [
-   "62d6e1c76f9a05f7571a5b00ccbe8c3baf0b7786",
+   "d4f7108629c221c95fcaafa554ecd820c27a6922",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-canTrickleIceCandidates.html": [
    "0f585a89bd8f25aa8f83b6ec39b704cbb8e970b2",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-connectionState.html": [
    "a733cd1ae59aace10832a7b5f98913967afb87f1",
@@ -635035,22 +636247,26 @@
   "webrtc/RTCPeerConnection-generateCertificate.html": [
    "27fb46922255203da0fc26a63808aeb98a60b640",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-getDefaultIceServers.html": [
    "3b8f625e068cfd6ec3fe80bab276b2216fa8eda5",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-getIdentityAssertion.html": [
+   "14467ef5431d17e7c6d37d78919c363cd5c98c6f",
+   "testharness"
+  ],
   "webrtc/RTCPeerConnection-getStats.html": [
    "ca9ba3d9e1ce7d156c263bb20b7a05800a4c233a",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-getTransceivers.html": [
-   "498e9cb9d143626fb78839c1c550d05e9a46c22f",
+   "b4c97af4f907a3d02fe1ebd24f00ab110b387575",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-helper.js": [
    "24e758c1fea61cab14399052032fe0f8a672cde7",
    "support"
   ],
   "webrtc/RTCPeerConnection-iceConnectionState.html": [
    "dad0787100a817c05dd871bf892a94464916a74a",
@@ -635071,16 +636287,20 @@
   "webrtc/RTCPeerConnection-onnegotiationneeded.html": [
    "44bc29a6d726513f8542fad7def774bbcde7987c",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-ontrack.html": [
    "3db4d8b29f4e1372055a50a279cae525f52cbb40",
    "testharness"
   ],
+  "webrtc/RTCPeerConnection-peerIdentity.html": [
+   "2e6808671da699ad3a61f7ebd766b92686ddb17c",
+   "testharness"
+  ],
   "webrtc/RTCPeerConnection-removeTrack.html": [
    "561575bea206ec1c9572e1e5e6f97d1e0bebe2d1",
    "testharness"
   ],
   "webrtc/RTCPeerConnection-setDescription-transceiver.html": [
    "aab677c9196488544b30c7eecd180c3046290bb2",
    "testharness"
   ],
@@ -635127,24 +636347,56 @@
   "webrtc/RTCPeerConnectionIceEvent-constructor.html": [
    "f273bd7fdfc883a15e8fb16fef5309061254c6cc",
    "testharness"
   ],
   "webrtc/RTCRtpCapabilities-helper.js": [
    "f66e7842a8b761612e40ef1a825357d9e21d5af5",
    "support"
   ],
+  "webrtc/RTCRtpParameters-codecs.html": [
+   "b9ba3d410e50400b7f8a41956439c4e19b14daf0",
+   "testharness"
+  ],
+  "webrtc/RTCRtpParameters-degradationPreference.html": [
+   "8f03fb8300b92360e907f567d35660dec84d6343",
+   "testharness"
+  ],
+  "webrtc/RTCRtpParameters-encodings.html": [
+   "e7ff72c2ef0066bc05842ebbb3c991bc9320c102",
+   "testharness"
+  ],
+  "webrtc/RTCRtpParameters-headerExtensions.html": [
+   "8bc6b13b74eb1026240822672b0267381a7b984a",
+   "testharness"
+  ],
+  "webrtc/RTCRtpParameters-helper.js": [
+   "fcf16b5ae297d141b48003115905aa5bf28eab32",
+   "support"
+  ],
+  "webrtc/RTCRtpParameters-rtcp.html": [
+   "275b24f5688c7eeca316afa3fccda8533e1e0eda",
+   "testharness"
+  ],
+  "webrtc/RTCRtpParameters-transactionId.html": [
+   "7d94448a9767caafd0f0b341b4d61e0c586942ed",
+   "testharness"
+  ],
   "webrtc/RTCRtpReceiver-getCapabilities.html": [
    "9eef967677aa2f0880f5114e7831437f931f2256",
    "testharness"
   ],
   "webrtc/RTCRtpReceiver-getContributingSources.html": [
    "a81980a24e23e9c5c350d65be05bae97b3ef1e6d",
    "testharness"
   ],
+  "webrtc/RTCRtpReceiver-getParameters.html": [
+   "ed910cbe15534cae43b79cc008395bd62fbd0637",
+   "testharness"
+  ],
   "webrtc/RTCRtpReceiver-getStats.html": [
    "f00accac88efd9108078b0a3d72751a44f108864",
    "testharness"
   ],
   "webrtc/RTCRtpReceiver-getSynchronizationSources.html": [
    "56d0157f4ce987436c12ddff886b74549abbe682",
    "testharness"
   ],
@@ -635155,16 +636407,20 @@
   "webrtc/RTCRtpSender-getStats.html": [
    "9a95fe0a2bd44fda187b586303a95dd5eb7db0cf",
    "testharness"
   ],
   "webrtc/RTCRtpSender-replaceTrack.html": [
    "f7b8caa578c9c818e8ca11777daf664ccb9457ec",
    "testharness"
   ],
+  "webrtc/RTCRtpSender-setParameters.html": [
+   "615bd9591e0f9c873827c9ae8e787b12d2efaf0f",
+   "testharness"
+  ],
   "webrtc/RTCRtpTransceiver-setCodecPreferences.html": [
    "ff8d04f3c6b2e18ea085233b5c98e8172eeca527",
    "testharness"
   ],
   "webrtc/RTCRtpTransceiver-setDirection.html": [
    "539eaba516eef7419c5e543d7218a41f850f5e7b",
    "testharness"
   ],
@@ -635175,18 +636431,22 @@
   "webrtc/RTCStats-helper.js": [
    "8fa8b228d3b6ee861c843a5f6b7aa2a1c8260763",
    "support"
   ],
   "webrtc/RTCTrackEvent-constructor.html": [
    "4b9e3d6e2498b56cd027bbb6ccf25d05dcdc4a39",
    "testharness"
   ],
+  "webrtc/coverage/identity.txt": [
+   "42dc017bac018a25b283741ca2feaf97aead88d8",
+   "support"
+  ],
   "webrtc/coverage/set-session-description.txt": [
-   "56e35c5f44516187e80f1d785360e4cbd0f48249",
+   "a688c54f0b53050794c968ba3d37bd25621fc0e3",
    "support"
   ],
   "webrtc/datachannel-emptystring.html": [
    "56a37968e489d6ee39a1234ca888dd628f17648e",
    "testharness"
   ],
   "webrtc/datachannel-idlharness.html": [
    "a1753a9a537a626775194ccc5dfdbf6829c5df35",
@@ -635195,16 +636455,24 @@
   "webrtc/dictionary-helper.js": [
    "9a43fcdfda7da1c281cbb221d1c463d1e280ee3a",
    "support"
   ],
   "webrtc/getstats.html": [
    "6656998d4adfab0e6ca51c98cd141cf162d3879c",
    "testharness"
   ],
+  "webrtc/historical.html": [
+   "39495fabcd2e3a60b92a38e40e3f9820549b2311",
+   "testharness"
+  ],
+  "webrtc/identity-helper.js": [
+   "c7639c627cceaad0e122d83ccde429d044c0773d",
+   "support"
+  ],
   "webrtc/interfaces.html": [
    "efd0c4a62b9c90f27da1188c30e4503755e7f8d2",
    "testharness"
   ],
   "webrtc/no-media-call.html": [
    "e9f056be5a865f1bb73d60ec72c38f8d5f16d747",
    "testharness"
   ],
@@ -636404,17 +637672,17 @@
    "e455416b72ce1b90a3b82b3fb44c57fba19f29df",
    "support"
   ],
   "webusb/README.md": [
    "34eaa588ed78672070782cb556939ea711a18caf",
    "support"
   ],
   "webusb/idlharness.https.html": [
-   "0da5e66dd0b0e82d25082733465c22c54a96d1de",
+   "135ae431cdac90d34b85fe1ea355abaf9a9fb732",
    "testharness"
   ],
   "webusb/resources/fake-devices.js": [
    "2cfce7b35b9441529946c4bcea9427e261808c36",
    "support"
   ],
   "webusb/resources/open-in-iframe.html": [
    "6e6050f742e0da58fc94a5c0a0aa75f16dfcede9",
--- a/testing/web-platform/meta/mozilla-sync
+++ b/testing/web-platform/meta/mozilla-sync
@@ -1,2 +1,2 @@
-local: 52285ea5e54c73d3ed824544cef2ee3f195f05e6
-upstream: 8b5316ad93c6c1238eea26a3d8052e32b34bbabd
+local: 5322c03f4c8587fe526172d3f87160031faa6d75
+upstream: 34871fed9e13316dabe8f3c467005850b637b294
--- a/testing/web-platform/tests/.travis.yml
+++ b/testing/web-platform/tests/.travis.yml
@@ -82,19 +82,22 @@ matrix:
   allow_failures:
     - env: JOB=build_css SCRIPT=css/build-css-testsuites.sh
     - env:
         - secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM="
         - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:unstable
     - env:
         - secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM="
         - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:MicrosoftEdge:14.14393 PLATFORM='Windows 10'
+      env:
+        - secure: "YTSXPwI0DyCA1GhYrLT9KMEV6b7QQKuEeaQgeFDP38OTzJ1+cIj3CC4SRNqbnJ/6SJwPGcdqSxLuV8m4e5HFFnyCcQnJe6h8EMsTehZ7W3j/fP9UYrJqYqvGpe3Vj3xblO5pwBYmq7sg3jAmmuCgAgOW6VGf7cRMucrsmFeo7VM="
+        - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=sauce:safari:10.0 PLATFORM='macOS 10.12'
 script:
   - ./tools/ci/run.sh
 cache:
   directories:
     - $HOME/.cache/pip
     - $HOME/meta
 notifications:
   email:
     on_success: never
     on_failure: always
-  webhooks: https://w3c-test.org/prbuildbot.py
+  webhooks: https://pulls.web-platform-tests.org/api/build
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/.well-known/README.md
@@ -0,0 +1,9 @@
+Well-Known URI Testing
+======================
+
+This directory is used for testing resources that are loaded based on the
+well-known URI standard. [[RFC5785](https://tools.ietf.org/html/rfc5785)]
+
+For other kinds of resource files, they should either be placed at
+[/common](../common) or the respective subdirectories for the
+particular standard.
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/.well-known/idp-proxy/README.md
@@ -0,0 +1,12 @@
+Identity Provider Proxy
+=======================
+
+This directory is used for hosting the mock identity provider proxy script
+for testing the identity provider feature in WebRTC.
+[[ietf-rtcweb-security-arch](https://tools.ietf.org/html/draft-ietf-rtcweb-security-arch-12#section-5.6.5)]
+[[webrtc-pc](https://w3c.github.io/webrtc-pc/#sec.identity-proxy)]
+
+The script for identity provider proxy must be hosted at /.well-known/idp-proxy
+instead of the usual [/webrtc](../../webrtc) directory as it follows the
+well-known URI standard that derives the script URI from a given domain name.
+[[RFC5785](https://tools.ietf.org/html/rfc5785)]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/.well-known/idp-proxy/mock-idp.js
@@ -0,0 +1,198 @@
+'use strict';
+
+// Code is based on the following editor draft:
+//   https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
+
+/*
+  mock-idp.js is a naive IdP that provides absolutely no
+  security for authentication. It can generate identity
+  assertion for whatever identity that is requested.
+
+  mock-idp.js validates identity assertion by simply decoding
+  the JSON and return whatever that is inside, with no integrity
+  protection and thus can be spoofed by anyone.
+
+  While being not practical at all, mock-idp.js allows us
+  to test various aspects of the identity API and allow tests
+  to manipulate the IdP at will.
+ */
+
+// We pass around test options as query string to instruct
+// the test IdP proxy script on what actions to perform.
+// This hack is based on the fact that query string is allowed
+// when specifying the IdP protocol.
+function parseQueryString(urlStr) {
+  const url = new URL(urlStr);
+  const result = {};
+  for(const [key, value] of url.searchParams) {
+    result[key] = value;
+  }
+  return result;
+}
+
+/*
+  9.2.1.  Interface Exposed by Identity Providers
+    callback GenerateAssertionCallback =
+      Promise<RTCIdentityAssertionResult> (
+        DOMString contents,
+        DOMString origin,
+        RTCIdentityProviderOptions options);
+
+    dictionary RTCIdentityProviderOptions {
+      DOMString protocol = "default";
+      DOMString usernameHint;
+      DOMString peerIdentity;
+    };
+
+    dictionary RTCIdentityAssertionResult {
+      required RTCIdentityProviderDetails idp;
+      required DOMString                  assertion;
+    };
+
+    dictionary RTCIdentityProviderDetails {
+      required DOMString domain;
+               DOMString protocol = "default";
+    };
+ */
+
+// In RTCIdentityProviderGlobalScope, global is self
+const global = self;
+const query = parseQueryString(global.location);
+
+// Generate a naive identity assertion. The result assertion
+// is a JSON string that report the various parameters
+// received by this function.
+//   watermark - a special mark to make sure the result is returned
+//               from this function
+//   args - the function arguments received
+//   env - some global variable values when this function is called
+//   query - the parsed query string of the script URL
+function generateAssertion(contents, origin, options) {
+  const args = {
+    contents, origin, options
+  };
+
+  const env = {
+    origin: global.origin,
+    location: global.location
+  };
+
+  const assertion = {
+    watermark: 'mock-idp.js.watermark',
+    args,
+    env,
+    query
+  };
+
+  const idp = {
+    domain: global.location.host,
+    protocol: 'mock-idp.js'
+  };
+
+  const assertionStr = JSON.stringify(assertion);
+
+  const { generatorAction } = query;
+
+  if(generatorAction === 'throw-error') {
+    const err = new Error('Mock Internal IdP Error');
+    err.idpErrorInfo = query.errorInfo;
+    throw err;
+
+  } else if(generatorAction === 'require-login') {
+    const err = new RTCError('idp-need-login');
+    err.idpLoginUrl = `${self.origin}/login`;
+    err.idpErrorInfo = 'login required';
+    throw err;
+
+  } else if(generatorAction === 'return-custom-idp') {
+    const { domain, protocol } = query;
+
+    return {
+      idp: {
+        domain,
+        protocol
+      },
+      assertion: assertionStr
+    };
+
+  } else if(generatorAction === 'return-invalid-result') {
+    return 'invalid-result';
+
+  } else {
+    return {
+      idp,
+      assertion: assertionStr
+    };
+  }
+}
+
+/*
+  9.2.1.  Interface Exposed by Identity Providers
+    callback ValidateAssertionCallback =
+      Promise<RTCIdentityValidationResult> (
+        DOMString assertion,
+        DOMString origin);
+
+    dictionary RTCIdentityValidationResult {
+      required DOMString identity;
+      required DOMString contents;
+    };
+ */
+function validateAssertion(assertionStr, origin) {
+  const assertion = JSON.parse(assertionStr);
+
+  const { param, query } = assertion;
+  const { contents, options } = param;
+
+  const identity = options.usernameHint;
+
+  const {
+    validatorAction
+  } = query;
+
+  if(validatorAction === 'throw-error') {
+    const err = new Error('Mock Internal IdP Error');
+    err.idpErrorInfo = query.errorInfo;
+    throw err;
+
+  } else if(validatorAction === 'return-custom-contents') {
+    const { contents } = query;
+    return {
+      identity,
+      contents
+    };
+
+  } else {
+    return {
+      identity, contents
+    };
+  }
+}
+
+/*
+  9.2.  Registering an IdP Proxy
+    [Global,
+     Exposed=RTCIdentityProviderGlobalScope]
+    interface RTCIdentityProviderGlobalScope : WorkerGlobalScope {
+      readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider;
+    };
+
+    [Exposed=RTCIdentityProviderGlobalScope]
+    interface RTCIdentityProviderRegistrar {
+      void register(RTCIdentityProvider idp);
+    };
+
+    dictionary RTCIdentityProvider {
+      required GenerateAssertionCallback generateAssertion;
+      required ValidateAssertionCallback validateAssertion;
+    };
+ */
+
+// if global.rtcIdentityProvider is defined, and the caller do not ask
+// to not register through query string, register our assertion callbacks.
+if(global.rtcIdentityProvider && query.action !== 'do-not-register') {
+  global.rtcIdentityProvider.register({
+    generateAssertion,
+    validateAssertion
+  });
+}
--- a/testing/web-platform/tests/README.md
+++ b/testing/web-platform/tests/README.md
@@ -7,16 +7,20 @@ that allows them to be run in all browse
 confidence that they are shipping software that is compatible with other
 implementations, and that later implementations will be compatible with
 their implementations. This in turn gives Web authors/developers
 confidence that they can actually rely on the Web platform to deliver on
 the promise of working across browsers and devices without needing extra
 layers of abstraction to paper over the gaps left by specification
 editors and implementors.
 
+Setting Up the Repo
+===================
+
+Clone or otherwise get https://github.com/w3c/web-platform-tests.
 
 Running the Tests
 =================
 
 The tests are designed to be run from your local computer. The test
 environment requires [Python 2.7+](http://www.python.org/downloads) (but not Python 3.x).
 You will also need a copy of OpenSSL.
 
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/access-control-and-redirects.htm
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Tests that redirects between origins are allowed when access control is involved.</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/get-host-info.sub.js"></script>
+  </head>
+  <body>
+    <script>
+    function runSync(test, url)
+    {
+      const xhr = new XMLHttpRequest();
+      xhr.open("GET", url, false);
+      xhr.send();
+      assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.");
+      test.done();
+    }
+    function runAsync(test, url)
+    {
+      const xhr = new XMLHttpRequest();
+      xhr.open("GET", url, true);
+      xhr.onload = test.step_func_done(function() {
+        assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.");
+      });
+      xhr.onerror = test.unreached_func("Network error");
+      xhr.send();
+      test.done();
+    }
+    test(t => {
+      runSync(t, "resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/access-control-basic-allow.py")
+    }, "Local sync redirect to remote origin");
+    async_test(t => {
+      runAsync(t, "resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/access-control-basic-allow.py")
+    }, "Local async redirect to remote origin");
+    test(t => {
+      runSync(t, get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_ORIGIN +
+          "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
+    }, "Remote sync redirect to local origin");
+    async_test(t => {
+      runAsync(t, get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_ORIGIN +
+          "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
+    }, "Remote async redirect to local origin");
+    test(t => {
+      runSync(t, get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
+    }, "Remote sync redirect to same remote origin");
+    async_test(t => {
+      runAsync(t, get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/redirect-cors.py?location=" + get_host_info().HTTP_REMOTE_ORIGIN +
+          "/XMLHttpRequest/resources/access-control-basic-allow.py&allow_origin=true")
+    }, "Remote async redirect to same remote origin");
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-header.htm
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Preflight cache should be invalidated in presence of custom header</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/get-host-info.sub.js"></script>
+    <script src="/common/utils.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript">
+    const uuid = token();
+    const xhr = new XMLHttpRequest;
+
+    async_test(function(test) {
+      xhr.onerror = test.unreached_func("FAIL: Network error.");
+      xhr.onload = test.step_func(function() {
+        // Token reset.  We can start the test now.
+        assert_equals(xhr.responseText, "PASS");
+        firstRequest();
+      });
+
+      xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/reset-token.py?token=" + uuid, true);
+      xhr.send();
+
+      function firstRequest() {
+        xhr.onload = test.step_func(function() {
+          assert_equals(xhr.responseText, "PASS: First PUT request.");
+          secondRequest();
+        });
+        xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
+        xhr.send();
+      }
+
+      function secondRequest() {
+        xhr.onload = test.step_func(function() {
+          assert_equals(xhr.responseText, "PASS: Second OPTIONS request was sent.");
+          test.done();
+        });
+        // Send a header not included in the inital cache.
+        xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
+        xhr.setRequestHeader("x-test", "headerValue");
+        xhr.send();
+      }
+    }, "Preflight cache should be invalidated in presence of custom header");
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow-preflight-cache-invalidation-by-method.htm
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Preflight cache should be invalidated by changed method</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/get-host-info.sub.js"></script>
+    <script src="/common/utils.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript">
+    const uuid = token();
+    const xhr = new XMLHttpRequest;
+
+    async_test(function(test) {
+      xhr.onerror = test.unreached_func("FAIL: Network error.");
+      xhr.onload = test.step_func(function() {
+        // Token reset.  We can start the test now.
+        assert_equals(xhr.responseText, "PASS");
+        firstRequest();
+      });
+
+      xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/reset-token.py?token=" + uuid, true);
+      xhr.send();
+
+      function firstRequest() {
+        xhr.onload = test.step_func(function() {
+          assert_equals(xhr.responseText, "PASS: First PUT request.");
+          secondRequest();
+        });
+        xhr.open("PUT", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
+        xhr.send();
+      }
+
+      function secondRequest() {
+        xhr.onload = test.step_func(function() {
+          assert_equals(xhr.responseText, "PASS: Second OPTIONS request was sent.");
+          test.done();
+        });
+        // Send a header not included in the inital cache.
+        xhr.open("XMETHOD", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py?token=" + uuid, true);
+        xhr.send();
+      }
+    }, "Preflight cache should be invalidated by changed method");
+
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow-star.htm
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Tests "*" setting for Access-Control-Allow-Origin header</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/get-host-info.sub.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript">
+    const xhr = new XMLHttpRequest;
+
+    test(function(test) {
+      xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-allow-star.py", false);
+
+      xhr.send();
+
+      assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.");
+    }, "Allow star");
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/access-control-basic-allow.htm
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Tests CORS with Access-Control-Allow-Origin header</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/get-host-info.sub.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript">
+    test(function() {
+      const xhr = new XMLHttpRequest;
+
+      xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/XMLHttpRequest/resources/access-control-basic-allow.py", false);
+
+      xhr.send();
+
+      assert_equals(xhr.responseText, "PASS: Cross-domain access allowed.");
+    }, "Allow basic");
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-preflight-cache-invalidation.py
@@ -0,0 +1,47 @@
+def main(request, response):
+    def fail(message):
+        response.content = "FAIL " + request.method + ": " + str(message)
+
+    def getState(token):
+        server_state = request.server.stash.take(token)
+        if not server_state:
+            return "Uninitialized"
+        return server_state
+
+    def setState(state, token):
+        request.server.stash.put(token, state)
+
+    response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin"))
+    response.headers.set("Access-Control-Allow-Credentials", "true")
+    token = request.GET.first("token", None)
+    state = getState(token)
+
+    if state == "Uninitialized":
+        if request.method == "OPTIONS":
+            response.headers.set("Access-Control-Allow-Methods", "PUT")
+            response.headers.set("Access-Control-Max-Age", 10)
+            setState("OPTIONSSent", token)
+        else:
+            fail(state)
+    elif state == "OPTIONSSent":
+        if request.method == "PUT":
+            response.content = "PASS: First PUT request."
+            setState("FirstPUTSent", token)
+        else:
+            fail(state)
+    elif state == "FirstPUTSent":
+        if request.method == "OPTIONS":
+            response.headers.set("Access-Control-Allow-Methods", "PUT, XMETHOD")
+            response.headers.set("Access-Control-Allow-Headers", "x-test")
+            setState("SecondOPTIONSSent", token)
+        elif request.method == "PUT":
+            fail("Second PUT request sent without preflight")
+        else:
+            fail(state)
+    elif state == "SecondOPTIONSSent":
+        if request.method == "PUT" or request.method == "XMETHOD":
+            response.content = "PASS: Second OPTIONS request was sent."
+        else:
+            fail(state)
+    else:
+        fail(state)
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/resources/redirect-cors.py
@@ -0,0 +1,7 @@
+def main(request, response):
+    response.status = 302
+    location = request.GET.first("location")
+    response.headers.set("Location", location)
+
+    if "allow_origin" in request.GET:
+        response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin"))
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/XMLHttpRequest/resources/reset-token.py
@@ -0,0 +1,5 @@
+def main(request, response):
+    response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin"))
+    token = request.GET["token"]
+    request.server.stash.put(token, "")
+    response.content = "PASS"
--- a/testing/web-platform/tests/background-fetch/interfaces.idl
+++ b/testing/web-platform/tests/background-fetch/interfaces.idl
@@ -3,19 +3,19 @@
 partial interface ServiceWorkerRegistration {
   readonly attribute BackgroundFetchManager backgroundFetch;
 };
 
 // 3.2. BackgroundFetchManager
 
 [Exposed=(Window,Worker)]
 interface BackgroundFetchManager {
-  Promise<BackgroundFetchRegistration> fetch(DOMString tag, (RequestInfo or sequence<RequestInfo>) requests, optional BackgroundFetchOptions options);
-  Promise<BackgroundFetchRegistration?> get(DOMString tag);
-  Promise<FrozenArray<DOMString>> getTags();
+  Promise<BackgroundFetchRegistration> fetch(DOMString id, (RequestInfo or sequence<RequestInfo>) requests, optional BackgroundFetchOptions options);
+  Promise<BackgroundFetchRegistration?> get(DOMString id);
+  Promise<FrozenArray<DOMString>> getIds();
   // TODO: in future this should become an async iterator for BackgroundFetchRegistration objects
 };
 
 dictionary BackgroundFetchOptions {
   sequence<IconDefinition> icons;
   DOMString title;
   long totalDownloadSize;
 };
@@ -27,17 +27,17 @@ dictionary IconDefinition {
   DOMString sizes;
   DOMString type;
 };
 
 // 3.3. BackgroundFetchRegistration
 
 [Exposed=(Window,Worker)]
 interface BackgroundFetchRegistration {
-  readonly attribute DOMString tag;
+  readonly attribute DOMString id;
   readonly attribute FrozenArray<IconDefinition> icons;
   readonly attribute long totalDownloadSize;
   readonly attribute DOMString title;
   readonly attribute FrozenArray<BackgroundFetchActiveFetches> fetches;
 
   void abort();
 };
 
@@ -60,21 +60,21 @@ partial interface ServiceWorkerGlobalSco
   attribute EventHandler onbackgroundfetchabort;
   attribute EventHandler onbackgroundfetchclick;
 };
 
 // 3.4.1. BackgroundFetchEvent
 
 [Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker]
 interface BackgroundFetchEvent : ExtendableEvent {
-  readonly attribute DOMString tag;
+  readonly attribute DOMString id;
 };
 
 dictionary BackgroundFetchEventInit : ExtendableEventInit {
-  required DOMString tag;
+  required DOMString id;
 };
 
 // 3.4.2. BackgroundFetchEndEvent
 
 [Constructor(DOMString type, BackgroundFetchEndEventInit init), Exposed=ServiceWorker]
 interface BackgroundFetchEndEvent : BackgroundFetchEvent {
   readonly attribute FrozenArray<BackgroundFetchSettledFetches> completeFetches;
 
--- a/testing/web-platform/tests/beacon/headers/header-content-type.html
+++ b/testing/web-platform/tests/beacon/headers/header-content-type.html
@@ -22,43 +22,70 @@ function pollResult(test, id) {
           resolve(body);
         });
       });
     }), 1000);
   });
 }
 
 function testContentTypeHeader(what, contentType, title) {
-  var testBase = get_host_info().HTTP_REMOTE_ORIGIN + RESOURCES_DIR;
+  var testBase = RESOURCES_DIR;
   var id = self.token();
   var testUrl = testBase + "content-type.py?cmd=put&id=" + id;
 
   promise_test(function(test) {
     assert_true(navigator.sendBeacon(testUrl, what), "SendBeacon Succeeded");
     return pollResult(test, id) .then(result => {
-      assert_true(result.startsWith(contentType), "Correct referrer header result");
+      if (contentType == "multipart/form-data") {
+        assert_true(result.startsWith(contentType), "Correct Content-Type header result");
+      } else {
+        assert_equals(result, contentType, "Correct Content-Type header result");
+      }
     });
   }, "Test content-type header for a body " + title);
 }
 
+function stringToArrayBufferView(input) {
+  var buffer = new ArrayBuffer(input.length * 2);
+  var view = new Uint16Array(buffer);
+
+  // dumbly copy over the bytes
+  for (var i = 0, len = input.length; i < len; i++) {
+    view[i] = input.charCodeAt(i);
+  }
+  return view;
+}
+
 function stringToArrayBuffer(input) {
   var buffer = new ArrayBuffer(input.length * 2);
-  var array = new Uint16Array(buffer);
+  var view = new Uint16Array(buffer);
 
   // dumbly copy over the bytes
   for (var i = 0, len = input.length; i < len; i++) {
-    array[i] = input.charCodeAt(i);
+    view[i] = input.charCodeAt(i);
   }
-  return array;
+  return buffer;
+}
+
+function stringToBlob(input) {
+  return new Blob([input], {type: "text/plain"});
 }
 
 function stringToFormData(input) {
   var formdata = new FormData();
   formdata.append(input, new Blob(['hi']));
   return formdata;
 }
 
+function stringToURLSearchParams(input)
+{
+  return new URLSearchParams(input);
+}
+
 testContentTypeHeader("hi!", "text/plain;charset=UTF-8", "string");
+testContentTypeHeader(stringToArrayBufferView("123"), "", "ArrayBufferView");
 testContentTypeHeader(stringToArrayBuffer("123"), "", "ArrayBuffer");
+testContentTypeHeader(stringToBlob("123"), "text/plain", "Blob");
 testContentTypeHeader(stringToFormData("qwerty"), "multipart/form-data", "FormData");
+testContentTypeHeader(stringToURLSearchParams("key1=value1&key2=value2"), "application/x-www-form-urlencoded;charset=UTF-8", "URLSearchParams");
     </script>
   </body>
 </html>
--- a/testing/web-platform/tests/check_stability.ini
+++ b/testing/web-platform/tests/check_stability.ini
@@ -2,8 +2,9 @@
 skip_tests: conformance-checkers docs tools
 # The vast majority of tests rely on files located within the `resources`
 # directory. Because of this, modifications to that directory's contents have
 # the potential to introduce instability in a large number of tests.
 # Exhaustively validating such changes is highly resource intensive
 # (particularly in terms of execution time), making it impractical in most
 # cases.
 ignore_changes: resources
+results_url: https://pulls.web-platform-tests.org/api/stability
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/clear-site-data/storage.https.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="support/test_utils.sub.js"></script>
+  </head>
+
+  <body>
+    <script>
+      /** @property{Datatype} The storage datatype. */
+      var storage = TestUtils.DATATYPES.filter(function(datatype) {
+        return datatype.name == "storage";
+      })[0];
+
+      // The tests are set up asynchronously.
+      setup({"explicit_done": true});
+
+      // There must be at least one test added synchronously, otherwise
+      // testharness will complain.
+      // TODO(@msramek): Find a way to avoid this dummy test.
+      test(function() {}, "Populate backends.");
+
+      TestUtils.populateStorage()
+          .then(function() {
+            // Navigate to a resource with a Clear-Site-Data header in
+            // an iframe, then verify that all backends of the "storage"
+            // datatype have been deleted.
+            return new Promise(function(resolve, reject) {
+              window.addEventListener("message", resolve);
+              var iframe = document.createElement("iframe");
+              iframe.src = TestUtils.getClearSiteDataUrl([storage]);
+              document.body.appendChild(iframe);
+            }).then(function() {
+              TestUtils.STORAGE.forEach(function(backend) {
+                var test_name =
+                    "Clear backend when 'storage' is deleted: " + backend.name;
+
+                promise_test(function() {
+                  return backend.isEmpty().then(function(isEmpty) {
+                    assert_true(
+                      isEmpty,
+                      backend.name + " should have been cleared.");
+                  });
+                }, test_name);
+              });
+
+              done();
+            });
+          });
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/clear-site-data/support/service_worker.js
@@ -0,0 +1,1 @@
+/* This file is intentionally left blank. */
--- a/testing/web-platform/tests/clear-site-data/support/test_utils.sub.js
+++ b/testing/web-platform/tests/clear-site-data/support/test_utils.sub.js
@@ -6,58 +6,195 @@ var TestUtils = (function() {
     return result;
   };
 
   /**
    * Representation of one datatype.
    * @typedef Datatype
    * @type{object}
    * @property{string} name Name of the datatype.
+   * @property{function():boolean} supported
+   *     Whether this datatype is supported by this user agent.
    * @method{function():Void} add A function to add an instance of the datatype.
    * @method{function():boolean} isEmpty A function that tests whether
    *     the datatype's storage backend is empty.
    */
   var Datatype;
 
   var TestUtils = {};
 
   /**
+   * Various storage backends that are part of the 'storage' datatype.
+   * @param{Array.<Datatype>}
+   */
+  TestUtils.STORAGE = [
+    {
+      "name": "local storage",
+      "supported": function() { !!window.localStorage; },
+      "add": function() {
+        return new Promise(function(resolve, reject) {
+          localStorage.setItem(randomString(), randomString());
+          resolve();
+        });
+      },
+      "isEmpty": function() {
+        return new Promise(function(resolve, reject) {
+          resolve(!localStorage.length);
+        });
+      }
+    },
+    {
+      "name": "Indexed DB",
+      "supported": function() { return !!window.indexedDB; },
+      "add": function() {
+        return new Promise(function(resolve, reject) {
+          var request = window.indexedDB.open("database");
+          request.onupgradeneeded = function() {
+            request.result.createObjectStore("store");
+          };
+          request.onsuccess = function() {
+            request.result.close();
+            resolve();
+          }
+        });
+      },
+      "isEmpty": function() {
+        return new Promise(function(resolve, reject) {
+          var request = window.indexedDB.open("database");
+          request.onsuccess = function() {
+            var database = request.result;
+            try {
+              var transaction = database.transaction(["store"]);
+              resolve(false);
+            } catch(error) {
+              // The database is empty. However, by testing that, we have also
+              // created it, which means that |onupgradeneeded| in the "add"
+              // method will not run the next time. Delete the database before
+              // reporting that it was empty.
+              var deletion = window.indexedDB.deleteDatabase("database");
+              deletion.onsuccess = resolve.bind(this, true);
+            } finally {
+              database.close();
+            }
+          };
+        });
+      }
+    },
+    {
+      // TODO(@msramek): We should also test the PERSISTENT filesystem, however,
+      // that might require storage permissions.
+      "name": "filesystems",
+      "supported": function() {
+        return window.requestFileSystem || window.webkitRequestFileSystem;
+      },
+      "add": function() {
+        return new Promise(function(resolve, reject) {
+          var onSuccess = function(fileSystem) {
+            fileSystem.root.getFile('file', {"create": true}, resolve, resolve);
+          }
+          var onFailure = resolve;
+
+          var requestFileSystem =
+              window.requestFileSystem || window.webkitRequestFileSystem;
+          requestFileSystem(window.TEMPORARY, 1 /* 1B */,
+                            onSuccess, onFailure);
+        });
+      },
+      "isEmpty": function() {
+        return new Promise(function(resolve, reject) {
+          var onSuccess = function(fileSystem) {
+            fileSystem.root.getFile(
+                'file', {},
+                resolve.bind(this, false) /* opened successfully */,
+                resolve.bind(this, true) /* failed to open */);
+          }
+          var onFailure = resolve.bind(this, true);
+
+          var requestFileSystem =
+              window.requestFileSystem || window.webkitRequestFileSystem;
+          requestFileSystem(window.TEMPORARY, 1 /* 1B */,
+                            onSuccess, onFailure);
+        });
+      }
+    },
+    {
+      "name": "service workers",
+      "supported": function() { return !!navigator.serviceWorker; },
+      "add": function() {
+        return navigator.serviceWorker.register(
+            "support/service_worker.js",
+            { scope: "support/scope-that-does-not-contain-this-test/"});
+      },
+      "isEmpty": function() {
+        return new Promise(function(resolve, reject) {
+          navigator.serviceWorker.getRegistrations()
+              .then(function(registrations) {
+                resolve(!registrations.length);
+              });
+        });
+      }
+    },
+    {
+      "name": "WebSQL",
+      "supported": function() { return !!window.openDatabase; },
+      "add": function() {
+        return new Promise(function(resolve, reject) {
+          var database = window.openDatabase(
+              "database", "1.0", "database", 1024 /* 1 kB */);
+          database.transaction(function(context) {
+            context.executeSql("CREATE TABLE IF NOT EXISTS data (column)");
+            context.executeSql(
+                "INSERT INTO data (column) VALUES (1)", [], resolve);
+          });
+        });
+      },
+      "isEmpty": function() {
+        return new Promise(function(resolve, reject) {
+          var database = window.openDatabase(
+              "database", "1.0", "database", 1024 /* 1 kB */);
+          database.transaction(function(context) {
+            context.executeSql("CREATE TABLE IF NOT EXISTS data (column)");
+            context.executeSql(
+                "SELECT * FROM data", [],
+                function(transaction, result) {
+                  resolve(!result.rows.length);
+                });
+          });
+        });
+      }
+    }
+  ].filter(function(backend) { return backend.supported(); });
+
+  /**
    * All datatypes supported by Clear-Site-Data.
    * @param{Array.<Datatype>}
    */
   TestUtils.DATATYPES = [
     {
       "name": "cookies",
+      "supported": function() { return typeof document.cookie == "string"; },
       "add": function() {
         return new Promise(function(resolve, reject) {
           document.cookie = randomString() + "=" + randomString();
           resolve();
         });
       },
       "isEmpty": function() {
         return new Promise(function(resolve, reject) {
           resolve(!document.cookie);
         });
       }
     },
     {
       "name": "storage",
-      "add": function() {
-        return new Promise(function(resolve, reject) {
-          localStorage.setItem(randomString(), randomString());
-          resolve();
-        });
-      },
-      "isEmpty": function() {
-        return new Promise(function(resolve, reject) {
-          resolve(!localStorage.length);
-        });
-      }
+      "supported": TestUtils.STORAGE[0].supported,
+      "add": TestUtils.STORAGE[0].add,
+      "isEmpty": TestUtils.STORAGE[0].isEmpty,
     }
-  ];
+  ].filter(function(datatype) { return datatype.supported(); });
 
   /**
    * All possible combinations of datatypes.
    * @property {Array.<Array.<Datatype>>}
    */
   TestUtils.COMBINATIONS = (function() {
     var combinations = [];
     for (var mask = 0; mask < (1 << TestUtils.DATATYPES.length); mask++) {
@@ -70,36 +207,50 @@ var TestUtils = (function() {
       }
 
       combinations.push(combination);
     }
     return combinations;
   })();
 
   /**
-   * Ensures that all datatypes are nonempty. Should be called in the test
-   * setup phase.
+   * Populates |datatypes| by calling the "add" method on each of them,
+   * and verifies that they are nonempty.
+   * @param {Array.<Datatype>} datatypes to be populated.
+   * @private
    */
-  TestUtils.populateDatatypes = function() {
-    return Promise.all(TestUtils.DATATYPES.map(function(datatype) {
+  function populate(datatypes) {
+    return Promise.all(datatypes.map(function(datatype) {
       return new Promise(function(resolve, reject) {
         datatype.add().then(function() {
           datatype.isEmpty().then(function(isEmpty) {
             assert_false(
                 isEmpty,
                 datatype.name +
                     " has to be nonempty before the test starts.");
             resolve();
           });
         });
       });
     }));
   };
 
   /**
+   * Ensures that all datatypes are nonempty. Should be called in the test
+   * setup phase.
+   */
+  TestUtils.populateDatatypes = populate.bind(this, TestUtils.DATATYPES);
+
+  /**
+   * Ensures that all backends of the "storage" datatype are nonempty. Should
+   * be called in the test setup phase.
+   */
+  TestUtils.populateStorage = populate.bind(this, TestUtils.STORAGE);
+
+  /**
    * Get the support server URL that returns a Clear-Site-Data header
    * to clear |datatypes|.
    * @param{Array.<Datatype>} datatypes The list of datatypes to be deleted.
    * @return string The URL to be queried.
    */
   TestUtils.getClearSiteDataUrl = function(datatypes) {
     names = datatypes.map(function(e) { return e.name });
     return "support/echo-clear-site-data.py?" + names.join("&");
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/inheritance/iframe.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="img-src 'none'">
+
+<body>
+
+<script>
+  function wait_for_error_from_frame(frame, test) {
+    window.addEventListener('message', test.step_func(e => {
+      if (e.source != frame.contentWindow)
+        return;
+      assert_equals(e.data, "error");
+      frame.remove();
+      test.done();
+    }));
+  }
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    document.body.appendChild(i);
+
+    var img = document.createElement('img');
+    img.onerror = t.step_func_done(_ => i.remove());
+    img.onload = t.unreached_func();
+    i.contentDocument.body.appendChild(img);
+    img.src = "/images/red-16x16.png";
+  }, "<iframe>'s about:blank inherits policy.");
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    i.srcdoc = `
+      <img src='/images/red-16x16.png'
+        onload='window.top.postMessage("load", "*");'
+        onerror='window.top.postMessage("error", "*");'
+      >
+    `;
+
+    wait_for_error_from_frame(i, t);
+
+    document.body.appendChild(i);
+  }, "<iframe srcdoc>'s inherits policy.");
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    var b = new Blob(
+      [`
+        <img src='${window.origin}/images/red-16x16.png'
+          onload='window.top.postMessage("load", "*");'
+          onerror='window.top.postMessage("error", "*");'
+        >
+      `], {type:"text/html"});
+    i.src = URL.createObjectURL(b);
+
+    wait_for_error_from_frame(i, t);
+
+    document.body.appendChild(i);
+  }, "<iframe src='blob:...'>'s inherits policy.");
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    i.src = `data:text/html,<img src='${window.origin}/images/red-16x16.png'
+      onload='window.top.postMessage("load", "*");'
+      onerror='window.top.postMessage("error", "*");'
+    >`;
+
+    wait_for_error_from_frame(i, t);
+
+    document.body.appendChild(i);
+  }, "<iframe src='data:...'>'s inherits policy.");
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    i.src = `javascript:"<img src='${window.origin}/images/red-16x16.png'
+      onload='window.top.postMessage(\\"load\\", \\"*\\");'
+      onerror='window.top.postMessage(\\"error\\", \\"*\\");'
+    >"`;
+
+    wait_for_error_from_frame(i, t);
+
+    document.body.appendChild(i);
+  }, "<iframe src='javascript:...'>'s inherits policy.");
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/inheritance/window.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<meta http-equiv="Content-Security-Policy" content="img-src 'none'">
+
+<body>
+
+<script>
+  function wait_for_error_from_window(w, test) {
+    window.addEventListener('message', test.step_func(e => {
+      if (e.source != w)
+        return;
+      assert_equals(e.data, "error");
+      w.close();
+      test.done();
+    }));
+  }
+
+  async_test(t => {
+    var w = window.open();
+
+    var img = document.createElement('img');
+    img.onerror = t.step_func_done(_ => w.close());
+    img.onload = t.unreached_func();
+    w.document.body.appendChild(img);
+    img.src = "/images/red-16x16.png";
+  }, "window.open() inherits policy.");
+
+  async_test(t => {
+    var w = window.open();
+
+    wait_for_error_from_window(w, t);
+
+    w.document.write(`
+      <img src='/images/red-16x16.png'
+        onload='window.opener.postMessage("load", "*");'
+        onerror='window.opener.postMessage("error", "*");'
+      >
+    `);
+  }, "`document.write` into `window.open()` inherits policy.");
+
+  async_test(t => {
+    var b = new Blob(
+      [`
+        <img src='${window.origin}/images/red-16x16.png'
+          onload='window.opener.postMessage("load", "*");'
+          onerror='window.opener.postMessage("error", "*");'
+        >
+      `], {type:"text/html"});
+
+    wait_for_error_from_window(window.open(URL.createObjectURL(b)), t);
+  }, "window.open('blob:...') inherits policy.");
+
+  // Navigation to top-level `data:` is blocked.
+
+  async_test(t => {
+    var url =
+        `javascript:"<img src='${window.origin}/images/red-16x16.png'
+          onload='window.opener.postMessage(\\"load\\", \\"*\\");'
+          onerror='window.opener.postMessage(\\"error\\", \\"*\\");'
+        >"`;
+
+    wait_for_error_from_window(window.open(url), t);
+  }, "window.open('javascript:...') inherits policy.");
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+  var window_url = encodeURIComponent("javascript:'<iframe src=/content-security-policy/support/fail.js />'");
+  var report_cookie_name = encodeURIComponent("javascript-url-navigation-inherits-csp");
+  window.open("support/test_csp_self_window.sub.html?window_url=" + window_url + "&report_cookie_name=" + report_cookie_name);
+  setTimeout(function() {
+    var s = document.createElement('script');
+    s.async = true;
+    s.defer = true;
+    s.src = "../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-src%20%27none%27";
+    document.body.appendChild(s);
+  }, 2000);
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/navigation/support/test_csp_self_window.sub.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+  var window_url = decodeURIComponent("{{GET[window_url]}}").replace('&lt;', '<').replace('&gt;', '>');
+  window.open(window_url, "_self");
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/content-security-policy/navigation/support/test_csp_self_window.sub.html.sub.headers
@@ -0,0 +1,6 @@
+Expires: Mon, 26 Jul 1997 05:00:00 GMT
+Cache-Control: no-store, no-cache, must-revalidate
+Cache-Control: post-check=0, pre-check=0, false
+Pragma: no-cache
+Set-Cookie: {{GET[report_cookie_name]}}={{$id:uuid()}}; Path=/content-security-policy/navigation/
+Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline'; report-uri  ../../support/report.py?op=put&reportID={{$id}}
--- a/testing/web-platform/tests/css-fonts/matching/fixed-stretch-style-over-weight.html
+++ b/testing/web-platform/tests/css-fonts/matching/fixed-stretch-style-over-weight.html
@@ -4,25 +4,25 @@
 <!-- Tests CSS Fonts Level 4, section 5.2. font matching algorithm. Precedence
   of properties (stretch over style, style over weight) and style over weight
   priority. -->
 <style>
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 100%;
-    font-style: oblique -67.5 -45;
+    font-style: oblique -67.5deg -45deg;
     font-weight: 700 800;
     }
 
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 100%;
-    font-style: oblique 45 67.5;
+    font-style: oblique 45deg 67.5deg;
     font-weight: 200 300;
     }
 </style>
 <link rel="match" href="fixed-stretch-style-over-weight-ref.html">
 <span id="stretch_style_weight_1">MNOP</span>
  <span id="stretch_style_weight_2">MNOP</span>
  <span id="stretch_style_weight_3">MNOP</span>
  <span id="stretch_style_weight_4">MNOP</span>
--- a/testing/web-platform/tests/css-fonts/matching/font-matching.css
+++ b/testing/web-platform/tests/css-fonts/matching/font-matching.css
@@ -1,59 +1,59 @@
 body {
     font-family: variable_axes, sans-serif;
     font-size: 80px;
 }
 
 #stretch_style_weight_1 {
     font-stretch: 50%;
-    font-style: oblique -90;
+    font-style: oblique -90deg;
     font-weight: 100;
 }
 
 #stretch_style_weight_2 {
     font-stretch: 62.50%;
-    font-style: oblique -67.5;
+    font-style: oblique -67.5deg;
     font-weight: 200;
 }
 
 #stretch_style_weight_3 {
     font-stretch: 75%;
-    font-style: oblique -45;
+    font-style: oblique -45deg;
     font-weight: 300;
 }
 
 #stretch_style_weight_4 {
     font-stretch: 87.50%;
-    font-style: oblique -20;
+    font-style: oblique -20deg;
     font-weight: 400;
 }
 
 #stretch_style_weight_5 {
     font-stretch: 100%;
-    font-style: oblique 0;
+    font-style: oblique 0deg;
     font-weight: 500;
 }
 
 #stretch_style_weight_6 {
     font-stretch: 112.50%;
-    font-style: oblique 20;
+    font-style: oblique 20deg;
     font-weight: 600;
 }
 
 #stretch_style_weight_7 {
     font-stretch: 125%;
-    font-style: oblique 45;
+    font-style: oblique 45deg;
     font-weight: 700;
 }
 
 #stretch_style_weight_8 {
     font-stretch: 150%;
-    font-style: oblique 67.5;
+    font-style: oblique 67.5deg;
     font-weight: 800;
 }
 
 #stretch_style_weight_9 {
     font-stretch: 200%;
-    font-style: oblique 90;
+    font-style: oblique 90deg;
     font-weight: 900;
 }
 
--- a/testing/web-platform/tests/css-fonts/matching/stretch-distance-over-weight-distance.html
+++ b/testing/web-platform/tests/css-fonts/matching/stretch-distance-over-weight-distance.html
@@ -5,48 +5,48 @@
   of properties (stretch over style, style over weight) and distance of stretch  . -->
 <style>
     /* Matches 2 & 3 in stretch, but style and weight at the other end of the
     spectrum, choosen for 1-5. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 62.5% 75%;
-    font-style: oblique 45 67.5;
+    font-style: oblique 45deg 67.5deg;
     font-weight: 700 800;
     }
 
     /* Same stretch as above, and better weight match for 2 & 3, but must not
     get choosen since worse style distance. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 62.5% 75%;
-    font-style: oblique 90;
+    font-style: oblique 90deg;
     font-weight: 200 300;
     }
 
     /* Matches 7 & 8 in stretch, but style and weight at the opposite end of the
     spectrum, choosen for 6-9. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 125% 150%;
-    font-style: oblique -67.5 -45;
+    font-style: oblique -67.5deg -45deg;
     font-weight: 200 300;
     }
 
 
     /* Same stretch as previous, and better weight match for 7 & 8 but most not
     get choosen because of worse style distance. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 125% 150%;
-    font-style: oblique -90;
+    font-style: oblique -90deg;
     font-weight: 700 800;
     }
 </style>
 <link rel="match" href="stretch-distance-over-weight-distance-ref.html">
 <span id="stretch_style_weight_1">MNOP</span>
  <span id="stretch_style_weight_2">MNOP</span>
  <span id="stretch_style_weight_3">MNOP</span>
  <span id="stretch_style_weight_4">MNOP</span>
--- a/testing/web-platform/tests/css-fonts/matching/style-ranges-over-weight-direction.html
+++ b/testing/web-platform/tests/css-fonts/matching/style-ranges-over-weight-direction.html
@@ -6,49 +6,49 @@
   direction for style. -->
 <style>
     /* Matches, 2 & 3 in stretch, has wrong style, but in the right search
      direction, so weight 400 gets chosen for 1-3. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 62.5% 75%;
-    font-style: oblique -90;
+    font-style: oblique -90deg;
     font-weight: 400;
     }
 
     /* Matches 2 & 3 in stretch and weight but has wrong style and in the wrong
     search direction, chosen for 4 and 5. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 62.5% 75%;
-    font-style: oblique -20;
+    font-style: oblique -20deg;
     font-weight: 200 300;
     }
 
 
     /* Matches 7 & 8 in stretch, has wrong style, but in the right search
     direction from 7 and above, so weight 600 gets chosen for 7-9. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 125% 150%;
-    font-style: oblique 90;
+    font-style: oblique 90deg;
     font-weight: 500;
     }
 
 
     /* Matches 7 & 8 in stretch and weight, but has wrong style and in the wrong
     search direction for 7 and above, gets chosen for 6. */
     @font-face {
     font-family: variable_axes;
     src: url("resources/variabletest_matching.ttf");
     font-stretch: 125% 150%;
-    font-style: oblique 20;
+    font-style: oblique 20deg;
     font-weight: 700 800;
     }
 </style>
 <link rel="match" href="style-ranges-over-weight-direction-ref.html">
 <span id="stretch_style_weight_1">MNOP</span>
  <span id="stretch_style_weight_2">MNOP</span>
  <span id="stretch_style_weight_3">MNOP</span>
  <span id="stretch_style_weight_4">MNOP</span>
--- a/testing/web-platform/tests/css-fonts/variations/font-parse-numeric-stretch-style-weight.html
+++ b/testing/web-platform/tests/css-fonts/variations/font-parse-numeric-stretch-style-weight.html
@@ -20,18 +20,18 @@ var styleValidTests = {
     '850.3',
     'calc(100 + 300)',
     'calc(0.2 + 205.5)',
   ],
   'stretch': ['51%', '199%', 'calc(10% + 20%)']
 };
 
 var styleInvalidTests = {
-  'weight': ['100 400'],
-  'stretch': ['100% 110%', '0%', '100% 150%']
+  'weight': ['100 400', 'calc(0 - 100)', 'calc(200 + 801)'],
+  'stretch': ['100% 110%', '0%', '100% 150%', 'calc(1 + 10%)']
 };
 
 function testParseStyle() {
   for (validStyleTestCategory of Object.keys(styleValidTests)) {
     for (validStyleTest of styleValidTests[validStyleTestCategory]) {
       test(
           function() {
             assert_true(
@@ -59,23 +59,28 @@ var faceTests = {
     ['100', '100'], ['700', '700'], ['900', '900'], ['bold', 'bold'],
     ['normal', 'normal'], ['100 400', '100 400'], ['100 101.5', '100 101.5'],
     ['999.8 999.9', '999.8 999.9']
   ],
   'stretch': [
     ['100%', '100%'],
     ['110%', '110%'],
     ['111.5%', '111.5%'],
+    [ "50% 200%", "50% 200%" ],
+    [ "0.1% 1%", "0.1% 1%" ],
+    [ "900% 901%", "900% 901%" ],
     ['ultra-condensed', 'ultra-condensed'],
     ['ultra-expanded', 'ultra-expanded'],
   ],
 };
 
 var faceInvalidTests = {
   'weight': [
+    '0',
+    '0.9',
     '-100 200',
     '100 -200',
     '500 400',
     '100 1001',
     '1001',
     '1000.5',
     '100 200 300',
     'a',
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-grid-1/implicit-grids/grid-support-grid-auto-columns-rows-002.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Support for 'grid-auto-columns' and 'grid-auto-rows' accepting track listing as value</title>
+<link rel="help" href="http://www.w3.org/TR/css-grid-1/#auto-tracks">
+<link rel="match" href="../reference/grid-support-grid-auto-columns-rows-002-ref.html">
+<link rel="author" title="Rachel Andrew" href="mailto:me@rachelandrew.co.uk" />
+<style>
+    #grid {
+        display: grid;
+        grid-auto-columns: 25px 50px;
+        grid-auto-rows: 40px 30px;
+    }
+
+    #first-column-first-row {
+        grid-column: 1;
+        grid-row: 1;
+        background-color: purple;
+    }
+
+    #second-column-first-row {
+        grid-column: 2;
+        grid-row: 1;
+        background-color: orange;
+    }
+
+    #first-column-second-row {
+        grid-column: 1;
+        grid-row: 2;
+        background-color: green;
+    }
+
+    #second-column-second-row {
+        grid-column: 2;
+        grid-row: 2;
+        background-color: pink;
+    }
+
+    #first-and-second-column-third-row {
+        grid-column: 1 / span 2;
+        grid-row: 3;
+        background-color: silver;
+    }
+
+    #third-column-all-rows {
+        grid-column: 3;
+        grid-row: 1 / span 3;
+        background-color: blue;
+    }
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+<div id="grid">
+    <div id="first-column-first-row"></div>
+    <div id="second-column-first-row"></div>
+    <div id="first-column-second-row"></div>
+    <div id="second-column-second-row"></div>
+    <div id="first-and-second-column-third-row"></div>
+    <div id="third-column-all-rows"></div>
+</div>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-grid-1/reference/grid-support-grid-auto-columns-rows-002-ref.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Support for 'grid-auto-columns' and 'grid-auto-rows' properties accepting track listing as value</title>
+<link rel="author" title="Rachel Andrew" href="mailto:me@rachelandrew.co.uk" />
+<style>
+    #grid {
+        position: relative;
+    }
+
+    .absolute {
+        position: absolute;
+        top: 0;
+        left: 0;
+    }
+
+    #first-column-first-row {
+        width: 25px;
+        height: 40px;
+        background-color: purple;
+    }
+
+    #second-column-first-row {
+        width: 50px;
+        height: 40px;
+        left: 25px;
+        background-color: orange;
+    }
+
+    #first-column-second-row {
+        width: 25px;
+        height: 30px;
+        top: 40px;
+        background-color: green;
+    }
+
+    #second-column-second-row {
+        width: 50px;
+        height: 30px;
+        top: 40px;
+        left: 25px;
+        background-color: pink;
+    }
+
+    #first-and-second-column-third-row {
+        width: 75px;
+        height: 40px;
+        top: 70px;
+        background-color: silver;
+    }
+
+    #third-column-all-rows {
+        left: 75px;
+        height: 110px;
+        width: 25px;
+        background-color: blue;
+    }
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+<div id="grid">
+    <div class="absolute" id="first-column-first-row"></div>
+    <div class="absolute" id="second-column-first-row"></div>
+    <div class="absolute" id="first-column-second-row"></div>
+    <div class="absolute" id="second-column-second-row"></div>
+    <div class="absolute" id="first-and-second-column-third-row"></div>
+    <div class="absolute" id="third-column-all-rows"></div>
+</div>
\ No newline at end of file
--- a/testing/web-platform/tests/css/css-multicol-1/OWNERS
+++ b/testing/web-platform/tests/css/css-multicol-1/OWNERS
@@ -1,1 +1,2 @@
 @frivoal
+@rachelandrew
deleted file mode 100644
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-001-ref.xht
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
-  <title>CSS Reftest Reference</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
-  <meta name="flags" content="image" />
-  <style type="text/css"><![CDATA[
-  table
-  {
-  border-spacing: 0px;
-  border: gray solid 1em;
-  font: 1.25em/1 serif;
-  }
-
-  td
-  {
-  padding: 0;
-  width: 3em;
-  }
-
-  td + td {width: 8em;}
-
-  img, td {vertical-align: top;}
-  ]]></style>
- </head>
- <body>
-  <table>
-    <tr>
-      <td><img src="support/swatch-blue.png" width="40" height="80" alt="Image download support must be enabled" /><img src="support/black20x20.png" width="50" height="20" alt="Image download support must be enabled" /></td><td><img src="support/swatch-orange.png" width="40" height="80" alt="Image download support must be enabled" /></td>
-    </tr></table>
- </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-001.xht
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
-  <title>CSS Multi-column Layout Test: Overflowed content inside multicol element</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
-  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements" title="8.1. Overflow inside multicol elements" />
-  <link rel="match" href="multicol-block-clip-001-ref.xht"/>
-  <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that content in the normal flow that extends into column gaps is clipped in the middle of the column gap." />
-  <style type="text/css"><![CDATA[
-  div
-  {
-  border: gray solid 1em;
-  font: 1.25em/1 Ahem;
-  orphans: 1;
-  widows: 1;
-  width: 11em;
-
-  column-count: 4;
-  column-gap: 1em;
-  }
-
-  h4
-  {
-  background: black;
-  color: black;
-  font: inherit;
-  margin: 0;
-  width: 11em;
-  }
-
-  #first-column {color: blue;}
-
-  #second-column {color: orange;}
-
-  #third-column, #fourth-column {color: white;}
-  ]]></style>
- </head>
- <body>
-  <div>
-    <span id="first-column"> ab cd ef gh </span>
-    <h4> 1234567890123 </h4>
-    <span id="second-column"> ij kl mn oq </span>
-    <span id="third-column"> ab cd ef gh </span>
-    <span id="fourth-column"> rs tu vw xy </span>
-  </div>
- </body>
-</html>
deleted file mode 100644
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-002-ref.xht
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
-  <title>CSS Reftest Reference</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
-  <meta name="flags" content="image" />
-  <style type="text/css"><![CDATA[
-  div
-  {
-  font: 1.25em/1 serif;
-  border: 1em solid gray;
-  width: 11em;
-  height: 6em;
-  position: relative;
-  }
-
-  img {position: absolute;}
-
-  img#black {top: 4em;}
-
-  img#first-orange {top: 5em;}
-
-  img#second-orange {left: 4em;}
-
-  img#first-pink
-  {
-  left: 4em;
-  top: 3em;
-  }
-
-  img#second-pink {left: 8em;}
-
-  img#yellow
-  {
-  left: 8em;
-  top: 1em;
-  }
-  ]]></style>
- </head>
- <body>
-
-  <div>
-	<img id="blue" src="support/swatch-blue.png" width="40" height="80" alt="Image download support must be enabled" />
-	<img id="black" src="support/black20x20.png" width="70" height="20" alt="Image download support must be enabled" />
-	<img id="first-orange" src="support/swatch-orange.png" width="40" height="20" alt="Image download support must be enabled" />
-	<img id="second-orange" src="support/swatch-orange.png" width="40" height="60" alt="Image download support must be enabled" />
-	<img id="first-pink" src="support/swatch-pink.png" width="40" height="60" alt="Image download support must be enabled" />
-	<img id="second-pink" src="support/swatch-pink.png" width="40" height="20" alt="Image download support must be enabled" />
-	<img id="yellow" src="support/swatch-yellow.png" width="40" height="80" alt="Image download support must be enabled" />
-  </div>
-
- </body>
-</html>
\ No newline at end of file
deleted file mode 100644
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-block-clip-002.xht
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
-  <title>CSS Multi-column Layout Test: Overflowed content inside and outside multicol element</title>
-  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
-  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
-  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements" title="8.1. Overflow inside multicol elements" />
-  <link rel="match" href="multicol-block-clip-002-ref.xht"/>
-  <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that content in the normal flow that extends into column gaps is clipped in the middle of the column gap." />
-  <style type="text/css"><![CDATA[
-  div
-  {
-  border: gray solid 1em;
-  font: 1.25em/1 Ahem;
-  orphans: 1;
-  widows: 1;
-  width: 11em;
-
-  column-count: 3;
-  column-gap: 1em;
-  }
-
-  h4
-  {
-  background: black;
-  color: black;
-  font: inherit;
-  margin: 0;
-  width: 11em;
-  }
-
-  #first-column {color: blue;}
-
-  #second-column {color: orange;}
-
-  #third-column {color: pink;}
-
-  #fourth-column {color: yellow;}
-  ]]></style>
- </head>
- <body>
-  <div>
-    <span id="first-column"> ab cd ef gh </span>
-    <h4> 1234567890123 </h4>
-    <span id="second-column"> ij kl mn oq </span>
-    <span id="third-column"> ab cd ef gh </span>
-    <span id="fourth-column"> rs tu vw xy </span>
-  </div>
- </body>
-</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-001-ref.xht
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Reftest Reference</title>
+  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
+  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
+  <meta name="flags" content="image" />
+  <style type="text/css"><![CDATA[
+  table
+  {
+  border-spacing: 0px;
+  border: gray solid 1em;
+  font: 1.25em/1 serif;
+  }
+
+  td
+  {
+  padding: 0;
+  width: 3em;
+  }
+
+  td + td {width: 8em;}
+
+  img, td {vertical-align: top;}
+  ]]></style>
+ </head>
+ <body>
+  <table>
+    <tr>
+      <td><img src="support/swatch-blue.png" width="40" height="80" alt="Image download support must be enabled" /><img src="support/black20x20.png" width="60" height="20" alt="Image download support must be enabled" /></td><td><img src="support/swatch-orange.png" width="40" height="80" alt="Image download support must be enabled" /></td>
+    </tr></table>
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-001.xht
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Multi-column Layout Test: Overflowed content inside multicol element</title>
+  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
+  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
+  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements" title="8.1. Overflow inside multicol elements" />
+  <link rel="match" href="multicol-block-no-clip-001-ref.xht"/>
+  <meta name="flags" content="ahem" />
+  <meta name="assert" content="This test checks that content in the normal flow that extends into column gaps is not clipped in the middle of the column gap." />
+  <style type="text/css"><![CDATA[
+  div
+  {
+  border: gray solid 1em;
+  font: 1.25em/1 Ahem;
+  orphans: 1;
+  widows: 1;
+  width: 11em;
+
+  column-count: 4;
+  column-gap: 1em;
+  }
+
+  h4
+  {
+  background: black;
+  color: black;
+  font: inherit;
+  margin: 0;
+  }
+
+  #first-column {color: blue;}
+
+  #second-column {color: orange;}
+
+  #third-column, #fourth-column {color: white;}
+  ]]></style>
+ </head>
+ <body>
+  <div>
+    <span id="first-column"> ab cd ef gh </span>
+    <h4>123</h4>
+    <span id="second-column"> ij kl mn oq </span>
+    <span id="third-column"> ab cd ef gh </span>
+    <span id="fourth-column"> rs tu vw xy </span>
+  </div>
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-002-ref.xht
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Reftest Reference</title>
+  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
+  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
+  <meta name="flags" content="image" />
+  <style type="text/css"><![CDATA[
+  div
+  {
+  font: 1.25em/1 serif;
+  border: 1em solid gray;
+  width: 11em;
+  height: 6em;
+  position: relative;
+  }
+
+  img {position: absolute;}
+
+  img#black {top: 4em;}
+
+  img#first-orange {top: 5em;}
+
+  img#second-orange {left: 4em;}
+
+  img#first-pink
+  {
+  left: 4em;
+  top: 3em;
+  }
+
+  img#second-pink {left: 8em;}
+
+  img#yellow
+  {
+  left: 8em;
+  top: 1em;
+  }
+  ]]></style>
+ </head>
+ <body>
+
+  <div>
+	<img id="blue" src="support/swatch-blue.png" width="40" height="80" alt="Image download support must be enabled" />
+	<img id="black" src="support/black20x20.png" width="80" height="20" alt="Image download support must be enabled" />
+	<img id="first-orange" src="support/swatch-orange.png" width="40" height="20" alt="Image download support must be enabled" />
+	<img id="second-orange" src="support/swatch-orange.png" width="40" height="60" alt="Image download support must be enabled" />
+	<img id="first-pink" src="support/swatch-pink.png" width="40" height="60" alt="Image download support must be enabled" />
+	<img id="second-pink" src="support/swatch-pink.png" width="40" height="20" alt="Image download support must be enabled" />
+	<img id="yellow" src="support/swatch-yellow.png" width="40" height="80" alt="Image download support must be enabled" />
+  </div>
+
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-block-no-clip-002.xht
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Multi-column Layout Test: Overflowed content inside and outside multicol element</title>
+  <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
+  <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
+  <link rel="help" href="http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements" title="8.1. Overflow inside multicol elements" />
+  <link rel="match" href="multicol-block-no-clip-002-ref.xht"/>
+  <meta name="flags" content="ahem" />
+  <meta name="assert" content="This test checks that content in the normal flow that extends into column gaps is not clipped in the middle of the column gap." />
+  <style type="text/css"><![CDATA[
+  div
+  {
+  border: gray solid 1em;
+  font: 1.25em/1 Ahem;
+  orphans: 1;
+  widows: 1;
+  width: 11em;
+
+  column-count: 3;
+  column-gap: 1em;
+  }
+
+  h4
+  {
+  background: black;
+  color: black;
+  font: inherit;
+  margin: 0;
+  }
+
+  #first-column {color: blue;}
+
+  #second-column {color: orange;}
+
+  #third-column {color: pink;}
+
+  #fourth-column {color: yellow;}
+  ]]></style>
+ </head>
+ <body>
+  <div>
+    <span id="first-column"> ab cd ef gh </span>
+    <h4>1234</h4>
+    <span id="second-column"> ij kl mn oq </span>
+    <span id="third-column"> ab cd ef gh </span>
+    <span id="fourth-column"> rs tu vw xy </span>
+  </div>
+ </body>
+</html>
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-clip-001.xht
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-clip-001.xht
@@ -2,17 +2,17 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <title>CSS Multi-column Layout Test: overflowed content inside and outside multicol element</title>
   <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
   <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-24 -->
   <link rel="help" href="http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements" title="8.1. Overflow inside multicol elements" />
   <link rel="match" href="multicol-clip-001-ref.xht" />
   <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that content in the normal flow can extend into column gap before it reaches its middle. In this test, the 'l' and 'c' glyphs are painted into the left half of the column gap; the 'l' and 'e' glyphs extend outside the last column box at the edge of the multi-column and are therefore rendered thanks to the default 'overflow: visible' declaration." />
+  <meta name="assert" content="This test checks that content in the normal flow can extend into column gap. In this test, the 'l' and 'c' glyphs are painted into the left half of the column gap; the 'l' and 'e' glyphs extend outside the last column box at the edge of the multi-column and are therefore rendered thanks to the default 'overflow: visible' declaration." />
   <style type="text/css"><![CDATA[
   div
   {
   background: white;
   border: gray solid 1em;
   color: blue;
   font: 1.25em/1 Ahem;
   orphans: 1;
@@ -36,9 +36,9 @@
 
     <span>
     bl ac
     </span>
     bl ue
   </div>
 
  </body>
-</html>
\ No newline at end of file
+</html>
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-003-ref.xht
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-003-ref.xht
@@ -10,16 +10,16 @@
   img {vertical-align: top;}
   ]]></style>
  </head>
 
  <body>
 
   <div><img src="support/swatch-gray.png" width="300" height="20" alt="Image download support must be enabled" /></div>
 
-  <div><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /><img src="support/swatch-pink.png" width="70" height="20" alt="Image download support must be enabled" /><img src="support/swatch-blue.png" width="15" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="35" height="20" alt="Image download support must be enabled" /><img src="support/swatch-purple.png" width="80" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="60" height="20" alt="Image download support must be enabled" /><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /></div>
+  <div><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /><img src="support/swatch-pink.png" width="80" height="20" alt="Image download support must be enabled" /><img src="support/swatch-blue.png" width="5" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="35" height="20" alt="Image download support must be enabled" /><img src="support/swatch-purple.png" width="80" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="60" height="20" alt="Image download support must be enabled" /><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /></div>
 
-  <div><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /><img src="support/swatch-orange.png" width="70" height="20" alt="Image download support must be enabled" /><img src="support/swatch-blue.png" width="15" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="35" height="20" alt="Image download support must be enabled" /><img src="support/swatch-gray.png" width="80" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="60" height="20" alt="Image download support must be enabled" /><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /></div>
+  <div><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /><img src="support/swatch-orange.png" width="80" height="20" alt="Image download support must be enabled" /><img src="support/swatch-blue.png" width="5" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="35" height="20" alt="Image download support must be enabled" /><img src="support/swatch-gray.png" width="80" height="20" alt="Image download support must be enabled" /><img src="support/swatch-yellow.png" width="60" height="20" alt="Image download support must be enabled" /><img src="support/swatch-gray.png" width="20" height="20" alt="Image download support must be enabled" /></div>
 
   <div><img src="support/swatch-gray.png" width="300" height="20" alt="Image download support must be enabled" /></div>
 
  </body>
-</html>
\ No newline at end of file
+</html>
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-003.xht
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-003.xht
@@ -2,17 +2,17 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <title>CSS Multi-column Layout Test: column-rule and overflow inside (complex test)</title>
   <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
   <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-07-29 -->
   <link rel="help" href="http://www.w3.org/TR/css3-multicol/#the-number-and-width-of-columns" title="3. The number and width of columns" />
   <link rel="match" href="multicol-count-computed-003-ref.xht" />
   <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that if one of 2 adjacent column boxes (2nd and 3rd colum box in this test) does not have any content, then the column rule separating those should not be drawn. In this test, the 3rd colum box should have no inline content. This test also checks that inline content in the normal flow that extends into a column gap should be clipped in the middle of the column gap. So, in this test, inline content in 1st column box should be partially clipped and overlapped partially by 1st column-rule." />
+  <meta name="assert" content="This test checks that if one of 2 adjacent column boxes (2nd and 3rd colum box in this test) does not have any content, then the column rule separating those should not be drawn. In this test, the 3rd colum box should have no inline content. This test also checks that inline content in the normal flow that extends into a column gap should not be clipped in the middle of the column gap. So, in this test, inline content in 1st column box should not be clipped and should overlappe partially the 1st column-rule." />
   <style type="text/css"><![CDATA[
   div
   {
   background: yellow;
   border: gray solid 1em;
   color: black;
   font: 1.25em/1 Ahem;
   orphans: 1;
@@ -48,23 +48,21 @@
   #pink {color: pink;}
   #orange {color: orange;}
   #purple {color: purple;}
   #gray {color: gray;}
 
   /*
   Since
   "
-  Content in the normal flow that extends into
-  column gaps (e.g., long words or images) is
-  clipped in the middle of the column gap.
+  content that extends outside column boxes visibly overflows and is not clipped to the column box.
   "
-  http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements
+  https://drafts.csswg.org/css-multicol-1/#overflow-inside-multicol-elements
   this causes the right-half (0.5em) of the 'K' glyph to
-  be overlapped by the right-half (0.75em) of the 1st blue column-rule.
+  overlap the right-half (0.75em) of the 1st blue column-rule.
   Same thing should happen to the 'N' glyph of 'ORAN'.
 
   Because no inline content should be rendered into the
   3rd column box, this causes the 2nd column rule not
   been rendered because
   "
   Column rules are only drawn between two columns that
   both have content.
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-005.xht
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-count-computed-005.xht
@@ -2,17 +2,17 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <title>CSS Multi-column Layout Test: column-rule and overflow inside (complex test)</title>
   <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
   <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-03 -->
   <link rel="help" href="http://www.w3.org/TR/css3-multicol/#the-number-and-width-of-columns" title="3. The number and width of columns" />
   <link rel="match" href="multicol-count-computed-003-ref.xht" />
   <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that if one of 2 adjacent column boxes (2nd and 3rd colum box in this test) does not have any content, then the column rule separating those should not be drawn. In this test, the 3rd colum box should have no inline content. This test also checks that inline content in the normal flow that extends into a column gap should be clipped in the middle of the column gap. So, in this test, inline content in 1st column box should be partially clipped and overlapped partially by 1st column-rule." />
+  <meta name="assert" content="This test checks that if one of 2 adjacent column boxes (2nd and 3rd colum box in this test) does not have any content, then the column rule separating those should not be drawn. In this test, the 3rd colum box should have no inline content. This test also checks that inline content in the normal flow that extends into a column gap should not be clipped in the middle of the column gap. So, in this test, inline content in 1st column box should not be partially clipped and should overlap partially with the 1st column-rule." />
   <style type="text/css"><![CDATA[
   div
   {
   background: yellow;
   border: gray solid 1em;
   color: black;
   font: 1.25em/1 Ahem;
   orphans: 1;
@@ -52,23 +52,21 @@
   #pink {color: pink;}
   #orange {color: orange;}
   #purple {color: purple;}
   #gray {color: gray;}
 
   /*
   Since
   "
-  Content in the normal flow that extends into
-  column gaps (e.g., long words or images) is
-  clipped in the middle of the column gap.
+  content that extends outside column boxes visibly overflows and is not clipped to the column box
   "
   http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements
   this causes the right-half (0.5em) of the 'K' glyph to
-  be overlapped by the right-half (0.75em) of the 1st blue column-rule.
+  overlap with the right-half (0.75em) of the 1st blue column-rule.
   Same thing should happen to the 'N' glyph of 'ORAN'.
 
   Because no inline content should be rendered into the
   3rd column box, this causes the 2nd column rule not
   been rendered because
   "
   Column rules are only drawn between two columns that
   both have content.
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-gap-large-001.xht
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-gap-large-001.xht
@@ -2,17 +2,17 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <title>CSS Multi-column Layout Test: 'column-gap' with large value</title>
   <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
   <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-06 -->
   <link rel="help" href="http://www.w3.org/TR/css3-multicol/#column-gap" title="4.1 'column-gap" />
   <link rel="match" href="multicol-gap-large-001-ref.xht" />
   <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that when 'column-gap' is large and when used 'column-width' is narrow, then content extends into column-gap until its middle and content can extend, overflow outside the edges of the multi-colum element if 'overflow' is set to 'visible'." />
+  <meta name="assert" content="This test checks that when 'column-gap' is large and when used 'column-width' is narrow, then content extends into column-gap and content can extend, overflow outside the edges of the multi-colum element if 'overflow' is set to 'visible'." />
   <style type="text/css"><![CDATA[
   div
   {
   background-color: yellow;
   border: gray solid 1em;
   color: black;
   font: 1.25em/1 Ahem;
   orphans: 1;
--- a/testing/web-platform/tests/css/css-multicol-1/multicol-width-small-001.xht
+++ b/testing/web-platform/tests/css/css-multicol-1/multicol-width-small-001.xht
@@ -3,17 +3,17 @@
  <head>
   <title>CSS Multi-column Layout Test: narrow column-width</title>
   <link rel="author" title="Opera Software ASA" href="http://www.opera.com/" />
   <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-24 -->
   <link rel="help" href="http://www.w3.org/TR/css3-multicol/#overflow-inside-multicol-elements" title="8.1. Overflow inside multicol elements" />
   <link rel="help" href="http://www.w3.org/TR/css3-multicol/#cw" title="3.1. 'column-width'" />
   <link rel="match" href="multicol-width-small-001-ref.xht" />
   <meta name="flags" content="ahem" />
-  <meta name="assert" content="This test checks that a set 'column-width' which is small with regards to width of multi-column element. In this test, in-flow content that extends into column gaps is clipped in the middle of the column gap. " />
+  <meta name="assert" content="This test checks that a set 'column-width' which is small with regards to width of multi-column element." />
   <style type="text/css"><![CDATA[
   div
   {
   background-color: yellow;
   border: gray solid 1em;
   color: black;
   font: 1.25em/1 Ahem;
   orphans: 1;
@@ -42,14 +42,12 @@
   <!--
 
   Expected results
 
   *************************
   *B|a|b|u|b|u|B|a| | | | *
   *************************
 
-  Every "l", "c" and "e" glyphs are clipped.
-
   -->
 
  </body>
 </html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-position-3/position-sticky-margins-ref.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<title>Reference for position:sticky elements should properly interact with margins</title>
+
+<style>
+.group {
+  display: inline-block;
+  position: relative;
+  width: 180px;
+  height: 400px;
+}
+
+.scroller {
+  width: 150px;
+  height: 300px;
+  overflow-y: scroll;
+  overflow-x: hidden;
+}
+
+.indicator {
+  position: relative;
+  background-color: green;
+  margin: 15px;
+}
+
+.box {
+  width: 100px;
+  height: 100px;
+}
+
+.padding {
+  height: 385px;
+}
+</style>
+<script>
+window.addEventListener('load', function() {
+  document.getElementById('scroller1').scrollTop = 0;
+  document.getElementById('scroller2').scrollTop = 60;
+  document.getElementById('scroller3').scrollTop = 120;
+});
+</script>
+
+<div class="group">
+  <div id="scroller1"  class="scroller">
+    <div class="indicator box" style="top: 0;"></div>
+    <div class="padding"></div>
+  </div>
+</div>
+
+<div class="group">
+  <div id="scroller2"  class="scroller">
+    <div class="indicator box" style="top: 50px;"></div>
+    <div class="padding"></div>
+  </div>
+</div>
+
+<div class="group">
+  <div id="scroller3"  class="scroller">
+    <div class="indicator box" style="top: 85px;"></div>
+    <div class="padding"></div>
+  </div>
+</div>
+
+<div>You should see three green boxes above. No red should be visible.</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-position-3/position-sticky-margins.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<title>position:sticky elements should properly interact with margins</title>
+<link rel="match" href="position-sticky-margins-ref.html" />
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
+<meta name="assert" content="position:sticky elements should ignore margins when sticking, but consider them when making sure sticky elements do not escape their containing block" />
+
+<style>
+.group {
+  display: inline-block;
+  position: relative;
+  width: 180px;
+  height: 400px;
+}
+
+.scroller {
+  position: relative;
+  width: 150px;
+  height: 300px;
+  overflow-y: scroll;
+  overflow-x: hidden;
+}
+
+.holder {
+  width: 130px;
+  height: 200px;
+}
+
+.sticky {
+  position: sticky;
+  background-color: green;
+  top: 5px;
+  margin: 15px;
+}
+
+.indicator {
+  left: 15px;
+  position: absolute;
+  background-color: red;
+}
+
+.box {
+  width: 100px;
+  height: 100px;
+}
+
+.padding {
+  height: 300px;
+}
+</style>
+<script>
+window.addEventListener('load', function() {
+  document.getElementById('scroller1').scrollTop = 0;
+  document.getElementById('scroller2').scrollTop = 60;
+  document.getElementById('scroller3').scrollTop = 120;
+});
+</script>
+
+<!-- Before sticking, the margin should be obeyed. -->
+<div class="group">
+  <div id="scroller1"  class="scroller">
+    <div class="indicator box" style="top: 15px;"></div>
+    <div class="holder">
+      <div class="sticky box"></div>
+    </div>
+    <div class="padding"></div>
+  </div>
+</div>
+
+<!-- Whilst stuck, the margin is irrelevant. -->
+<div class="group">
+  <div id="scroller2"  class="scroller">
+    <div class="indicator box" style="top: 65px;"></div>
+    <div class="holder">
+      <div class="sticky box"></div>
+    </div>
+    <div class="padding"></div>
+  </div>
+</div>
+
+<!-- The margin does count when making sure the sticky element does not escape
+     its containing block. -->
+<div class="group">
+  <div id="scroller3"  class="scroller">
+    <div class="indicator box" style="top: 100px;"></div>
+    <div class="holder">
+      <div class="sticky box"></div>
+    </div>
+    <div class="padding"></div>
+  </div>
+</div>
+
+<div>You should see three green boxes above. No red should be visible.</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-position-3/position-sticky-stacking-context-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<title>Reference for position: sticky should create a stacking context</title>
+
+<style>
+.indicator {
+  background-color: green;
+}
+
+.box {
+  width: 200px;
+  height: 200px;
+}
+</style>
+
+<div class="indicator box"></div>
+
+<div>You should see a single green box above. No red should be visible.</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-position-3/position-sticky-stacking-context.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<title>position: sticky should create a stacking context</title>
+<link rel="match" href="position-sticky-stacking-context-ref.html" />
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
+<meta name="assert" content="position:sticky elements should create a stacking context" />
+
+<style>
+.indicator {
+  position: absolute;
+  background-color: green;
+  z-index: 1;
+}
+
+.sticky {
+  position: sticky;
+  z-index: 0;
+}
+
+.child {
+  position: relative;
+  background-color: red;
+  z-index: 2;
+}
+
+.box {
+  width: 200px;
+  height: 200px;
+}
+</style>
+
+<div class="indicator box"></div>
+<div class="sticky box">
+  <!-- Because sticky forms a stacking context, this child remains on bottom
+       even though it has a higher z-index than the indicator box. -->
+  <div class="child box"></div>
+</div>
+
+<div>You should see a single green box above. No red should be visible.</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-position-3/position-sticky-writing-modes-ref.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<title>Reference for position:sticky constraints are independent of writing mode</title>
+
+<style>
+.group {
+  display: inline-block;
+  position: relative;
+  width: 180px;
+  height: 250px;
+}
+
+.scroller {
+  position: relative;
+  width: 130px;
+  height: 200px;
+  overflow: scroll;
+  font: 25px/1 Ahem;
+}
+
+.contents {
+  height: 500px;
+  width: 200px;
+}
+
+.indicator {
+  display: inline;
+  color: green;
+  position: relative;
+}
+</style>
+
+<script>
+window.addEventListener('load', function() {
+  document.getElementById('scroller1').scrollTop = 50;
+  document.getElementById('scroller1').scrollLeft = 20;
+  document.getElementById('scroller2').scrollTop = 50;
+  document.getElementById('scroller2').scrollLeft = 60;
+});
+</script>
+
+<div class="group">
+  <div id="scroller1" class="scroller" style="writing-mode: vertical-lr;">
+    <div class="contents">
+      <div class="indicator" style="left: 40px; top: 100px;">XXX</div>
+    </div>
+  </div>
+</div>
+
+<div class="group">
+  <div id="scroller2" class="scroller" style="writing-mode: vertical-rl;">
+    <div class="contents">
+      <div class="indicator" style="right: 45px; top: 100px;">XXX</div>
+    </div>
+  </div>
+</div>
+
+<div>You should see two green blocks above. No red should be visible.</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-position-3/position-sticky-writing-modes.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<title>position:sticky constraints are independent of writing mode</title>
+<link rel="match" href="position-sticky-writing-modes-ref.html" />
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
+<meta name="assert" content="This test checks that position:sticky constraints are independent of the writing mode" />
+
+<style>
+.group {
+  display: inline-block;
+  position: relative;
+  width: 180px;
+  height: 250px;
+}
+
+.scroller {
+  position: relative;
+  width: 130px;
+  height: 200px;
+  overflow: scroll;
+  font: 25px/1 Ahem;
+}
+
+.contents {
+  height: 500px;
+  width: 200px;
+}
+
+.indicator {
+  position: absolute;
+  color: red;
+}
+
+.sticky {
+  display: inline;
+  color: green;
+  position: sticky;
+  top: 50px;
+}
+</style>
+
+<script>
+window.addEventListener('load', function() {
+  document.getElementById('scroller1').scrollTop = 50;
+  document.getElementById('scroller1').scrollLeft = 20;
+  document.getElementById('scroller2').scrollTop = 50;
+  document.getElementById('scroller2').scrollLeft = 60;
+});
+</script>
+
+<div class="group">
+  <div id="scroller1" class="scroller" style="writing-mode: vertical-lr;">
+    <div class="indicator" style="left: 40px; top: 100px;">XXX</div>
+    <div class="contents">
+      <div class="sticky" style="left: 20px;">XXX</div>
+    </div>
+  </div>
+</div>
+
+<div class="group">
+  <div id="scroller2" class="scroller" style="writing-mode: vertical-rl;">
+    <div class="contents">
+      <div class="indicator" style="left: 45px; top: 100px;">XXX</div>
+      <div class="sticky" style="right: 20px;">XXX</div>
+    </div>
+  </div>
+</div>
+
+<div>You should see two green blocks above. No red should be visible.</div>
deleted file mode 100644
--- a/testing/web-platform/tests/css/css-position-3/sticky-input-box-position.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<title>Type in an onscreen sticky positioned input box should not scroll the page.</title>
-<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
-<meta name="assert" content="This test checks that typing in an onscreen sticky positioned
-input box should not scroll the page." />
-
-<script src="../../../resources/testharness.js"></script>
-<script src="../../../resources/testharnessreport.js"></script>
-
-<style>
-body {
-  height: 2000px;
-}
-
-input {
-  position: sticky;
-  top: 10px;
-}
-</style>
-
-<input type="text" id="input"/>
-
-<script>
-test(() => {
-  window.scrollTo(0, 100);
-  var input = document.getElementById('input');
-  input.focus();
-  if (window.testRunner) {
-    eventSender.keyDown('T');
-    eventSender.keyDown('E');
-    eventSender.keyDown('S');
-    eventSender.keyDown('T');
-  }
-  assert_equals(window.scrollY, 100);
-}, 'Type in the onscreen sticky input box should not scroll the page.');
-</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transforms-2/animation/resources/interpolation-testcommon.js
@@ -0,0 +1,54 @@
+'use strict';
+function test_interpolation(settings, expectations) {
+  // Returns a timing function that at 0.5 evaluates to progress.
+  function timingFunction(progress) {
+    if (progress === 0)
+      return 'steps(1, end)';
+    if (progress === 1)
+      return 'steps(1, start)';
+    var y = (8 * progress - 1) / 6;
+    return 'cubic-bezier(0, ' + y + ', 1, ' + y + ')';
+  }
+
+  test(function(){
+    assert_true(CSS.supports(settings.property, settings.from), 'Value "' + settings.from + '" is supported by ' + settings.property);
+    assert_true(CSS.supports(settings.property, settings.to), 'Value "' + settings.to + '" is supported by ' + settings.property);
+  }, '"' + settings.from + '" and "' + settings.to + '" are valid ' + settings.property + ' values');
+
+  for (var i = 0; i < expectations.length; ++i) {
+    var progress = expectations[i].at;
+    var expectation = expectations[i].expect;
+    var animationId = 'anim' + i;
+    var targetId = 'target' + i;
+    var referenceId = 'reference' + i;
+
+    test(function(){
+      assert_true(CSS.supports(settings.property, expectation), 'Value "' + expectation + '" is supported by ' + settings.property);
+
+      var stylesheet = document.createElement('style');
+      stylesheet.textContent =
+        '#' + targetId + ' {\n' +
+        '  animation: 2s ' + timingFunction(progress) + ' -1s paused ' + animationId + ';\n' +
+        '}\n' +
+        '@keyframes ' + animationId + ' {\n' +
+        '  0% { ' + settings.property + ': ' + settings.from + '; }\n' +
+        '  100% { ' + settings.property + ': ' + settings.to + '; }\n' +
+        '}\n' +
+        '#' + referenceId + ' {\n' +
+        '  ' + settings.property + ': ' + expectation + ';\n' +
+        '}\n';
+      document.head.appendChild(stylesheet);
+
+      var target = document.createElement('div');
+      target.id = targetId;
+      document.body.appendChild(target);
+
+      var reference = document.createElement('div');
+      reference.id = referenceId;
+      document.body.appendChild(reference);
+      reference.style = '';
+
+      assert_equals(getComputedStyle(target)[settings.property], getComputedStyle(reference)[settings.property]);
+    }, 'Animation between "' + settings.from + '" and "' + settings.to + '" at progress ' + progress);
+  }
+}
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transforms-2/animation/rotate-interpolation.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>rotate interpolation</title>
+    <link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+    <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate">
+    <meta name="assert" content="rotate supports animation.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="resources/interpolation-testcommon.js"></script>
+  </head>
+  <body>
+    <script>
+      test_interpolation({
+        property: 'rotate',
+        from: '100deg',
+        to: '180deg',
+      }, [
+        {at: -1, expect: '20deg'},
+        {at: 0, expect: '100deg'},
+        {at: 0.125, expect: '110deg'},
+        {at: 0.875, expect: '170deg'},
+        {at: 1, expect: '180deg'},
+        {at: 2, expect: '260deg'}
+      ]);
+
+      test_interpolation({
+        property: 'rotate',
+        from: '45deg',
+        to: '-1 1 0 60deg',
+      }, [
+        {at: -1, expect: '0.447214 -0.447214 0.774597 104.478deg'},
+        {at: 0, expect: '45deg'},
+        {at: 0.125, expect: '-0.136456 0.136456 0.981203 40.6037deg'},
+        {at: 0.875, expect: '-0.70246 0.70246 0.114452 53.1994deg'},
+        {at: 1, expect: '-1 1 0 60deg'},
+        {at: 2, expect: '-0.637897 0.637897 -0.431479 124.975deg'}
+      ]);
+
+      test_interpolation({
+        property: 'rotate',
+        from: 'none',
+        to: '7 -8 9 400grad',
+      }, [
+        {at: -1, expect: '7 -8 9 -400grad'},
+        {at: 0, expect: 'none'},
+        {at: 0.125, expect: '7 -8 9 50grad'},
+        {at: 0.875, expect: '7 -8 9 350grad'},
+        {at: 1, expect: '7 -8 9 400grad'},
+        {at: 2, expect: '7 -8 9 800grad'}
+      ]);
+
+      test_interpolation({
+        property: 'rotate',
+        from: 'none',
+        to: 'none',
+      }, [
+        {at: -1, expect: 'none'},
+        {at: 0, expect: 'none'},
+        {at: 0.125, expect: 'none'},
+        {at: 0.875, expect: 'none'},
+        {at: 1, expect: 'none'},
+        {at: 2, expect: 'none'}
+      ]);
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transforms-2/animation/scale-interpolation.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>scale interpolation</title>
+    <link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+    <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-scale">
+    <meta name="assert" content="scale supports animation.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="resources/interpolation-testcommon.js"></script>
+  </head>
+  <body>
+    <script>
+      test_interpolation({
+        property: 'scale',
+        from: '2 30 400',
+        to: '10 110 1200',
+      }, [
+        {at: -1, expect: '-6 -50 -400'},
+        {at: 0, expect: '2 30 400'},
+        {at: 0.125, expect: '3 40 500'},
+        {at: 0.875, expect: '9 100 1100'},
+        {at: 1, expect: '10 110 1200'},
+        {at: 2, expect: '18 190 2000'}
+      ]);
+
+      test_interpolation({
+        property: 'scale',
+        from: '26 17 9',
+        to: '2',
+      }, [
+        {at: -1, expect: '50 33 17'},
+        {at: 0, expect: '26 17 9'},
+        {at: 0.125, expect: '23 15 8'},
+        {at: 0.875, expect: '5 3 2'},
+        {at: 1, expect: '2'},
+        {at: 2, expect: '-22 -15 -7'}
+      ]);
+
+      test_interpolation({
+        property: 'scale',
+        from: 'none',
+        to: '4 3 2',
+      }, [
+        {at: -1, expect: '-2 -1 0'},
+        {at: 0, expect: 'none'},
+        {at: 0.125, expect: '1.375 1.25 1.125'},
+        {at: 0.875, expect: '3.625 2.75 1.875'},
+        {at: 1, expect: '4 3 2'},
+        {at: 2, expect: '7 5 3'}
+      ]);
+
+      test_interpolation({
+        property: 'scale',
+        from: 'none',
+        to: 'none',
+      }, [
+        {at: -1, expect: 'none'},
+        {at: 0, expect: 'none'},
+        {at: 0.125, expect: 'none'},
+        {at: 0.875, expect: 'none'},
+        {at: 1, expect: 'none'},
+        {at: 2, expect: 'none'}
+      ]);
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transforms-2/animation/translate-interpolation.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>translate interpolation</title>
+    <link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+    <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
+    <meta name="assert" content="translate supports <length> and <percentage> animation.">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="resources/interpolation-testcommon.js"></script>
+    <style>
+      body {
+        width: 500px;
+        height: 500px;
+      }
+      div {
+        width: 10px;
+        height: 10px;
+      }
+    </style>
+  </head>
+  <body>
+    <script>
+      test_interpolation({
+        property: 'translate',
+        from: '220px 240px 260px',
+        to: '300px 400px 500px',
+      }, [
+        {at: -1, expect: '140px 80px 20px'},
+        {at: 0, expect: '220px 240px 260px'},
+        {at: 0.125, expect: '230px 260px 290px'},
+        {at: 0.875, expect: '290px 380px 470px'},
+        {at: 1, expect: '300px 400px 500px'},
+        {at: 2, expect: '380px 560px 740px'}
+      ]);
+
+      test_interpolation({
+        property: 'translate',
+        from: '480px 400px 320px',
+        to: '240% 160%',
+      }, [
+        {at: -1, expect: 'calc(960px - 240%) calc(800px - 160%) 640px'},
+        {at: 0, expect: '480px 400px 320px'},
+        {at: 0.125, expect: 'calc(420px + 30%) calc(350px + 20%) 280px'},
+        {at: 0.875, expect: 'calc(210% + 60px) calc(140% + 50px) 40px'},
+        {at: 1, expect: '240% 160%'},
+        {at: 2, expect: 'calc(480% - 480px) calc(320% - 400px) -320px'}
+      ]);
+
+      test_interpolation({
+        property: 'translate',
+        from: 'none',
+        to: '8px 80% 800px',
+      }, [
+        {at: -1, expect: '-8px -80% -800px'},
+        {at: 0, expect: 'none'},
+        {at: 0.125, expect: '1px 10% 100px'},
+        {at: 0.875, expect: '7px 70% 700px'},
+        {at: 1, expect: '8px 80% 800px'},
+        {at: 2, expect: '16px 160% 1600px'}
+      ]);
+
+      test_interpolation({
+        property: 'translate',
+        from: 'none',
+        to: 'none',
+      }, [
+        {at: -1, expect: 'none'},
+        {at: 0, expect: 'none'},
+        {at: 0.125, expect: 'none'},
+        {at: 0.875, expect: 'none'},
+        {at: 1, expect: 'none'},
+        {at: 2, expect: 'none'}
+      ]);
+    </script>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-006-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference File</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+  white-space: pre;
+  font-family: monospace;
+}
+</style>
+
+<p>Test passes if “PASS…” appears below.</p>
+<div>PASS…</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-008-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Reference File</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+  font-size: 100px;
+  line-height: 1;
+  font-family: ahem;
+  overflow: hidden;
+  width: 0.5em;
+  color: green;
+}
+</style>
+
+<p>Test passes if there is a filled green rectangle and <strong>no red</strong>.</p>
+<div>x</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-012-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test Reference File</title>
+<style>
+div {
+  font-size: 50px;
+  white-space: pre;
+  color: green;
+}
+span {
+	color: white;
+}
+</style>
+
+<p>Test passes if there are three green dots below and <strong>no red</strong>.</p>
+
+<div> …<span>&#x0E01;&#x0E33;</span></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-013-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+.test {
+  overflow: hidden;
+  white-space: pre;
+  font: 100px/1 ahem;
+  width: 2em;
+}
+.green {
+  position: absolute;
+  width: 100px;
+  height: 100px;
+  background: green;
+  margin-left: 100px;
+}
+span {
+  vertical-align: sub;
+}
+</style>
+
+<p>Test passes if there are 3 filled green squares and <strong>no red</strong>.</p>
+<div class="green"></div>
+<div class=test><span><br><div class="green"></div><br><div class="green"></div></span></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-016-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+  margin-left: 60px;
+  background: green;
+  width: 40px;
+  height: 40px;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-021-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+  font-family: monospace;
+  width: 16ch;
+  white-space: pre;
+  overflow: scroll;
+  border: solid blue;
+}
+</style>
+
+<p>This test passes if the text is in the blue box below is “PASS”.
+<div id=test>                PASS</div>
+<script>
+var test = document.getElementById("test");
+test.scrollBy(500,0);
+</script>
+
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/reference/text-overflow-022-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test Reference File</title>
+<style>
+div {
+  font-size: 50px;
+  white-space: pre;
+  color: green;
+}
+span {
+	color: white;
+}
+</style>
+
+<p>Test passes if there are three green dots below and <strong>no red</strong>.</p>
+
+<div> …<span>l&#x20DE;</span></div>
new file mode 100644
index 0000000000000000000000000000000000000000..6bd73ac101874f306d007e9cea8fa3a1f62dce16
GIT binary patch
literal 135
zc%17D@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaEa{HEjtmUzPnffIy#(@^1AIbU
z|1&U1KH@Y7a=AQR978H@B_{ycObm=q)$jcQvLs7fBT9nv(@M${i&7aJQ}UBi6+Ckj
b(^G>|6H_V+Po~-c6)||a`njxgN@xNA!@(kn
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: text-overflow applied at edge of block container</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="reference/text-overflow-006-ref.html">
+<meta name="flags" content="">
+<meta name="assert" content="Checks that the elipsis is applied at the edge of the block container, not the end of the line box, when these are different.">
+<style>
+div {
+  white-space: pre;
+  font-family: monospace;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  width: calc(5ch + 1px);
+  /* 5ch ought to be enough,
+     but Safari seems to have aliasing issues that make the ellipsis character larger than 1ch by a fraction of a pixel.
+     Adding an extra 1px does not change the validity of the test,
+     and lets safari fit “PASS…” in the space provided.
+     This issue may be a bug, but if so, it is unrelated to what this test is testing,
+     so no need to force a fail when an easy workaround is available.
+
+     NB: At the time of writing, Safari fails the test anyway,
+     but I want to make it possible for it to pass just by fixing what is relevant to CSS-UI.
+   */
+}
+span { float: right; }
+</style>
+
+<p>Test passes if “PASS…” appears below.</p>
+<div><span>    </span>PASSfiller text to make things overflow</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-007.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: ellipsis adjacent to remaining content</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="flags" content="ahem">
+<meta name="assert" content="The ellipsis is placed immediately adjacent to the end edge of the remaining inline content, with no intervening gap.">
+<style>
+.test {
+  white-space: pre;
+  font: 50px/1 ahem;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  width: 2.5em; /* We will be fitting 2em worth of characters in a 2.5em space, to see where the extra .5em goes. It should be after, not between the characters.*/
+  color: green;
+}
+.red {
+  position: absolute;
+  z-index: -1;
+  width: 100px;
+  height: 100px;
+  background: red;
+  /* This red box wich will show through the gap between the letter and the ellipsis if there's one
+     but not extend past the two characters if the ellipsis is adjacent to the character as it should be.
+   */
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class=red></div>
+<div class=test>this line should render to a "t" followed by a "…", both of which are a 1em square in ahem, whithout any gap between them.
+this line also should render to a "t" followed by a "…", both of which are a 1em square in ahem, whithout any gap between them.</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-008.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: ellipsis and first character</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="reference/text-overflow-008-ref.html">
+<meta name="flags" content="ahem">
+<meta name="assert" content="The first character on a line must be clipped rather than ellipsed.">
+<!--
+	If the ellipsis character appears, it will be red (as it is styled after the block), and the test will fail.
+	If the first character is omitted rather than clipped, there will be no box at all, and the test will fail.
+-->
+<style>
+.test {
+  font: 100px/1 ahem;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  width: 0.5em;
+  color: red;
+}
+</style>
+
+<p>Test passes if there is a filled green rectangle and <strong>no red</strong>.</p>
+<div class=test><span style="color:green">x</span></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-009.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: ellipsis and first atomic inline</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="flags" content="">
+<meta name="assert" content="The first atomic inline on a line must be clipped rather than ellipsed.">
+<style>
+body > div {
+  width: 100px;
+  white-space: pre;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  color: red;
+}
+span {
+  display: inline-block;
+  height: 100px;
+  width: 200px;
+  background: green;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div><span> </span>XXXXXX</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-010.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: ellipsis hides atomic inlines and chars at end of line</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="flags" content="ahem">
+<meta name="assert" content="Implementations must hide atomic inlines and characters at the end of the line to make room for the ellipsis">
+<style>
+.green {
+  position: absolute;
+  z-index: -1;
+  background: green;
+  width: 100px;
+  height: 100px;
+}
+.test {
+  white-space: pre;
+  font-family: ahem;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  width: 5.2em; /* making this 5.2em rather than 5em, to ensure that the atomic inline gets entirely hidden even if it is only partially obstructing */
+  color: green;
+}
+span {
+  color: red;
+}
+.ib {
+  display: inline-block;
+  background: red; /* in case the text gets disapeared but the box is still there. */
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class=green></div>
+<div class=test>    <span class=ib>X</span>     </div>
+<div class=test>    <span>X</span>     </div>
+<div class=test>    <img src="support/1x1-red.png" width=10 height=10>     </div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-011.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: ellipsis hides end of line</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="flags" content="ahem">
+<meta name="assert" content="Implementations must hide at the *end* (not right) of the line to make room for the ellipsis">
+<style>
+.test {
+  white-space: pre;
+  font: 100px/1 ahem;
+  color: green;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  width: 500px;
+}
+.red {
+  position: absolute;
+  z-index: -1;
+  background: red;
+  width: 100px;
+  height: 100px;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class=red></div>
+<div class=test dir=rtl>    <span style="color:orange">xxxxxx</span></div>
+<!-- Adding some visible non-green characters in the positions that are supposed to be elided,
+to make sure that not only the ellipsis is shown at the right place, but that it replaces
+the right characters -->
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-012.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<title>CSS Basic User Interface Test: ellipsis and extended grapheme cluster</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="http://www.w3.org/TR/css3-ui/#text-overflow">
+<link rel="match" href="reference/text-overflow-012-ref.html">
+<meta name="flags" content="should">
+<!-- This is SHOULD because although CSS-UI defines "character" as "grapheme cluster" in a non optional manner
+  UAX29 itself defines grapheme cluster as either legacy or extended grapheme clusters,
+  and says (emphasis mine):
+      The extended grapheme clusters **should** be used
+      in implementations in preference to legacy grapheme clusters
+  -->
+<meta name="assert" content="Implementations must hide characters, i.e. entire garpheme clusters, not part of them, to make room for the ellipsis">
+<style>
+#sizer {
+  font-size: 50px;
+  white-space: pre;
+  color: white;
+  float: left;
+  position: relative;
+}
+
+#test {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  position: absolute;
+  top: 0; right: 2px; bottom: 0; left: 0;
+  color: green;
+}
+span {
+  color: red;
+}
+
+</style>
+
+<p>Test passes if there are three green dots below and <strong>no red</strong>.</p>
+
+<!--Starting the line with an space because the first character on the line is clipped rather than ellided, so we need the tested grapheme cluster to be non-first-->
+<!--
+sizer shrinkwraps to the size of a space, plus the grapheme cluster, plus the ellipsis.
+test is 2px shorter than that, so it can only fit part of the grapheme cluster.
+The whole grapheme cluster should be removed, not just its second character.
+-->
+
+<div id=sizer> &#x0E01;&#x0E33;…<div id=test> <span>&#x0E01;&#x0E33;filler text to make things overflow</span></div><div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-013.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<meta charset="utf-8">