Import wpt@6185fc083a08ea74f0ddfffff917321fb6ffa42d
Using wpt-import in Chromium 454a4f0cb9c837740bbb0bb1f07809728f98f4a6.
Note to sheriffs: This CL imports external tests and adds
expectations for those tests; if this CL is large and causes
a few new failures, please fix the failures by adding new
lines to TestExpectations rather than reverting. See:
https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md
Directory owners for changes in this CL:
chcunningham@chromium.org, wolenetz@chromium.org:
external/wpt/media-source
jsbell@chromium.org:
external/wpt/resources
NOAUTOREVERT=true
TBR=raphael.kubo.da.costa
No-Export: true
Change-Id: Ia09e3aaf2750bf36e54d5e1fbc6bb85fa85476c9
Reviewed-on: https://chromium-review.googlesource.com/c/1365716
Reviewed-by: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#614412}
diff --git a/third_party/blink/web_tests/NeverFixTests b/third_party/blink/web_tests/NeverFixTests
index b032b09e..0d08fe8 100644
--- a/third_party/blink/web_tests/NeverFixTests
+++ b/third_party/blink/web_tests/NeverFixTests
@@ -2175,3 +2175,4 @@
Bug(none) http/tests/devtools/isolated-code-cache/cross-origin-test.js [ WontFix ]
# ====== Tests incompatible with the default Site Isolation until here ======
+external/wpt/css/css-overscroll-behavior/overscrollBehavior-manual.html [ WontFix ]
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests
index 5fbbc85..ea4dec0 100644
--- a/third_party/blink/web_tests/SlowTests
+++ b/third_party/blink/web_tests/SlowTests
@@ -572,7 +572,6 @@
crbug.com/874695 external/wpt/css/css-fonts/variations/font-style-interpolation.html [ Slow ]
crbug.com/874695 external/wpt/css/css-layout-api/constraints-data.https.html [ Slow ]
crbug.com/874695 external/wpt/css/cssom-view/matchMedia.xht [ Slow ]
-crbug.com/874695 external/wpt/css/cssom-view/overscrollBehavior-manual.html [ Slow ]
crbug.com/874695 external/wpt/css/cssom-view/scroll-behavior-smooth.html [ Slow ]
crbug.com/874695 external/wpt/css/css-transitions/transitions-animatable-properties-01.html [ Slow ]
crbug.com/874695 external/wpt/css/css-values/vh_not_refreshing_on_chrome.html [ Slow ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
index 7f83caf..b82dfd4 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_5.json
@@ -1669,6 +1669,12 @@
{}
]
],
+ "css/css-overscroll-behavior/overscrollBehavior-manual.html": [
+ [
+ "/css/css-overscroll-behavior/overscrollBehavior-manual.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/snap-at-user-scroll-end-manual.html": [
[
"/css/css-scroll-snap/snap-at-user-scroll-end-manual.html",
@@ -3583,12 +3589,6 @@
{}
]
],
- "css/cssom-view/overscrollBehavior-manual.html": [
- [
- "/css/cssom-view/overscrollBehavior-manual.html",
- {}
- ]
- ],
"css/selectors/focus-visible-001-manual.html": [
[
"/css/selectors/focus-visible-001-manual.html",
@@ -170511,6 +170511,11 @@
{}
]
],
+ "media-source/mp4/invalid-codec.mp4": [
+ [
+ {}
+ ]
+ ],
"media-source/mp4/test-a-128k-44100Hz-1ch-manifest.json": [
[
{}
@@ -170616,6 +170621,11 @@
{}
]
],
+ "media-source/webm/invalid-codec.webm": [
+ [
+ {}
+ ]
+ ],
"media-source/webm/test-a-128k-44100Hz-1ch-manifest.json": [
[
{}
@@ -176966,12 +176976,12 @@
{}
]
],
- "resources/chromium/mojo_layouttest_test.mojom.js": [
+ "resources/chromium/mojo_web_test_helper_test.mojom.js": [
[
{}
]
],
- "resources/chromium/mojo_layouttest_test.mojom.js.headers": [
+ "resources/chromium/mojo_web_test_helper_test.mojom.js.headers": [
[
{}
]
@@ -181156,6 +181166,16 @@
{}
]
],
+ "svg/interact/scripted/resources/blank.htm": [
+ [
+ {}
+ ]
+ ],
+ "svg/interact/scripted/tabindex-focus-flag-expected.txt": [
+ [
+ {}
+ ]
+ ],
"svg/linking/reftests/href-a-element-ref.html": [
[
{}
@@ -183096,6 +183116,11 @@
{}
]
],
+ "web-nfc/idlharness.https.window-expected.txt": [
+ [
+ {}
+ ]
+ ],
"web-nfc/nfc_push.https-expected.txt": [
[
{}
@@ -244012,6 +244037,12 @@
{}
]
],
+ "media-source/mediasource-invalid-codec.html": [
+ [
+ "/media-source/mediasource-invalid-codec.html",
+ {}
+ ]
+ ],
"media-source/mediasource-is-type-supported.html": [
[
"/media-source/mediasource-is-type-supported.html",
@@ -272932,6 +272963,30 @@
{}
]
],
+ "svg/interact/scripted/composed.window.svg": [
+ [
+ "/svg/interact/scripted/composed.window.svg",
+ {}
+ ]
+ ],
+ "svg/interact/scripted/focus-events.svg": [
+ [
+ "/svg/interact/scripted/focus-events.svg",
+ {}
+ ]
+ ],
+ "svg/interact/scripted/focus-tabindex-default-value.svg": [
+ [
+ "/svg/interact/scripted/focus-tabindex-default-value.svg",
+ {}
+ ]
+ ],
+ "svg/interact/scripted/tabindex-focus-flag.svg": [
+ [
+ "/svg/interact/scripted/tabindex-focus-flag.svg",
+ {}
+ ]
+ ],
"svg/painting/inheritance.svg": [
[
"/svg/painting/inheritance.svg",
@@ -300380,7 +300435,7 @@
"testharness"
],
"bluetooth/resources/bluetooth-helpers.js": [
- "9b23d650baf2a77c105f61df2d8f197812aefce0",
+ "c4e26077c34283cc6d442cc8bc57f799eadd5a99",
"support"
],
"bluetooth/resources/health-thermometer-iframe.html": [
@@ -345147,6 +345202,10 @@
"e49fa49bc4e26572a68ad947e8e82a63ee46d4e2",
"testharness"
],
+ "css/css-overscroll-behavior/overscrollBehavior-manual.html": [
+ "97f52984a51ae4157ec8ed91ddf4b3b8d405bec6",
+ "manual"
+ ],
"css/css-paint-api/META.yml": [
"082a0977fa8569038eeab3e7595496256f87d725",
"support"
@@ -371999,10 +372058,6 @@
"772cc34f05bffc5b8445cd23ba13d9357269b84b",
"reftest"
],
- "css/cssom-view/overscrollBehavior-manual.html": [
- "d66317fe306d264708c3cac725d562c22034a5f6",
- "manual"
- ],
"css/cssom-view/resources/elementsFromPoint.js": [
"ba986ef3f568d4971eb4e84c4faaeae6e276b975",
"support"
@@ -410124,7 +410179,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "d54773be499366806bbd93c7fc119ff7a3a2ff72",
+ "3dd4817eb0dfb329720b0e6da5097bf2d28cc6b4",
"support"
],
"interfaces/web-share.idl": [
@@ -410923,6 +410978,10 @@
"f92fdbc3c71eb1caeb8c49b40be29d64434687c6",
"testharness"
],
+ "media-source/mediasource-invalid-codec.html": [
+ "19aa00c4d5f4966ef8a5de657341141f69c08ea3",
+ "testharness"
+ ],
"media-source/mediasource-is-type-supported.html": [
"a364693298d9f87b8c29ef1d609986e247667cca",
"testharness"
@@ -411019,6 +411078,10 @@
"bd202919899c5586a62790a11780649642447066",
"support"
],
+ "media-source/mp4/invalid-codec.mp4": [
+ "6fcc7c21a698ab9d9622c4a6fb6685aeafdd6f40",
+ "support"
+ ],
"media-source/mp4/test-a-128k-44100Hz-1ch-manifest.json": [
"f3caa460e9f078278680c6cdb9e1ce914a8c59ae",
"support"
@@ -411103,6 +411166,10 @@
"1b0e7b56a6b74b4c1636c80911741cbb565d0397",
"support"
],
+ "media-source/webm/invalid-codec.webm": [
+ "f1c8bdd7abba1f6b24dc0a5d44463c3bda770d0d",
+ "support"
+ ],
"media-source/webm/test-a-128k-44100Hz-1ch-manifest.json": [
"524da8149fe6d36c891501d059f85621f06cde36",
"support"
@@ -433307,11 +433374,11 @@
"6805c323df5a975231648b830e33ce183c3cbbd3",
"support"
],
- "resources/chromium/mojo_layouttest_test.mojom.js": [
- "babaeda156fc8c10afcc08c6652576e32a6741e1",
+ "resources/chromium/mojo_web_test_helper_test.mojom.js": [
+ "cfbad086898778b920c2d750890c870e082dc60a",
"support"
],
- "resources/chromium/mojo_layouttest_test.mojom.js.headers": [
+ "resources/chromium/mojo_web_test_helper_test.mojom.js.headers": [
"6805c323df5a975231648b830e33ce183c3cbbd3",
"support"
],
@@ -433420,7 +433487,7 @@
"support"
],
"resources/testharness.js": [
- "2e14c30730d2efaf8fab98328f0a07d270627802",
+ "b08074b96bd64acdec4b0aaead9cf957aa725e85",
"support"
],
"resources/testharness.js.headers": [
@@ -439067,6 +439134,30 @@
"94836f7c0331cb8a1caebacef02a75018b2b4ddb",
"testharness"
],
+ "svg/interact/scripted/composed.window.svg": [
+ "b63dcf024439446e0624f98cfa9f7ceb01544524",
+ "testharness"
+ ],
+ "svg/interact/scripted/focus-events.svg": [
+ "bf307b79fdf10c578d93332f57d4de2ab844eb34",
+ "testharness"
+ ],
+ "svg/interact/scripted/focus-tabindex-default-value.svg": [
+ "3af1acffd8de01618fb1dc9e8a753bcbb0357f1c",
+ "testharness"
+ ],
+ "svg/interact/scripted/resources/blank.htm": [
+ "18ecdcb795c33d6ab7bbb43f647947defca5634d",
+ "support"
+ ],
+ "svg/interact/scripted/tabindex-focus-flag-expected.txt": [
+ "5ca66db46326fb522bffc84842fe0fd6adae8e5e",
+ "support"
+ ],
+ "svg/interact/scripted/tabindex-focus-flag.svg": [
+ "29ba209b2badecaac695a678540cc53e5c4ed3f5",
+ "testharness"
+ ],
"svg/linking/reftests/href-a-element-attr-change.html": [
"c74b2e015613a09d1cecb5a0c3136d26f07e2a5b",
"reftest"
@@ -442871,6 +442962,10 @@
"2a0e82019549591b88878ca70fc6baf616d34c29",
"support"
],
+ "web-nfc/idlharness.https.window-expected.txt": [
+ "4e21915ce19da634ab0e7da170b00e8b98ca04a6",
+ "support"
+ ],
"web-nfc/idlharness.https.window.js": [
"0b3b099b7721eb3b7efb336d0f3f161bbcb23588",
"testharness"
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom-view/overscrollBehavior-manual.html b/third_party/blink/web_tests/external/wpt/css/css-overscroll-behavior/overscrollBehavior-manual.html
similarity index 98%
rename from third_party/blink/web_tests/external/wpt/css/cssom-view/overscrollBehavior-manual.html
rename to third_party/blink/web_tests/external/wpt/css/css-overscroll-behavior/overscrollBehavior-manual.html
index d66317f..97f52984 100644
--- a/third_party/blink/web_tests/external/wpt/css/cssom-view/overscrollBehavior-manual.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-overscroll-behavior/overscrollBehavior-manual.html
@@ -1,6 +1,7 @@
<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://drafts.csswg.org/css-overscroll-behavior">
<style>
.outer {
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
index d54773b..3dd4817 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/web-nfc.idl
@@ -30,9 +30,13 @@
typedef (DOMString or ArrayBuffer or NFCMessage) NFCMessageSource;
+[Constructor(), SecureContext, Exposed=Window]
+interface NFCWriter {
+ Promise<void> push(NFCMessageSource message, optional NFCPushOptions options);
+};
+
[SecureContext]
interface NFC {
- Promise<void> push(NFCMessageSource message, optional NFCPushOptions options);
Promise<void> watch(MessageCallback callback, optional NFCWatchOptions options);
};
diff --git a/third_party/blink/web_tests/external/wpt/media-source/mediasource-invalid-codec.html b/third_party/blink/web_tests/external/wpt/media-source/mediasource-invalid-codec.html
new file mode 100644
index 0000000..19aa00c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/media-source/mediasource-invalid-codec.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>SourceBuffer handling of invalid codecs in the initialization segment</title>
+ <link rel="author" title="Alicia Boya García" href="mailto:aboya@igalia.com">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="mediasource-util.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+ function testInvalidCodec(test, mediaElement, mediaSource, mediaType, url) {
+ assert_true(MediaSource.isTypeSupported(mediaType), `Media type not supported in this browser: isTypeSupported('${mediaType}')`);
+
+ MediaSourceUtil.loadBinaryData(test, url, (mediaData) => {
+ _testInvalidCodecWithData(test, mediaElement, mediaSource, mediaType, mediaData);
+ });
+ }
+
+ function _testInvalidCodecWithData(test, mediaElement, mediaSource, mediaType, mediaData) {
+ const sourceBuffer = mediaSource.addSourceBuffer(mediaType);
+ sourceBuffer.appendBuffer(mediaData);
+ test.expectEvent(sourceBuffer, 'error', 'Append ended with error');
+ test.waitForExpectedEvents(() => {
+ test.done();
+ })
+ }
+
+ // These test cases provide a typical media MIME type, but the actual files have been mangled to declare a different,
+ // unsupported, fictitious codec (MP4 fourcc: 'zzzz', WebM codec id 'V_ZZZ'). The browser should report a parsing
+ // error.
+
+ mediasource_test((test, mediaElement, mediaSource) => {
+ testInvalidCodec(test, mediaElement, mediaSource, 'video/mp4;codecs="avc1.4D4001"', 'mp4/invalid-codec.mp4');
+ }, 'Test an MP4 with an invalid codec results in an error.');
+
+ mediasource_test((test, mediaElement, mediaSource) => {
+ testInvalidCodec(test, mediaElement, mediaSource, 'video/webm; codecs="vp8"', 'webm/invalid-codec.webm');
+ }, 'Test a WebM with an invalid codec results in an error.');
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/media-source/mp4/invalid-codec.mp4 b/third_party/blink/web_tests/external/wpt/media-source/mp4/invalid-codec.mp4
new file mode 100644
index 0000000..6fcc7c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/media-source/mp4/invalid-codec.mp4
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/media-source/webm/invalid-codec.webm b/third_party/blink/web_tests/external/wpt/media-source/webm/invalid-codec.webm
new file mode 100644
index 0000000..f1c8bdd7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/media-source/webm/invalid-codec.webm
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/resources/testharness.js b/third_party/blink/web_tests/external/wpt/resources/testharness.js
index 2e14c30..b08074b9 100644
--- a/third_party/blink/web_tests/external/wpt/resources/testharness.js
+++ b/third_party/blink/web_tests/external/wpt/resources/testharness.js
@@ -1486,11 +1486,9 @@
this.index = null;
this.properties = properties;
- var timeout = properties.timeout ? properties.timeout : settings.test_timeout;
- if (timeout !== null) {
- this.timeout_length = timeout * tests.timeout_multiplier;
- } else {
- this.timeout_length = null;
+ this.timeout_length = settings.test_timeout;
+ if (this.timeout_length !== null) {
+ this.timeout_length *= tests.timeout_multiplier;
}
this.message = null;
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/composed.window.svg b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/composed.window.svg
new file mode 100644
index 0000000..b63dcf02
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/composed.window.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Focus events are composed</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#Focus"/>
+ </metadata>
+ <a id="a1" href="#"></a>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <script><![CDATA[
+ async_test(t => {
+ const anchor = document.getElementById("a1");
+ let happened = false;
+ anchor.onfocus = t.step_func(e => {
+ happened = true;
+ assert_equals(e.type, "focus");
+ assert_true(e.composed);
+ });
+ anchor.focus();
+ anchor.onblur = t.step_func_done(e => {
+ assert_true(happened);
+ assert_equals(e.type, "blur");
+ assert_true(e.composed);
+ });
+ anchor.blur();
+ }, "Focus events are composed");
+ ]]></script>
+</svg>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/focus-events.svg b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/focus-events.svg
new file mode 100644
index 0000000..bf307b79
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/focus-events.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Focus management</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#Focus"/>
+ </metadata>
+ <a id="a1" href="#"></a>
+ <a id="a2" href="#"></a>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <script><![CDATA[
+ var a1 = document.getElementById('a1'),
+ a2 = document.getElementById('a2'),
+ t1 = async_test("focusing on a focusable element fires a focus event at the element"),
+ t2 = async_test("focusing on a focusable element fires a blur event at the previous focussed element");
+
+ a2.onfocus = t1.step_func_done(function(e){
+ assert_true(e.isTrusted, "focus event is trusted");
+ assert_false(e.bubbles, "focus event doesn't bubble");
+ assert_false(e.cancelable, "focus event is not cancelable");
+ assert_equals(document.activeElement, a2);
+ });
+
+ a1.onblur = t2.step_func_done(function(e){
+ assert_true(e.isTrusted, "blur event is trusted");
+ assert_false(e.bubbles, "blur event doesn't bubble");
+ assert_false(e.cancelable, "blur event is not cancelable");
+ });
+
+ a1.focus();
+ a2.focus();
+ ]]></script>
+</svg>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/focus-tabindex-default-value.svg b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/focus-tabindex-default-value.svg
new file mode 100644
index 0000000..3af1acff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/focus-tabindex-default-value.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>SVG Test: focus - default value of tabindex</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#Focus"/>
+ </metadata>
+ <a id="test1" href="#"></a>
+ <rect id="test2"></rect>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <script><![CDATA[
+ test(function() {
+ assert_equals(document.getElementById("test1").tabIndex, 0, "The value of tabIndex attribute should be 0.");
+ }, "The default value of tabIndex attribute must be 0 for elements that are focusable");
+
+ test(function() {
+ assert_equals(document.getElementById("test2").tabIndex, -1, "The value of tabIndex attribute should be -1.");
+ }, "The default value of tabIndex attribute must be -1 for elements that are not focusable");
+ ]]></script>
+</svg>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/resources/blank.htm b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/resources/blank.htm
new file mode 100644
index 0000000..18ecdcb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/resources/blank.htm
@@ -0,0 +1 @@
+<html></html>
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/tabindex-focus-flag-expected.txt b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/tabindex-focus-flag-expected.txt
new file mode 100644
index 0000000..5ca66db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/tabindex-focus-flag-expected.txt
@@ -0,0 +1,46 @@
+This is a testharness.js-based test.
+FAIL The document root element should be focusable. assert_equals: expected Element node <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://w... but got null
+PASS rect should not be focusable.
+PASS svg should not be focusable.
+FAIL rect[focusable=true] should be focusable. assert_equals: expected Element node <rect focusable="true"></rect> but got null
+PASS a should not be focusable.
+PASS a[href] should be focusable.
+FAIL a[focusable=false] should not be focusable. assert_not_equals: got disallowed value Element node <a href="" focusable="false"></a>
+FAIL iframe should be focusable. assert_equals: expected Element node <iframe src="resources/blank.htm"></iframe> but got Element node <a href="" focusable="false"></a>
+FAIL audio[controls] should be focusable. assert_equals: expected Element node <audio controls="controls"></audio> but got Element node <a href="" focusable="false"></a>
+FAIL video[controls] should be focusable. assert_equals: expected Element node <video controls="controls"></video> but got Element node <a href="" focusable="false"></a>
+FAIL canvas[tabindex] should be focusable. assert_equals: expected Element node <canvas tabindex="0"></canvas> but got Element node <a href="" focusable="false"></a>
+PASS circle[tabindex] should be focusable.
+PASS ellipse[tabindex] should be focusable.
+PASS foreignObject[tabindex] should be focusable.
+PASS g[tabindex] should be focusable.
+PASS image[tabindex] should be focusable.
+PASS line[tabindex] should be focusable.
+FAIL mesh[tabindex] should be focusable. assert_equals: expected Element node <mesh tabindex="0"></mesh> but got Element node <line tabindex="0"></line>
+PASS path[tabindex] should be focusable.
+PASS polygon[tabindex] should be focusable.
+PASS rect[tabindex] should be focusable.
+PASS svg[tabindex] should be focusable.
+PASS switch[tabindex] should be focusable.
+PASS text[tabindex] should be focusable.
+PASS textPath[tabindex] should be focusable.
+PASS tspan[tabindex] should be focusable.
+FAIL unknown[tabindex] should be focusable. assert_equals: expected Element node <unknown tabindex="0"></unknown> but got Element node <tspan tabindex="0"></tspan>
+PASS use[tabindex] should be focusable.
+PASS clipPath[tabindex] should not be focusable.
+PASS defs[tabindex] should not be focusable.
+PASS desc[tabindex] should not be focusable.
+PASS hatch[tabindex] should not be focusable.
+PASS linearGradient[tabindex] should not be focusable.
+PASS marker[tabindex] should not be focusable.
+PASS mask[tabindex] should not be focusable.
+PASS meshgradient[tabindex] should not be focusable.
+PASS metadata[tabindex] should not be focusable.
+PASS pattern[tabindex] should not be focusable.
+PASS radialGradient[tabindex] should not be focusable.
+PASS script[tabindex] should not be focusable.
+PASS style[tabindex] should not be focusable.
+PASS title[tabindex] should not be focusable.
+PASS symbol[tabindex] should not be focusable.
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/tabindex-focus-flag.svg b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/tabindex-focus-flag.svg
new file mode 100644
index 0000000..29ba209b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/tabindex-focus-flag.svg
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:h="http://www.w3.org/1999/xhtml">
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/interact.html#Focus"/>
+ </metadata>
+ <g id="default-samples">
+ <!-- non-default focusable renderable element -->
+ <rect></rect>
+ <svg></svg>
+ <!-- for compatibility with SVG Tiny 1.2 focusable attribute, user agents should treat an element with a value of true for that attribute as focusable -->
+ <rect focusable="true"></rect>
+ <!-- anchors need a href to be focusable -->
+ <a></a>
+ <a href=""></a>
+ <!-- Remove default focus behaviour with focusable="false" (SVG Tiny 1.2 compatibility) -->
+ <a href="" focusable="false"></a>
+ <!-- iframe, and audio/video with controls are default focusable -->
+ <h:iframe src="resources/blank.htm"></h:iframe>
+ <h:audio controls="controls"></h:audio>
+ <h:video controls="controls"></h:video>
+ <!-- non-default focusable renderable element with valid tabindex -->
+ <h:canvas tabindex="0"></h:canvas>
+ <circle tabindex="0"></circle>
+ <ellipse tabindex="0"></ellipse>
+ <foreignObject tabindex="0"></foreignObject>
+ <g tabindex="0"></g>
+ <image tabindex="0"></image>
+ <line tabindex="0"></line>
+ <mesh tabindex="0"></mesh>
+ <path tabindex="0"></path>
+ <polygon tabindex="0"></polygon>
+ <rect tabindex="0"></rect>
+ <svg tabindex="0"></svg>
+ <switch tabindex="0"></switch>
+ <text tabindex="0">
+ <textPath tabindex="0"></textPath>
+ <tspan tabindex="0"></tspan>
+ </text>
+ <unknown tabindex="0"></unknown>
+ <use tabindex="0"></use>
+ <!-- never-rendered element with valid tabindex -->
+ <clipPath tabindex="0"></clipPath>
+ <defs tabindex="0"></defs>
+ <desc tabindex="0"></desc>
+ <hatch tabindex="0"></hatch>
+ <linearGradient tabindex="0"></linearGradient>
+ <marker tabindex="0"></marker>
+ <mask tabindex="0"></mask>
+ <meshgradient tabindex="0"></meshgradient>
+ <metadata tabindex="0"></metadata>
+ <pattern tabindex="0"></pattern>
+ <radialGradient tabindex="0"></radialGradient>
+ <script tabindex="0"></script>
+ <style tabindex="0"></style>
+ <title tabindex="0"></title>
+ <symbol tabindex="0"></symbol>
+ </g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <script><![CDATA[
+ var root = document.querySelector("svg");
+
+ test(() => {
+ root.focus();
+ assert_equals(document.activeElement, root);
+ }, 'The document root element should be focusable.');
+
+ const defaultList = [
+ ['rect', false],
+ ['svg', false],
+ ['rect[focusable=true]', true],
+ ['a', false],
+ ['a[href]', true],
+ ['a[focusable=false]', false],
+ ['iframe', true],
+ ['audio[controls]', true],
+ ['video[controls]', true],
+ ['canvas[tabindex]', true],
+ ['circle[tabindex]', true],
+ ['ellipse[tabindex]', true],
+ ['foreignObject[tabindex]', true],
+ ['g[tabindex]', true],
+ ['image[tabindex]', true],
+ ['line[tabindex]', true],
+ ['mesh[tabindex]', true],
+ ['path[tabindex]', true],
+ ['polygon[tabindex]', true],
+ ['rect[tabindex]', true],
+ ['svg[tabindex]', true],
+ ['switch[tabindex]', true],
+ ['text[tabindex]', true],
+ ['textPath[tabindex]', true],
+ ['tspan[tabindex]', true],
+ ['unknown[tabindex]', true],
+ ['use[tabindex]', true],
+ ['clipPath[tabindex]', false],
+ ['defs[tabindex]', false],
+ ['desc[tabindex]', false],
+ ['hatch[tabindex]', false],
+ ['linearGradient[tabindex]', false],
+ ['marker[tabindex]', false],
+ ['mask[tabindex]', false],
+ ['meshgradient[tabindex]', false],
+ ['metadata[tabindex]', false],
+ ['pattern[tabindex]', false],
+ ['radialGradient[tabindex]', false],
+ ['script[tabindex]', false],
+ ['style[tabindex]', false],
+ ['title[tabindex]', false],
+ ['symbol[tabindex]', false],
+ ];
+
+ for (entry of defaultList) {
+ test(() => {
+ var element = document.querySelector('#default-samples ' + entry[0]);
+ element.focus();
+ if (entry[1])
+ assert_equals(document.activeElement, element);
+ else
+ assert_not_equals(document.activeElement, element);
+ }, entry[0] + ' should ' + (entry[1] ? '' : 'not ') + 'be focusable.');
+ }
+ ]]></script>
+</svg>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt
new file mode 100644
index 0000000..4e21915c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-nfc/idlharness.https.window-expected.txt
@@ -0,0 +1,25 @@
+This is a testharness.js-based test.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+FAIL NFCWriter interface: existence and properties of interface object assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+FAIL NFCWriter interface object length assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+FAIL NFCWriter interface object name assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+FAIL NFCWriter interface: existence and properties of interface prototype object assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+FAIL NFCWriter interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+FAIL NFCWriter interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+FAIL NFCWriter interface: operation push(NFCMessageSource, NFCPushOptions) assert_own_property: self does not have own property "NFCWriter" expected property "NFCWriter" missing
+PASS NFC interface: existence and properties of interface object
+PASS NFC interface object length
+PASS NFC interface object name
+PASS NFC interface: existence and properties of interface prototype object
+PASS NFC interface: existence and properties of interface prototype object's "constructor" property
+PASS NFC interface: existence and properties of interface prototype object's @@unscopables property
+PASS NFC interface: operation watch(MessageCallback, NFCWatchOptions)
+PASS NFC must be primary interface of navigator.nfc
+PASS Stringification of navigator.nfc
+PASS NFC interface: navigator.nfc must inherit property "watch(MessageCallback, NFCWatchOptions)" with the proper type
+PASS NFC interface: calling watch(MessageCallback, NFCWatchOptions) on navigator.nfc with too few arguments must throw TypeError
+PASS Navigator interface: attribute nfc
+PASS Navigator interface: navigator must inherit property "nfc" with the proper type
+Harness: the test ran to completion.
+