CSS Text Test: Removing collapsible space before a float element cause Chrome to crash
-
-Test passes if there is a visible character below.
+
Test passes if blue charaters are arranged exactly in the same way as the orange ones.
-
+A
B
C
D
E
F
G
H
+
+A B C D E F G H
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/control-chars-00D-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/control-chars-00D-ref.html
new file mode 100644
index 00000000000..ae214b7485d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/control-chars-00D-ref.html
@@ -0,0 +1,26 @@
+
+
+Reference file
+
+
+
+Test passes if blue charaters are arranged exactly in the same way as the orange ones.
+
+
A B C D E F G H
+
+A B C D E F G H
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-062-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-062-ref.html
new file mode 100644
index 00000000000..c44f82d7b37
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-062-ref.html
@@ -0,0 +1,29 @@
+
+
+
+
+ CSS Reference Test
+
+
+
+
+
+ Test passes if the glyphs in the 5 orange rectangles are laid out identically.
+
+
A simple senten
ce in english.
+
+ A simple senten
ce in english.
+
+ A simple senten
ce in english.
+
+ A simple senten
ce in english.
+
+ A simple senten
ce in english.
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-063-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-063-ref.html
new file mode 100644
index 00000000000..5ab3f5ff0f2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-063-ref.html
@@ -0,0 +1,29 @@
+
+
+
+
+ CSS Reference Test
+
+
+
+
+
+ Test passes if the glyphs in the 5 orange rectangles are laid out identically.
+
+
A simple
sentence in eng
lish.
+
+ A simple
sentence in eng
lish.
+
+ A simple
sentence in eng
lish.
+
+ A simple
sentence in eng
lish.
+
+ A simple
sentence in eng
lish.
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-062.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-062.html
new file mode 100644
index 00000000000..6d2f25abc82
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-062.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ CSS Text: 'word-break: break-all' applied to an inline in latin
+
+
+
+
+
+
+
+ Test passes if the glyphs in the 5 orange rectangles are laid out identically.
+
+
A simple sentence in english.
+
+
+ A simple sentence in english.
+
+
+ A simple sentence in english.
+
+
+ A simple sentence in english.
+
+
+ A simple senten
ce in english.
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-063.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-063.html
new file mode 100644
index 00000000000..3fa827b4870
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-063.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ CSS Text: 'word-break: keep-all' applied to an inline in latin
+
+
+
+
+
+
+
+ Test passes if the glyphs in the 5 orange rectangles are laid out identically.
+
+
A simple sentence in english.
+
+ A simple sentence in english.
+
+ A simple sentence in english.
+
+ A simple sentence in english.
+
+ A simple
sentence in eng
lish.
+
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html
index 481b9294377..8d65a902a2d 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html
@@ -63,7 +63,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 5. Check a report sent to the opener.
let report =
await receiveReport(opener_report_token, "access-from-coop-page-to-openee")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, opener_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html
index a78c75eaae6..d7d074e5c56 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html
@@ -64,7 +64,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 5. Check a report sent to the opener.
let report =
await receiveReport(opener_report_token, "access-from-coop-page-to-openee")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, opener_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html
index 9cc92dcd961..3cdd592b626 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html
@@ -40,7 +40,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 2. Check a report is sent to the openee.
let report =
await receiveReport(report_token, "access-from-coop-page-to-opener")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html
index 39a58331259..3319069dde1 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html
@@ -41,7 +41,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 2. Check a report is sent to the openee.
let report =
await receiveReport(report_token, "access-from-coop-page-to-opener")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html
index e5cc726c5e0..42a4f926de3 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html
@@ -75,7 +75,6 @@ promise_test(async t => {
// 6. Check a report is sent to the openee.
let report =
await receiveReport(report_token, "access-from-coop-page-to-other")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, opener_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html
index 4505c4c8282..93e9247251c 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html
@@ -76,7 +76,6 @@ promise_test(async t => {
// 6. Check a report is sent to the openee.
let report =
await receiveReport(report_token, "access-from-coop-page-to-other")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, opener_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html
index 0c63c067798..0016534f76c 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html
@@ -57,7 +57,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 4. Check a report sent to the opener.
let report =
await receiveReport(opener_report_token, "access-to-coop-page-from-openee")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, opener_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html
index a5859228077..29712ab9f2c 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html
@@ -58,7 +58,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 4. Check a report sent to the opener.
let report =
await receiveReport(opener_report_token, "access-to-coop-page-from-openee")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, opener_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html
index 79f20b149f0..f296155ebc3 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html
@@ -47,7 +47,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 3. Check a report is sent to the openee.
let report =
await receiveReport(report_token, "access-to-coop-page-from-opener")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html
index ea3fa0b21bf..885f0ccabf6 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html
@@ -48,7 +48,6 @@ let runTest = (openee_redirect, name) => promise_test(async t => {
// 3. Check a report is sent to the openee.
let report =
await receiveReport(report_token, "access-to-coop-page-from-opener")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html
index c349b9a708e..47bc9cd6063 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html
@@ -63,7 +63,6 @@ promise_test(async t => {
// 4. Check a report sent to the openee.
let report =
await receiveReport(openee_report_token, "access-to-coop-page-from-other")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html
index 4cc49fc62a7..4d419f0bee5 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html
@@ -64,7 +64,6 @@ promise_test(async t => {
// 4. Check a report sent to the openee.
let report =
await receiveReport(openee_report_token, "access-to-coop-page-from-other")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.url, openee_url.replace(/"/g, '%22'));
assert_equals(report.body.disposition, "reporting");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html
index d6c563be4f3..73e40314693 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/property.https.html
@@ -58,7 +58,6 @@ origin.forEach(([origin_name, origin]) => {
// 3. Check a reports is sent to the opener.
let report = await receiveReport(report_token, "access-to-coop-page")
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.body.property, property);
}, `${origin_name} > ${op}`);
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html
index 1979d13c109..5c2dd1b3d9b 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html
@@ -83,9 +83,6 @@ promise_test(async test => {
let report_openee =
await receiveReport(openee_report_token, "access-to-coop-page-from-opener")
- assert_not_equals(report_openee, "timeout", "Report openee not received");
- assert_not_equals(report_opener, "timeout", "Report opener not received");
-
assert_generic_coop_report(report_openee);
assert_generic_coop_report(report_opener);
@@ -109,9 +106,6 @@ promise_test(async test => {
let report_openee =
await receiveReport(openee_report_token, "access-from-coop-page-to-opener")
- assert_not_equals(report_openee, "timeout", "Report openee not received");
- assert_not_equals(report_opener, "timeout", "Report opener not received");
-
assert_generic_coop_report(report_openee);
assert_generic_coop_report(report_opener);
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html
index 5b67575a0ea..435f6471b75 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html
@@ -186,7 +186,6 @@ promise_test(async t => {
send(opener_iframe_token, `tryAccess(openee);`);
let reports = await receive(this_window_token);
- assert_not_equals(reports, "timeout", "No report received.");
reports = JSON.parse(reports);
assert_equals(reports.length, 1, "No report received.");
assert_equals(reports[0].type, "coop-access-violation");
@@ -248,7 +247,7 @@ promise_test(async t => {
// from the main document aren't notified.
send(opener_iframe_token, `tryAccess(openee);`);
- let reports = await receive(this_window_token);
+ let reports = await receive(this_window_token, 2000);
assert_equals(reports, "timeout", "Unexpected report received.");
}, "Access from cross-site iframe")
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html
index 3b513371b02..616270d468b 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-redirect-with-same-origin-allow-popups.https.html
@@ -101,7 +101,6 @@ function redirect_test( popup_origin ) {
let report = await receiveReport(
opener_report_token,
"navigation-to-response");
- assert_not_equals(report, "timeout", "Report not received");
assert_equals(report.type, "coop");
assert_equals(report.body.disposition, "enforce");
assert_equals(report.body.effectivePolicy, "same-origin-allow-popups");
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.js b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.js
index 23c5ee97b71..ade25ee1532 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.js
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/resources/dispatcher.js
@@ -17,8 +17,8 @@ const send = function(uuid, message) {
});
}
-const receive = async function(uuid) {
- const timeout = 2500;
+const receive = async function(uuid, maybe_timeout) {
+ const timeout = maybe_timeout || Infinity;
const retry_delay = 100;
for(let i = 0; i * retry_delay < timeout; ++i) {
let response = await fetch(dispatcher_url + `?uuid=${uuid}`);
diff --git a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html
index 50d5cb96e84..a67bc76364d 100644
--- a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html
+++ b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html
@@ -2,177 +2,25 @@
InputEvent.getTargetRanges() at Backspace
+
+
-
-
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges.js b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges.js
new file mode 100644
index 00000000000..4d09c4da521
--- /dev/null
+++ b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges.js
@@ -0,0 +1,223 @@
+"use strict";
+
+const kBackspaceKey = "\uE003";
+const kDeleteKey = "\uE017";
+const kArrowRight = "\uE014";
+const kArrowLeft = "\uE012";
+const kShift = "\uE008";
+const kMeta = "\uE03d";
+const kControl = "\uE009";
+const kAlt = "\uE00A";
+const kKeyA = "a";
+
+const kImgSrc =
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAEElEQVR42mNgaGD4D8YwBgAw9AX9Y9zBwwAAAABJRU5ErkJggg==";
+
+let gSelection = getSelection();
+let gEditor = document.querySelector("div[contenteditable]");
+let gBeforeinput = [];
+let gInput = [];
+gEditor.addEventListener("beforeinput", e => {
+ // NOTE: Blink makes `getTargetRanges()` return empty range after propagation,
+ // but this test wants to check the result during propagation.
+ // Therefore, we need to cache the result, but will assert if
+ // `getTargetRanges()` returns different ranges after checking the
+ // cached ranges.
+ e.cachedRanges = e.getTargetRanges();
+ gBeforeinput.push(e);
+});
+gEditor.addEventListener("input", e => {
+ e.cachedRanges = e.getTargetRanges();
+ gInput.push(e);
+});
+
+function initializeTest(aInnerHTML) {
+ gEditor.innerHTML = aInnerHTML;
+ gEditor.focus();
+ gBeforeinput = [];
+ gInput = [];
+}
+
+function getRangeDescription(range) {
+ function getNodeDescription(node) {
+ if (!node) {
+ return "null";
+ }
+ switch (node.nodeType) {
+ case Node.TEXT_NODE:
+ case Node.COMMENT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ return `${node.nodeName} "${node.data}"`;
+ case Node.ELEMENT_NODE:
+ return `<${node.nodeName.toLowerCase()}>`;
+ default:
+ return `${node.nodeName}`;
+ }
+ }
+ if (range === null) {
+ return "null";
+ }
+ if (range === undefined) {
+ return "undefined";
+ }
+ return range.startContainer == range.endContainer &&
+ range.startOffset == range.endOffset
+ ? `(${getNodeDescription(range.startContainer)}, ${range.startOffset})`
+ : `(${getNodeDescription(range.startContainer)}, ${
+ range.startOffset
+ }) - (${getNodeDescription(range.endContainer)}, ${range.endOffset})`;
+}
+
+function getArrayOfRangesDescription(arrayOfRanges) {
+ if (arrayOfRanges === null) {
+ return "null";
+ }
+ if (arrayOfRanges === undefined) {
+ return "undefined";
+ }
+ if (!Array.isArray(arrayOfRanges)) {
+ return "Unknown Object";
+ }
+ if (arrayOfRanges.length === 0) {
+ return "[]";
+ }
+ let result = "[";
+ for (let range of arrayOfRanges) {
+ result += `{${getRangeDescription(range)}},`;
+ }
+ result += "]";
+ return result;
+}
+
+function sendDeleteKey(modifier) {
+ if (!modifier) {
+ return new test_driver.Actions()
+ .keyDown(kDeleteKey)
+ .keyUp(kDeleteKey)
+ .send();
+ }
+ return new test_driver.Actions()
+ .keyDown(modifier)
+ .keyDown(kDeleteKey)
+ .keyUp(kDeleteKey)
+ .keyUp(modifier)
+ .send();
+}
+
+function sendBackspaceKey(modifier) {
+ if (!modifier) {
+ return new test_driver.Actions()
+ .keyDown(kBackspaceKey)
+ .keyUp(kBackspaceKey)
+ .send();
+ }
+ return new test_driver.Actions()
+ .keyDown(modifier)
+ .keyDown(kBackspaceKey)
+ .keyUp(kBackspaceKey)
+ .keyUp(modifier)
+ .send();
+}
+
+function sendKeyA() {
+ return new test_driver.Actions()
+ .keyDown(kKeyA)
+ .keyUp(kKeyA)
+ .send();
+}
+
+function sendArrowLeftKey() {
+ return new test_driver.Actions()
+ .keyDown(kArrowLeft)
+ .keyUp(kArrowLeft)
+ .send();
+}
+
+function sendArrowRightKey() {
+ return new test_driver.Actions()
+ .keyDown(kArrowRight)
+ .keyUp(kArrowRight)
+ .send();
+}
+
+function checkGetTargetRangesKeepReturningSameValue(event) {
+ // https://github.com/w3c/input-events/issues/114
+ assert_equals(
+ getArrayOfRangesDescription(event.getTargetRanges()),
+ getArrayOfRangesDescription(event.cachedRanges),
+ `${event.type}.getTargetRanges() should keep returning the same array of ranges even after its propagation finished`
+ );
+}
+
+function checkGetTargetRangesOfBeforeinputOnDeleteSomething(expectedRange) {
+ assert_equals(
+ gBeforeinput.length,
+ 1,
+ "One beforeinput event should be fired if the key operation deletes something"
+ );
+ assert_true(
+ Array.isArray(gBeforeinput[0].cachedRanges),
+ "gBeforeinput[0].getTargetRanges() should return an array of StaticRange instances during propagation"
+ );
+ // Before checking the length of array of ranges, we should check the first
+ // range first because the first range data is more important than whether
+ // there are additional unexpected ranges.
+ if (gBeforeinput[0].cachedRanges.length > 0) {
+ assert_equals(
+ getRangeDescription(gBeforeinput[0].cachedRanges[0]),
+ getRangeDescription(expectedRange),
+ `gBeforeinput[0].getTargetRanges() should return expected range (inputType is "${gBeforeinput[0].inputType}")`
+ );
+ assert_equals(
+ gBeforeinput[0].cachedRanges.length,
+ 1,
+ "gBeforeinput[0].getTargetRanges() should return one range within an array"
+ );
+ }
+ assert_equals(
+ gBeforeinput[0].cachedRanges.length,
+ 1,
+ "One range should be returned from getTargetRanges() when the key operation deletes something"
+ );
+ checkGetTargetRangesKeepReturningSameValue(gBeforeinput[0]);
+}
+
+function checkGetTargetRangesOfInputOnDeleteSomething() {
+ assert_equals(
+ gInput.length,
+ 1,
+ "One input event should be fired if the key operation deletes something"
+ );
+ // https://github.com/w3c/input-events/issues/113
+ assert_true(
+ Array.isArray(gInput[0].cachedRanges),
+ "gInput[0].getTargetRanges() should return an array of StaticRange instances during propagation"
+ );
+ assert_equals(
+ gInput[0].cachedRanges.length,
+ 0,
+ "gInput[0].getTargetRanges() should return empty array during propagation"
+ );
+ checkGetTargetRangesKeepReturningSameValue(gInput[0]);
+}
+
+function checkGetTargetRangesOfInputOnDoNothing() {
+ assert_equals(
+ gInput.length,
+ 0,
+ "input event shouldn't be fired when the key operation does not cause modifying the DOM tree"
+ );
+}
+
+function checkBeforeinputAndInputEventsOnNOOP() {
+ assert_equals(
+ gBeforeinput.length,
+ 0,
+ "beforeinput event shouldn't be fired when the key operation does not cause modifying the DOM tree"
+ );
+ assert_equals(
+ gInput.length,
+ 0,
+ "input event shouldn't be fired when the key operation does not cause modifying the DOM tree"
+ );
+}
diff --git a/tests/wpt/web-platform-tests/interfaces/deprecation-reporting.idl b/tests/wpt/web-platform-tests/interfaces/deprecation-reporting.idl
index 72622becb2c..4cf76ba8114 100644
--- a/tests/wpt/web-platform-tests/interfaces/deprecation-reporting.idl
+++ b/tests/wpt/web-platform-tests/interfaces/deprecation-reporting.idl
@@ -7,7 +7,7 @@
interface DeprecationReportBody : ReportBody {
[Default] object toJSON();
readonly attribute DOMString id;
- readonly attribute Date? anticipatedRemoval;
+ readonly attribute object? anticipatedRemoval;
readonly attribute DOMString message;
readonly attribute DOMString? sourceFile;
readonly attribute unsigned long? lineNumber;
diff --git a/tests/wpt/web-platform-tests/interfaces/text-detection-api.tentative.idl b/tests/wpt/web-platform-tests/interfaces/text-detection-api.idl
similarity index 66%
rename from tests/wpt/web-platform-tests/interfaces/text-detection-api.tentative.idl
rename to tests/wpt/web-platform-tests/interfaces/text-detection-api.idl
index 8835c5fee91..95b642749f7 100644
--- a/tests/wpt/web-platform-tests/interfaces/text-detection-api.tentative.idl
+++ b/tests/wpt/web-platform-tests/interfaces/text-detection-api.idl
@@ -1,13 +1,13 @@
-// Content was manually copied April 1 2020
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
// Source: Accelerated Text Detection in Images (https://wicg.github.io/shape-detection-api/text.html)
-// This is currently a sister informative spec of Shape Detection API,
-// so it could not be merged into /interfaces/shape-detection-api.idl
[
- Constructor,
Exposed=(Window,Worker),
SecureContext
] interface TextDetector {
+ constructor();
Promise> detect(ImageBitmapSource image);
};
@@ -15,4 +15,4 @@ dictionary DetectedText {
required DOMRectReadOnly boundingBox;
required DOMString rawValue;
required FrozenArray cornerPoints;
-};
\ No newline at end of file
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-insertable-streams.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-insertable-streams.idl
new file mode 100644
index 00000000000..9216987f279
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc-insertable-streams.idl
@@ -0,0 +1,65 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: WebRTC Insertable Media using Streams (https://w3c.github.io/webrtc-insertable-streams/)
+
+// New dictionary.
+dictionary RTCInsertableStreams {
+ ReadableStream readable;
+ WritableStream writable;
+};
+
+// New enum for video frame types. Will eventually re-use the equivalent defined
+// by WebCodecs.
+enum RTCEncodedVideoFrameType {
+ "empty",
+ "key",
+ "delta",
+};
+
+dictionary RTCEncodedVideoFrameMetadata {
+ long long frameId;
+ sequence dependencies;
+ unsigned short width;
+ unsigned short height;
+ long spatialIndex;
+ long temporalIndex;
+ long synchronizationSource;
+ sequence contributingSources;
+};
+
+// New interfaces to define encoded video and audio frames. Will eventually
+// re-use or extend the equivalent defined in WebCodecs.
+[Exposed=Window]
+interface RTCEncodedVideoFrame {
+ readonly attribute RTCEncodedVideoFrameType type;
+ readonly attribute unsigned long long timestamp;
+ attribute ArrayBuffer data;
+ RTCEncodedVideoFrameMetadata getMetadata();
+};
+
+dictionary RTCEncodedAudioFrameMetadata {
+ long synchronizationSource;
+ sequence contributingSources;
+};
+
+[Exposed=Window]
+interface RTCEncodedAudioFrame {
+ readonly attribute unsigned long long timestamp;
+ attribute ArrayBuffer data;
+ RTCEncodedAudioFrameMetadata getMetadata();
+};
+
+// New fields in RTCConfiguration
+partial dictionary RTCConfiguration {
+ boolean encodedInsertableStreams = false;
+};
+
+// New methods for RTCRtpSender and RTCRtpReceiver
+partial interface RTCRtpSender {
+ RTCInsertableStreams createEncodedStreams();
+};
+
+partial interface RTCRtpReceiver {
+ RTCInsertableStreams createEncodedStreams();
+};
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptminsize-attribute-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptminsize-attribute-ref.html
new file mode 100644
index 00000000000..8e3d7b1c219
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptminsize-attribute-ref.html
@@ -0,0 +1,27 @@
+
+
+
+
+legacy scriptminsize attribute (reference)
+
+
+
+
+ Test passes if you see a square of size 71px.
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptminsize-attribute.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptminsize-attribute.html
new file mode 100644
index 00000000000..ef861c8e79b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptminsize-attribute.html
@@ -0,0 +1,32 @@
+
+
+
+
+legacy scriptminsize attribute
+
+
+
+
+
+
+
+
+
+ Test passes if you see a square of size 71px.
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptsizemultiplier-attribute-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptsizemultiplier-attribute-ref.html
new file mode 100644
index 00000000000..422325da281
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptsizemultiplier-attribute-ref.html
@@ -0,0 +1,27 @@
+
+
+
+
+legacy scriptsizemultiplier attribute (reference)
+
+
+
+
+ Test passes if you see a square of size 71px.
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptsizemultiplier-attribute.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptsizemultiplier-attribute.html
new file mode 100644
index 00000000000..66e0da17693
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/legacy-scriptsizemultiplier-attribute.html
@@ -0,0 +1,32 @@
+
+
+
+
+legacy scriptsizemultiplier attribute
+
+
+
+
+
+
+
+
+
+ Test passes if you see a square of size 71px.
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/mediacapture-image/getusermedia.https.html b/tests/wpt/web-platform-tests/mediacapture-image/getusermedia.https.html
new file mode 100644
index 00000000000..033501cf64e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mediacapture-image/getusermedia.https.html
@@ -0,0 +1,26 @@
+
+
+getUserMedia
+
+
+
diff --git a/tests/wpt/web-platform-tests/selection/modify.tentative.html b/tests/wpt/web-platform-tests/selection/modify.tentative.html
new file mode 100644
index 00000000000..c4436fcafeb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/selection/modify.tentative.html
@@ -0,0 +1,21 @@
+
+
+Selection.modify() tests
+
+
+
+Test, these are strong italic normal.
+
+
diff --git a/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js b/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js
index c3683f8ceba..33b5f88f75b 100644
--- a/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js
+++ b/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js
@@ -7,7 +7,7 @@
'use strict';
idl_test(
- ['shape-detection-api', 'text-detection-api.tentative'],
+ ['shape-detection-api', 'text-detection-api'],
['dom', 'geometry'],
async idl_array => {
idl_array.add_objects({
diff --git a/tests/wpt/web-platform-tests/webrtc-insertable-streams/idlharness.https.window.js b/tests/wpt/web-platform-tests/webrtc-insertable-streams/idlharness.https.window.js
new file mode 100644
index 00000000000..86feb527724
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc-insertable-streams/idlharness.https.window.js
@@ -0,0 +1,18 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+// META: script=./RTCPeerConnection-helper.js
+
+'use strict';
+
+idl_test(
+ ['webrtc-insertable-streams'],
+ ['webrtc'],
+ async idlArray => {
+ idlArray.add_objects({
+ // TODO: RTCEncodedVideoFrame
+ // TODO: RTCEncodedAudioFrame
+ RTCRtpSender: [`new RTCPeerConnection().addTransceiver('audio').sender`],
+ RTCRtpReceiver: [`new RTCPeerConnection().addTransceiver('audio').receiver`],
+ });
+ }
+);