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) {