diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 64fdd0967f4..0e8b8471613 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -318167,6 +318167,24 @@
{}
]
],
+ "css/cssom/computed-style-002.html": [
+ [
+ "/css/cssom/computed-style-002.html",
+ {}
+ ]
+ ],
+ "css/cssom/computed-style-003.html": [
+ [
+ "/css/cssom/computed-style-003.html",
+ {}
+ ]
+ ],
+ "css/cssom/computed-style-004.html": [
+ [
+ "/css/cssom/computed-style-004.html",
+ {}
+ ]
+ ],
"css/cssom/css-style-attr-decl-block.html": [
[
"/css/cssom/css-style-attr-decl-block.html",
@@ -390463,7 +390481,7 @@
"support"
],
"./README.md": [
- "60e060b31a4f9f43f09c1b2a360902e4817014e1",
+ "23780fdf7eea63c82965c8d5d4d847c0b9752c7e",
"support"
],
"./check_stability.ini": [
@@ -531798,6 +531816,18 @@
"0331a648e6b0d56f0e7365f1ff7d991ea77ce3e4",
"testharness"
],
+ "css/cssom/computed-style-002.html": [
+ "d6579788bcfaf1d4c09324ba877a26ff95d6965d",
+ "testharness"
+ ],
+ "css/cssom/computed-style-003.html": [
+ "aece414b89e0fdea1030e4ca9011ab7d22f1b275",
+ "testharness"
+ ],
+ "css/cssom/computed-style-004.html": [
+ "55010cf90dc7fc2ef8ec6cbd13d1ec947a823aed",
+ "testharness"
+ ],
"css/cssom/css-style-attr-decl-block.html": [
"1d68a3fd1560308c0d2f3478864d84f4361e4ab9",
"testharness"
@@ -544291,7 +544321,7 @@
"support"
],
"docs/introduction.md": [
- "e7d0165e5c6a8604d25f32032b2374bff6e59e02",
+ "8b5def1fe676bd3c47a54933d08f8e43b634a31d",
"support"
],
"dom/OWNERS": [
@@ -570831,7 +570861,7 @@
"support"
],
"interfaces/IndexedDB.idl": [
- "f367517cad717e2066ad8179df9ba5aa3b402c97",
+ "3df484f3207920891c278bd99ec22e4029aa039f",
"support"
],
"interfaces/OWNERS": [
@@ -570839,7 +570869,7 @@
"support"
],
"interfaces/WebCryptoAPI.idl": [
- "87b02fc82a1b204ac59a51932e58f9369b4a77c6",
+ "1fa169a6badb1c21608f1e1a68075939e913603f",
"support"
],
"interfaces/accelerometer.idl": [
@@ -572407,7 +572437,7 @@
"testharness"
],
"mediacapture-streams/MediaDevices-enumerateDevices.https.html": [
- "98de0987027ceccd4e6164ea6afbc08d5d70c35d",
+ "1fb376d675c685d5de76fef0e840e440de3e3268",
"testharness"
],
"mediacapture-streams/MediaDevices-getUserMedia.https.html": [
@@ -601075,7 +601105,7 @@
"testharness"
],
"webmessaging/event.origin.sub.htm": [
- "ef14b99d3eac8c17623f3ba531605fa2abda99d7",
+ "591a0bcef635d7158fe9c04fabfeea030dce9c62",
"testharness"
],
"webmessaging/event.ports.sub.htm": [
@@ -601151,7 +601181,7 @@
"testharness"
],
"webmessaging/postMessage_asterisk_xorigin.sub.htm": [
- "d322154c452e58241091b2e5fc995d0322dfc4dd",
+ "0d77e50f5ccdec34f98694ddcc266a1834250266",
"testharness"
],
"webmessaging/postMessage_dup_transfer_objects.htm": [
diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
new file mode 100644
index 00000000000..26435e28b09
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
@@ -0,0 +1,2 @@
+[vh_not_refreshing_on_chrome.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom/computed-style-002.html.ini b/tests/wpt/metadata/css/cssom/computed-style-002.html.ini
new file mode 100644
index 00000000000..4c77eab4ebb
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/computed-style-002.html.ini
@@ -0,0 +1,4 @@
+[computed-style-002.html]
+ [Check that a percent width in an iframe is resolved against iframe width for getComputedStyle.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/computed-style-003.html.ini b/tests/wpt/metadata/css/cssom/computed-style-003.html.ini
new file mode 100644
index 00000000000..380a8e3071c
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/computed-style-003.html.ini
@@ -0,0 +1,4 @@
+[computed-style-003.html]
+ [CSS Test: getComputedStyle - resolved width in iframe dynamic display]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/computed-style-004.html.ini b/tests/wpt/metadata/css/cssom/computed-style-004.html.ini
new file mode 100644
index 00000000000..9c24cfd9cc9
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/computed-style-004.html.ini
@@ -0,0 +1,4 @@
+[computed-style-004.html]
+ [CSS Test: getComputedStyle - resolved width in nested iframes dynamic width]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini b/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini
new file mode 100644
index 00000000000..65c78fd3a4a
--- /dev/null
+++ b/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini
@@ -0,0 +1,2 @@
+[hide_after_load.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md
index cc846b5d23e..fe02609bbf0 100644
--- a/tests/wpt/web-platform-tests/README.md
+++ b/tests/wpt/web-platform-tests/README.md
@@ -69,22 +69,31 @@ python wpt serve
```
This will start HTTP servers on two ports and a websockets server on
-one port. By default one web server starts on port 8000 and the other
+one port. By default the web servers start on ports 8000 and 8443 and the other
ports are randomly-chosen free ports. Tests must be loaded from the
*first* HTTP server in the output. To change the ports, copy the
`config.default.json` file to `config.json` and edit the new file,
replacing the part that reads:
```
-"http": [8000, "auto"]
+"http": [8000, "auto"],
+"https":[8443]
```
-to some port of your choice e.g.
+to some ports of your choice e.g.
```
-"http": [1234, "auto"]
+"http": [1234, "auto"],
+"https":[5678]
```
+After your `hosts` file is configured, the servers will be locally accessible at:
+
+http://web-platform.test:8000/
+https://web-platform.test:8443/ *
+
+\**See [Trusting Root CA](#trusting-root-ca)*
+
Running Tests Automatically
---------------------------
@@ -222,7 +231,7 @@ Certificates
============
By default pregenerated certificates for the web-platform.test domain
-are provided in the repository. If you wish to generate new
+are provided in [`tools/certs`](tools/certs). If you wish to generate new
certificates for any reason it's possible to use OpenSSL when starting
the server, or starting a test run, by providing the
`--ssl-type=openssl` argument to the `wpt serve` or `wpt run`
@@ -259,6 +268,11 @@ Then edit the JSON so that the key `ssl/openssl/base_conf_path` has a
value that is the path to the OpenSSL config file (typically this
will be `C:\\OpenSSL-Win32\\bin\\openssl.cfg`).
+### Trusting Root CA
+
+To prevent browser SSL warnings when running HTTPS tests locally, the
+web-platform-tests Root CA file `rootca.pem` in [tools/certs](tools/certs)
+must be added as a trusted certificate in your OS/browser.
Publication
===========
diff --git a/tests/wpt/web-platform-tests/css/cssom/computed-style-002.html b/tests/wpt/web-platform-tests/css/cssom/computed-style-002.html
new file mode 100644
index 00000000000..7b31c96c098
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/computed-style-002.html
@@ -0,0 +1,17 @@
+
+
CSS Test: getComputedStyle - resolved width in iframe
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/cssom/computed-style-003.html b/tests/wpt/web-platform-tests/css/cssom/computed-style-003.html
new file mode 100644
index 00000000000..e73b793b8f3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/computed-style-003.html
@@ -0,0 +1,20 @@
+
+CSS Test: getComputedStyle - resolved width in iframe dynamic display
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/cssom/computed-style-004.html b/tests/wpt/web-platform-tests/css/cssom/computed-style-004.html
new file mode 100644
index 00000000000..c5b08712f96
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/computed-style-004.html
@@ -0,0 +1,29 @@
+
+CSS Test: getComputedStyle - resolved width in nested iframes dynamic width
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/docs/introduction.md b/tests/wpt/web-platform-tests/docs/introduction.md
index 8833d869470..d45d6223003 100644
--- a/tests/wpt/web-platform-tests/docs/introduction.md
+++ b/tests/wpt/web-platform-tests/docs/introduction.md
@@ -128,22 +128,31 @@ The test environment can then be started using
./wpt serve
This will start HTTP servers on two ports and a websockets server on
-one port. By default one web server starts on port 8000 and the other
+one port. By default the web servers start on ports 8000 and 8443 and the other
ports are randomly-chosen free ports. Tests must be loaded from the
*first* HTTP server in the output. To change the ports, copy the
`config.default.json` file to `config.json` and edit the new file,
replacing the part that reads:
```
-"http": [8000, "auto"]
+"http": [8000, "auto"],
+"https":[8443]
```
-to some port of your choice e.g.
+to some ports of your choice e.g.
```
-"http": [1234, "auto"]
+"http": [1234, "auto"],
+"https":[5678]
```
+After your `hosts` file is configured, the servers will be locally accessible at:
+
+http://web-platform.test:8000/
+https://web-platform.test:8443/ *
+
+\**See [Trusting Root CA](README.md#trusting-root-ca)*
+
## Running tests automatically
The `wpt run` command provides a frontend for running tests automatically
diff --git a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
index 3c993c3319f..89924c09b49 100644
--- a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
+++ b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
@@ -42,7 +42,7 @@ partial interface WindowOrWorkerGlobalScope {
[Exposed=(Window,Worker)]
interface IDBFactory {
IDBOpenDBRequest open(DOMString name,
- [EnforceRange] optional unsigned long long version);
+ optional [EnforceRange] unsigned long long version);
IDBOpenDBRequest deleteDatabase(DOMString name);
short cmp(any first, any second);
diff --git a/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl b/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl
index 132c6d076ca..f48eaf12e61 100644
--- a/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl
+++ b/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl
@@ -131,7 +131,7 @@ dictionary CryptoKeyPair {
dictionary RsaKeyGenParams : Algorithm {
// The length, in bits, of the RSA modulus
- [EnforceRange] required unsigned long modulusLength;
+ required [EnforceRange] unsigned long modulusLength;
// The RSA public exponent
required BigInteger publicExponent;
};
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html
index c623aecb4d5..83604b1e70e 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html
@@ -16,28 +16,30 @@
diff --git a/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js
index e8e6ef71148..4daf3f058e2 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js
@@ -190,6 +190,61 @@
encoder.skip(1);
encoder.skip(1);
};
+ function ServiceDataMap(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ ServiceDataMap.prototype.initDefaults_ = function() {
+ this.serviceData = null;
+ };
+ ServiceDataMap.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ ServiceDataMap.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 16}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate ServiceDataMap.serviceData
+ err = messageValidator.validateMapPointer(offset + codec.kStructHeaderSize + 0, false, codec.String, new codec.ArrayOf(codec.Uint8), false);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ return validator.validationError.NONE;
+ };
+
+ ServiceDataMap.encodedSize = codec.kStructHeaderSize + 8;
+
+ ServiceDataMap.decode = function(decoder) {
+ var packed;
+ var val = new ServiceDataMap();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ val.serviceData = decoder.decodeMapPointer(codec.String, new codec.ArrayOf(codec.Uint8));
+ return val;
+ };
+
+ ServiceDataMap.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(ServiceDataMap.encodedSize);
+ encoder.writeUint32(0);
+ encoder.encodeMapPointer(codec.String, new codec.ArrayOf(codec.Uint8), val.serviceData);
+ };
function ScanRecord(values) {
this.initDefaults_();
this.initFields_(values);
@@ -202,6 +257,7 @@
this.appearance = null;
this.txPower = null;
this.manufacturerData = null;
+ this.serviceData = null;
};
ScanRecord.prototype.initFields_ = function(fields) {
for(var field in fields) {
@@ -217,7 +273,7 @@
return err;
var kVersionSizes = [
- {version: 0, numBytes: 48}
+ {version: 0, numBytes: 56}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
@@ -253,10 +309,16 @@
if (err !== validator.validationError.NONE)
return err;
+
+ // validate ScanRecord.serviceData
+ err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 40, ServiceDataMap, true);
+ if (err !== validator.validationError.NONE)
+ return err;
+
return validator.validationError.NONE;
};
- ScanRecord.encodedSize = codec.kStructHeaderSize + 40;
+ ScanRecord.encodedSize = codec.kStructHeaderSize + 48;
ScanRecord.decode = function(decoder) {
var packed;
@@ -268,6 +330,7 @@
val.appearance = decoder.decodeStructPointer(Appearance);
val.txPower = decoder.decodeStructPointer(Power);
val.manufacturerData = decoder.decodeMapPointer(codec.Uint8, new codec.ArrayOf(codec.Uint8));
+ val.serviceData = decoder.decodeStructPointer(ServiceDataMap);
return val;
};
@@ -280,6 +343,7 @@
encoder.encodeStructPointer(Appearance, val.appearance);
encoder.encodeStructPointer(Power, val.txPower);
encoder.encodeMapPointer(codec.Uint8, new codec.ArrayOf(codec.Uint8), val.manufacturerData);
+ encoder.encodeStructPointer(ServiceDataMap, val.serviceData);
};
function ScanResult(values) {
this.initDefaults_();
@@ -4192,6 +4256,7 @@
exports.CentralState = CentralState;
exports.Appearance = Appearance;
exports.Power = Power;
+ exports.ServiceDataMap = ServiceDataMap;
exports.ScanRecord = ScanRecord;
exports.ScanResult = ScanResult;
exports.CharacteristicProperties = CharacteristicProperties;
diff --git a/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js b/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js
index 027ce442d54..42656d3f756 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js
@@ -164,8 +164,12 @@ class FakeCentral {
scanResult.scanRecord.manufacturerData, Number);
}
- // TODO(https://crbug.com/817603): Add a conversion process for serviceData
- // when the field is added in Mojo.
+ // Convert serviceData from a record into a
+ // map> for Mojo.
+ if ('serviceData' in scanResult.scanRecord) {
+ scanResult.scanRecord.serviceData.serviceData = convertToMojoMap(
+ scanResult.scanRecord.serviceData, BluetoothUUID.getService);
+ }
await this.fake_central_ptr_.simulateAdvertisementReceived(
new bluetooth.mojom.ScanResult(scanResult));
diff --git a/tests/wpt/web-platform-tests/webmessaging/event.origin.sub.htm b/tests/wpt/web-platform-tests/webmessaging/event.origin.sub.htm
index ea3c9e40eb6..5b1ab3e3c37 100644
--- a/tests/wpt/web-platform-tests/webmessaging/event.origin.sub.htm
+++ b/tests/wpt/web-platform-tests/webmessaging/event.origin.sub.htm
@@ -42,13 +42,23 @@
window.onmessage = t.step_func(function(e)
{
- // testharness.js uses postMessage so we must check what data we want to receive
- if (e.data.toString() === "#1" || e.data.toString() === "#2") {
- ActualResult.push(e.data, e.origin);
- if (ActualResult.length === ExpectedResult.length) {
- assert_array_equals(ActualResult, ExpectedResult, "ActualResult");
- t.done();
- }
+ // Messages from TARGET1 and TARGET2 can come in any order
+ // (since one of them is cross-origin and can run in parallel).
+ // To make the tests immune to message reordering, always
+ // put the response from TARGET1 at the start of the list.
+ if (e.data.toString() === "#1")
+ {
+ ActualResult = [e.data, e.origin].concat(ActualResult);
+ }
+ else if (e.data.toString() === "#2")
+ {
+ ActualResult = ActualResult.concat([e.data, e.origin]);
+ }
+
+ if (ActualResult.length >= ExpectedResult.length)
+ {
+ assert_array_equals(ActualResult, ExpectedResult, "ActualResult");
+ t.done();
}
});
diff --git a/tests/wpt/web-platform-tests/webmessaging/postMessage_asterisk_xorigin.sub.htm b/tests/wpt/web-platform-tests/webmessaging/postMessage_asterisk_xorigin.sub.htm
index a12524625a7..532f28251cb 100644
--- a/tests/wpt/web-platform-tests/webmessaging/postMessage_asterisk_xorigin.sub.htm
+++ b/tests/wpt/web-platform-tests/webmessaging/postMessage_asterisk_xorigin.sub.htm
@@ -42,7 +42,18 @@
window.onmessage = t.step_func(function(e)
{
- ActualResult.push(e.data, e.origin);
+ // Messages from TARGET1 and TARGET2 can come in any order
+ // (since one of them is cross-origin and can run in parallel).
+ // To make the tests immune to message reordering, always
+ // put the response from TARGET1 at the start of the list.
+ if (e.data.toString() === "#1")
+ {
+ ActualResult = [e.data, e.origin].concat(ActualResult);
+ }
+ else if (e.data.toString() === "#2")
+ {
+ ActualResult = ActualResult.concat([e.data, e.origin]);
+ }
if (ActualResult.length >= ExpectedResult.length)
{