diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini
new file mode 100644
index 00000000000..7248ba77bd5
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini
@@ -0,0 +1,5 @@
+[url-charset.window.html]
+ expected: TIMEOUT
+ [Blob charset should override any auto-detected charset.]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b44d9e9cf..3605e8f3fc9 100644
--- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -4,7 +4,7 @@
expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini
deleted file mode 100644
index f64b45fea6b..00000000000
--- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-002.html]
- [Hit test float]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini
new file mode 100644
index 00000000000..baa9f1a7541
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-005.html]
+ [Miss clipped float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
index bbf756d71c5..abf874274b6 100644
--- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
@@ -309,30 +309,24 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
- [
+
+2d.transformation.transform.3d
+transform() with 4x4 matrix concatenates properly
+
+
+Actual output:
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate3d.html b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate3d.html
new file mode 100644
index 00000000000..2fee078bb3c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/canvas/element/transformations/2d.transformation.translate3d.html
@@ -0,0 +1,39 @@
+
+
+Canvas test: 2d.transformation.translate3d
+
+
+
+
+
+
+2d.transformation.translate3d
+translate3d() function modifies the underlying matrix appropriately
+
+
+Actual output:
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
index 229451cdad1..ec4c4e6d07b 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
@@ -151,7 +151,7 @@
testing:
- 2d.path.contexttypexxx.basic
code: |
- @assert CanvasRenderingContext2D.prototype.__proto__ === Object.prototype;
- @assert ctx.__proto__ === CanvasRenderingContext2D.prototype;
+ @assert Object.getPrototypeOf(CanvasRenderingContext2D.prototype) === Object.prototype;
+ @assert Object.getPrototypeOf(ctx) === CanvasRenderingContext2D.prototype;
t.done();
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml
index ffb1e85ec04..add421e4eb5 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/transformations.yaml
@@ -411,4 +411,35 @@
const canvasTransform = ctx.getTransform();
@assert transform.toLocaleString() == canvasTransform.toLocaleString();
+- name: 2d.transformation.transform.3d
+ desc: transform() with 4x4 matrix concatenates properly
+ testing:
+ - 2d.transformation.transform.3d
+ code: |
+ const transform = new DOMMatrix([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);
+ ctx.transform(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
+ let canvasTransform = ctx.getTransform();
+ @assert transform.toLocaleString() == canvasTransform.toLocaleString();
+ ctx.transform(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
+ canvasTransform = ctx.getTransform();
+ transform.multiplySelf(transform);
+ @assert transform.toLocaleString() == canvasTransform.toLocaleString();
+- name: 2d.transformation.translate3d
+ desc: translate3d() function modifies the underlying matrix appropriately
+ testing:
+ - 2d.transformation.translate3d
+ code: |
+ const dx = 2;
+ const dy = 3;
+ const dz = 4;
+ ctx.translate3d(dx, dy, dz);
+ let canvasTransform = ctx.getTransform();
+ @assert canvasTransform.m41 = dx;
+ @assert canvasTransform.m42 = dy;
+ @assert canvasTransform.m43 = dz;
+ ctx.translate3d(dx, dy, dz);
+ canvasTransform = ctx.getTransform();
+ @assert canvasTransform.m41 = 2 * dx;
+ @assert canvasTransform.m42 = 2 * dy;
+ @assert canvasTransform.m43 = 2 * dz;
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html
index 1d231c4dfaa..b9d26011e28 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/2d.canvas.context.html
@@ -19,8 +19,8 @@
var t = async_test("checks CanvasRenderingContext2D prototype");
_addTest(function(canvas, ctx) {
-_assertSame(CanvasRenderingContext2D.prototype.__proto__, Object.prototype, "CanvasRenderingContext2D.prototype.__proto__", "Object.prototype");
-_assertSame(ctx.__proto__, CanvasRenderingContext2D.prototype, "ctx.__proto__", "CanvasRenderingContext2D.prototype");
+_assertSame(Object.getPrototypeOf(CanvasRenderingContext2D.prototype), Object.prototype, "Object.getPrototypeOf(CanvasRenderingContext2D.prototype)", "Object.prototype");
+_assertSame(Object.getPrototypeOf(ctx), CanvasRenderingContext2D.prototype, "Object.getPrototypeOf(ctx)", "CanvasRenderingContext2D.prototype");
t.done();
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html
index 4c1cf2dcd13..3cfef5f4f9b 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/Image-constructor.html
@@ -28,10 +28,10 @@
test(function() {
assert_equals(Image.name, "Image", "Image name should be Image (not HTMLImageElement)");
- assert_equals(Image.__proto__, Function.prototype, "Image __proto__ is Function prototype");
+ assert_equals(Object.getPrototypeOf(Image), Function.prototype, "Image's prototype is Function.prototype");
assert_equals(Image.prototype, HTMLImageElement.prototype, "Image.prototype is same as HTMLImageElement.prototype");
- assert_equals(new Image().__proto__, HTMLImageElement.prototype, "Image __proto__ is HTMLImageElement prototype ");
- assert_equals(Image.prototype.__proto__, HTMLElement.prototype, "Image.prototype __proto__ is HTMLElement prototype");
+ assert_equals(Object.getPrototypeOf(new Image()), HTMLImageElement.prototype, "new Image()'s prototype is HTMLImageElement.prototype ");
+ assert_equals(Object.getPrototypeOf(Image.prototype), HTMLElement.prototype, "Image.prototype's prototype is HTMLElement.prototype");
const desc = Object.getOwnPropertyDescriptor(Image, "prototype");
assert_false(desc.configurable, "Image.prototype is not configurable");
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html
index 62ab12c8dfd..65f4b2187dc 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html
@@ -173,4 +173,24 @@ async_test(t => {
}));
}, 'The value of the submitter should be appended, and form* ' +
'attributes of the submitter should be handled.');
+
+test(() => {
+ document.body.insertAdjacentHTML('afterbegin', `
+ `);
+ let form = document.querySelector('form');
+ let formDataInEvent = null;
+ let submitter = form.querySelector('button[type=submit]');
+ form.addEventListener('submit', e => {
+ e.preventDefault();
+ formDataInEvent = new FormData(e.target);
+ });
+
+ form.requestSubmit(submitter);
+ assert_equals(formDataInEvent.get('n1'), 'v1');
+ assert_false(formDataInEvent.has('n2'));
+}, 'The constructed FormData object should not contain an entry for the submit button that was used to submit the form.');
+
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html
index 3be3fae9ac9..0fcc7f40e94 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-element-basic.tentative.html
@@ -16,31 +16,35 @@
const popup1 = document.getElementById('p1');
const popup2 = document.getElementById('p2');
+ function popupVisible(popup) {
+ return !!(popup.offsetWidth || popup.offsetHeight || popup.getClientRects().length);
+ }
+
test(function(){
assert_false(popup1.open);
assert_false(popup2.open);
- assert_equals(getComputedStyle(popup2).display,"none");
}, 'The IDL "open" content attribute must have no effect, and must not be reflected to the WebIDL.');
test(function(){
assert_false(popup1.open);
assert_false(popup1.hasAttribute("open"));
- assert_equals(getComputedStyle(popup1).display,"none");
+ assert_false(popupVisible(popup1));
popup1.open = true; // Should have no effect
assert_false(popup1.open);
+ assert_false(popupVisible(popup1));
popup1.show();
assert_true(popup1.open);
assert_false(popup1.hasAttribute("open"));
- assert_not_equals(getComputedStyle(popup1).display,"none");
+ assert_true(popupVisible(popup1));
popup1.open = false; // Should have no effect
assert_true(popup1.open);
popup1.hide();
assert_false(popup1.open);
assert_false(popup1.hasAttribute("open"));
- assert_equals(getComputedStyle(popup1).display,"none");
+ assert_false(popupVisible(popup1));
popup1.setAttribute("open","");
assert_false(popup1.open,'Setting open attribute should not reflect to the WebIDL');
assert_true(popup1.hasAttribute("open"));
- assert_equals(getComputedStyle(popup1).display,"none");
+ assert_false(popupVisible(popup1));
}, "The only visibility control for is through .show() and .hide().");
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html
index f17bdabac4b..eef0309a4db 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-shadow-dom.tentative.html
@@ -36,9 +36,7 @@
return findPopups(testRoot);
}
function popupVisible(popup) {
- const style = getComputedStyle(popup);
- return !!(style.display !== "none" && style.visibility !== "hidden" &&
- (popup.offsetWidth || popup.offsetHeight || popup.getClientRects().length));
+ return !!(popup.offsetWidth || popup.offsetHeight || popup.getClientRects().length);
}
function showPopup(testId,popupNum) {
getPopupReferences(testId)[popupNum].show();
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html
index bcba6f064c0..167b350c429 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-popup-element/popup-stacking.tentative.html
@@ -14,9 +14,11 @@
This is popup #3
This is popup #4
-
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore
index e296376fb69..72e26ff7852 100644
--- a/tests/wpt/web-platform-tests/lint.ignore
+++ b/tests/wpt/web-platform-tests/lint.ignore
@@ -727,20 +727,20 @@ WEB-PLATFORM.TEST:web-bundle/subresource-loading/*.html
# Tests that depend on resources in /gen/ in Chromium:
# https://github.com/web-platform-tests/wpt/issues/16455
# Please consult with ecosystem-infra@chromium.org before adding more.
-MISSING DEPENDENCY: contacts/resources/helpers.js
MISSING DEPENDENCY: credential-management/support/otpcredential-helper.js
-MISSING DEPENDENCY: generic-sensor/resources/generic-sensor-helpers.js
-MISSING DEPENDENCY: idle-detection/resources/idle-detection-helper.js
-MISSING DEPENDENCY: mediacapture-image/resources/imagecapture-helpers.js
-MISSING DEPENDENCY: orientation-event/resources/orientation-event-helpers.js
+MISSING DEPENDENCY: resources/chromium/contacts_manager_mock.js
MISSING DEPENDENCY: resources/chromium/web-bluetooth-test.js
MISSING DEPENDENCY: resources/chromium/webusb-test.js
-MISSING DEPENDENCY: resources/test-only-api.js
-MISSING DEPENDENCY: screen_enumeration/resources/screenenumeration-helpers.js
-MISSING DEPENDENCY: serial/resources/automation.js
-MISSING DEPENDENCY: shape-detection/resources/shapedetection-helpers.js
-MISSING DEPENDENCY: web-nfc/resources/nfc-helpers.js
-MISSING DEPENDENCY: webxr/resources/webxr_util.js
+MISSING DEPENDENCY: resources/chromium/fake-serial.js
+MISSING DEPENDENCY: resources/chromium/generic_sensor_mocks.js
+MISSING DEPENDENCY: resources/chromium/mock-barcodedetection.js
+MISSING DEPENDENCY: resources/chromium/mock-facedetection.js
+MISSING DEPENDENCY: resources/chromium/mock-idle-detection.js
+MISSING DEPENDENCY: resources/chromium/mock-imagecapture.js
+MISSING DEPENDENCY: resources/chromium/mock-screenenumeration.js
+MISSING DEPENDENCY: resources/chromium/mock-textdetection.js
+MISSING DEPENDENCY: resources/chromium/nfc-mock.js
+MISSING DEPENDENCY: resources/chromium/webxr-test.js
# Tests that are false positives for using Ahem as a system font
AHEM SYSTEM FONT: acid/acid3/test.html
diff --git a/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js b/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js
index 8301b1c2b64..8f142cff419 100644
--- a/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js
+++ b/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js
@@ -10,11 +10,7 @@
// --enable-blink-features=MojoJS,MojoJSTest
async function loadChromiumResources() {
- const chromiumResources = [
- '/gen/media/capture/mojom/image_capture.mojom.js'
- ];
- await loadMojoResources(chromiumResources);
- await loadScript('/resources/chromium/mock-imagecapture.js');
+ await import('/resources/chromium/mock-imagecapture.js');
}
async function initialize_image_capture_tests() {
diff --git a/tests/wpt/web-platform-tests/orientation-event/motion/create-event.https.html b/tests/wpt/web-platform-tests/orientation-event/motion/create-event.https.html
index 7efcf40155b..e8a2c469b11 100644
--- a/tests/wpt/web-platform-tests/orientation-event/motion/create-event.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/motion/create-event.https.html
@@ -15,7 +15,7 @@ test(test => {
});
assert_equals(typeof event, 'object');
- assert_equals(event.__proto__, DeviceMotionEvent.prototype);
+ assert_equals(Object.getPrototypeOf(event), DeviceMotionEvent.prototype);
assert_true('type' in event);
assert_true('bubbles' in event);
diff --git a/tests/wpt/web-platform-tests/orientation-event/orientation/create-event.https.html b/tests/wpt/web-platform-tests/orientation-event/orientation/create-event.https.html
index f1e5c0f8ad2..a21f95655ed 100644
--- a/tests/wpt/web-platform-tests/orientation-event/orientation/create-event.https.html
+++ b/tests/wpt/web-platform-tests/orientation-event/orientation/create-event.https.html
@@ -15,7 +15,7 @@ test(test => {
});
assert_equals(typeof event, 'object');
- assert_equals(event.__proto__, DeviceOrientationEvent.prototype);
+ assert_equals(Object.getPrototypeOf(event), DeviceOrientationEvent.prototype);
assert_true('type' in event);
assert_true('bubbles' in event);
diff --git a/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js b/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js
index 51154ad7376..1f0deba278e 100644
--- a/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js
+++ b/tests/wpt/web-platform-tests/orientation-event/resources/orientation-event-helpers.js
@@ -9,13 +9,7 @@
//
// --enable-blink-features=MojoJS,MojoJSTest
async function loadChromiumResources() {
- const chromiumResources = [
- '/gen/mojo/public/mojom/base/string16.mojom.js',
- '/gen/services/device/public/mojom/sensor.mojom.js',
- '/gen/services/device/public/mojom/sensor_provider.mojom.js',
- ];
- await loadMojoResources(chromiumResources);
- await loadScript('/resources/chromium/generic_sensor_mocks.js');
+ await import('/resources/chromium/generic_sensor_mocks.js');
}
async function initialize_generic_sensor_tests() {
diff --git a/tests/wpt/web-platform-tests/quirks/blocks-ignore-line-height.html b/tests/wpt/web-platform-tests/quirks/blocks-ignore-line-height.html
index 608a7c15c79..c07f6cf49b8 100644
--- a/tests/wpt/web-platform-tests/quirks/blocks-ignore-line-height.html
+++ b/tests/wpt/web-platform-tests/quirks/blocks-ignore-line-height.html
@@ -31,7 +31,7 @@
s.document.close();
[q, a, s].forEach(function(win) {
['style', 'test', 'ref', 's_ref'].forEach(function(id) {
- win.__proto__.__defineGetter__(id, function() { return win.document.getElementById(id); });
+ Object.getPrototypeOf(win).__defineGetter__(id, function() { return win.document.getElementById(id); });
});
});
diff --git a/tests/wpt/web-platform-tests/quirks/line-height-calculation.html b/tests/wpt/web-platform-tests/quirks/line-height-calculation.html
index 7e7f03a99b9..cc5254ae1be 100644
--- a/tests/wpt/web-platform-tests/quirks/line-height-calculation.html
+++ b/tests/wpt/web-platform-tests/quirks/line-height-calculation.html
@@ -36,7 +36,7 @@
s.document.close();
[q, a, s].forEach(function(win) {
['style', 'test', 'ref', 's_ref'].forEach(function(id) {
- win.__proto__.__defineGetter__(id, function() { return win.document.getElementById(id); });
+ Object.getPrototypeOf(win).__defineGetter__(id, function() { return win.document.getElementById(id); });
});
});
diff --git a/tests/wpt/web-platform-tests/quirks/percentage-height-calculation.html b/tests/wpt/web-platform-tests/quirks/percentage-height-calculation.html
index e56a03b4b41..a40b8b7d3fc 100644
--- a/tests/wpt/web-platform-tests/quirks/percentage-height-calculation.html
+++ b/tests/wpt/web-platform-tests/quirks/percentage-height-calculation.html
@@ -42,7 +42,7 @@
s.document.close();
[q, a, s].forEach(function(win) {
['style', 'test'].forEach(function(id) {
- win.__proto__.__defineGetter__(id, function() { return win.document.getElementById(id); });
+ Object.getPrototypeOf(win).__defineGetter__(id, function() { return win.document.getElementById(id); });
});
});
diff --git a/tests/wpt/web-platform-tests/quirks/table-cell-nowrap-minimum-width-calculation.html b/tests/wpt/web-platform-tests/quirks/table-cell-nowrap-minimum-width-calculation.html
index 2ff00b9ee79..25590c64a31 100644
--- a/tests/wpt/web-platform-tests/quirks/table-cell-nowrap-minimum-width-calculation.html
+++ b/tests/wpt/web-platform-tests/quirks/table-cell-nowrap-minimum-width-calculation.html
@@ -36,7 +36,7 @@
s.document.close();
[q, a, s].forEach(function(win) {
['style', 'test', 'ref', 's_ref'].forEach(function(id) {
- win.__proto__.__defineGetter__(id, function() { return win.document.getElementById(id); });
+ Object.getPrototypeOf(win).__defineGetter__(id, function() { return win.document.getElementById(id); });
});
});
q.title = 'quirks mode';
diff --git a/tests/wpt/web-platform-tests/quirks/table-cell-width-calculation.html b/tests/wpt/web-platform-tests/quirks/table-cell-width-calculation.html
index eeb726627b7..7d76a9194b3 100644
--- a/tests/wpt/web-platform-tests/quirks/table-cell-width-calculation.html
+++ b/tests/wpt/web-platform-tests/quirks/table-cell-width-calculation.html
@@ -36,7 +36,7 @@
s.document.close();
[q, a, s].forEach(function(win) {
['style', 'test', 'ref', 's_ref'].forEach(function(id) {
- win.__proto__.__defineGetter__(id, function() { return win.document.getElementById(id); });
+ Object.getPrototypeOf(win).__defineGetter__(id, function() { return win.document.getElementById(id); });
});
});
q.title = 'quirks mode';
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html
index e6df2098d47..491f104de4b 100644
--- a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html
@@ -45,8 +45,7 @@
[
{
srcDocPolicy: ``,
- expected: location.href // Executing javascript does not commit a new document
- // and does not change the document url.
+ expected: location.href // Executing javascript does not change the document url.
// Since the algorithm for computing the referrer in a srcdoc
// iframe defers recursively to the parent, the expected
// referrer should be the full url of the main document.
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html
index 356eedd4f48..5b76f8efccb 100644
--- a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html
+++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html
@@ -27,20 +27,6 @@
document.body.appendChild(iframe);
assert_equals(await referrer, self.origin + "/");
}, "Srcdoc iframe inherits referrer policy from parent on creation.");
-
- promise_test(async t => {
- let referrer = reportedReferrer();
-
- // We navigate the iframe to a page that will set referrer
- // policy to 'unsafe-url' and then navigate to about:srcdoc.
- iframe.contentWindow.location = 'resources/referrer-policy-unsafe-url-navigate-to-srcdoc.html';
-
- // Despite the navigation was initiated by a document with
- // referrer policy 'unsafe-url', the srcdoc iframe should
- // still inherit the referrer policy from its parent, and
- // not the navigation's initiator.
- assert_equals(await referrer, self.origin + "/");
- }, "Even after a navigation from another initiator, srcdoc iframe still inherits referrer policy from the parent.");
diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/referrer-policy-unsafe-url-navigate-to-srcdoc.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/referrer-policy-unsafe-url-navigate-to-srcdoc.html
deleted file mode 100644
index dfdfae1f0d8..00000000000
--- a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/referrer-policy-unsafe-url-navigate-to-srcdoc.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/tests/wpt/web-platform-tests/resources/chromium/README.md b/tests/wpt/web-platform-tests/resources/chromium/README.md
index ec953033f9b..3813f6de5d7 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/README.md
+++ b/tests/wpt/web-platform-tests/resources/chromium/README.md
@@ -2,6 +2,6 @@ This directory contains Chromium-specific test resources, including mocks for
test-only APIs implemented with
[MojoJS](https://chromium.googlesource.com/chromium/src/+/master/mojo/public/js/README.md).
-Please do **not** copy `*.mojom.js` into this directory. Follow this doc if you
+Please do **not** copy `*.mojom.m.js` into this directory. Follow this doc if you
want to add new MojoJS-backed mocks:
https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md#mojojs
diff --git a/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js b/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js
index 443d50bbc62..2ace6d49ffa 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js
@@ -2,17 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-'use strict';
+import {ContactsManager, ContactsManagerReceiver} from '/gen/third_party/blink/public/mojom/contacts/contacts_manager.mojom.m.js';
-const WebContactsTest = (() => {
+self.WebContactsTest = (() => {
class MockContacts {
constructor() {
- this.bindingSet_ = new mojo.BindingSet(blink.mojom.ContactsManager);
+ this.receiver_ = new ContactsManagerReceiver(this);
this.interceptor_ =
- new MojoInterfaceInterceptor(blink.mojom.ContactsManager.name);
+ new MojoInterfaceInterceptor(ContactsManager.$interfaceName);
this.interceptor_.oninterfacerequest =
- e => this.bindingSet_.addBinding(this, e.handle);
+ e => this.receiver_.$.bindHandle(e.handle);
this.interceptor_.start();
this.selectedContacts_ = [];
@@ -39,7 +39,7 @@ const WebContactsTest = (() => {
return {contacts: null};
const contactInfos = await Promise.all(this.selectedContacts_.map(async contact => {
- const contactInfo = new blink.mojom.ContactInfo();
+ const contactInfo = {};
if (includeNames)
contactInfo.name = contact.name || [];
if (includeEmails)
@@ -69,7 +69,7 @@ const WebContactsTest = (() => {
}
reset() {
- this.bindingSet_.closeAllBindings();
+ this.receiver_.$.close();
this.interceptor_.stop();
}
}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js b/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js
index 46a79f0147a..1a0f4b52178 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/fake-serial.js
@@ -1,3 +1,6 @@
+import {SerialPortFlushMode, SerialPortRemote, SerialReceiveError, SerialPortReceiver, SerialSendError} from '/gen/services/device/public/mojom/serial.mojom.m.js';
+import {SerialService, SerialServiceReceiver} from '/gen/third_party/blink/public/mojom/serial/serial.mojom.m.js';
+
// Implementation of an UnderlyingSource to create a ReadableStream from a Mojo
// data pipe consumer handle.
class DataPipeSource {
@@ -84,7 +87,7 @@ class DataPipeSink {
}
}
-// Implementation of blink.mojom.SerialPort.
+// Implementation of device.mojom.SerialPort.
class FakeSerialPort {
constructor() {
this.inputSignals_ = {
@@ -103,24 +106,21 @@ class FakeSerialPort {
}
open(options, client) {
- if (this.binding_ !== undefined) {
+ if (this.receiver_ !== undefined) {
// Port already open.
return null;
}
- let portPtr = new device.mojom.SerialPortPtr();
- this.binding_ = new mojo.Binding(
- device.mojom.SerialPort, this, mojo.makeRequest(portPtr));
- this.binding_.setConnectionErrorHandler(() => {
- this.close();
- });
+ let port = new SerialPortRemote();
+ this.receiver_ = new SerialPortReceiver(this);
+ this.receiver_.$.bindHandle(port.$.bindNewPipeAndPassReceiver().handle);
this.options_ = options;
this.client_ = client;
// OS typically sets DTR on open.
this.outputSignals_.dataTerminalReady = true;
- return portPtr;
+ return port;
}
write(data) {
@@ -146,11 +146,11 @@ class FakeSerialPort {
}
simulateParityError() {
- this.simulateReadError(device.mojom.SerialReceiveError.PARITY_ERROR);
+ this.simulateReadError(SerialReceiveError.PARITY_ERROR);
}
simulateDisconnectOnRead() {
- this.simulateReadError(device.mojom.SerialReceiveError.DISCONNECTED);
+ this.simulateReadError(SerialReceiveError.DISCONNECTED);
}
simulateWriteError(error) {
@@ -161,11 +161,11 @@ class FakeSerialPort {
}
simulateSystemErrorOnWrite() {
- this.simulateWriteError(device.mojom.SerialSendError.SYSTEM_ERROR);
+ this.simulateWriteError(SerialSendError.SYSTEM_ERROR);
}
simulateDisconnectOnWrite() {
- this.simulateWriteError(device.mojom.SerialSendError.DISCONNECTED);
+ this.simulateWriteError(SerialSendError.DISCONNECTED);
}
simulateInputSignals(signals) {
@@ -232,13 +232,13 @@ class FakeSerialPort {
async flush(mode) {
switch (mode) {
- case device.mojom.SerialPortFlushMode.kReceive:
+ case SerialPortFlushMode.kReceive:
this.writer_.abort();
this.writer_.releaseLock();
this.writer_ = undefined;
this.writable_ = undefined;
break;
- case device.mojom.SerialPortFlushMode.kTransmit:
+ case SerialPortFlushMode.kTransmit:
this.reader_.cancel();
this.reader_ = undefined;
this.readable_ = undefined;
@@ -289,11 +289,11 @@ class FakeSerialPort {
async getPortInfo() {
return {
bitrate: this.options_.bitrate,
- data_bits: this.options_.data_bits,
- parity_bit: this.options_.parity_bit,
- stop_bits: this.options_.stop_bits,
- cts_flow_control: this.options_.has_cts_flow_control ?
- this.options_.cts_flow_control : false
+ dataBits: this.options_.datBits,
+ parityBit: this.options_.parityBit,
+ stopBits: this.options_.stopBits,
+ ctsFlowControl:
+ this.options_.hasCtsFlowControl && this.options_.ctsFlowControl,
};
}
@@ -307,9 +307,9 @@ class FakeSerialPort {
}
this.writable_ = undefined;
- if (this.binding_) {
- this.binding_.close();
- this.binding_ = undefined;
+ if (this.receiver_) {
+ this.receiver_.$.close();
+ this.receiver_ = undefined;
}
return {};
}
@@ -319,9 +319,9 @@ class FakeSerialPort {
class FakeSerialService {
constructor() {
this.interceptor_ =
- new MojoInterfaceInterceptor(blink.mojom.SerialService.name);
+ new MojoInterfaceInterceptor(SerialService.$interfaceName);
this.interceptor_.oninterfacerequest = e => this.bind(e.handle);
- this.bindingSet_ = new mojo.BindingSet(blink.mojom.SerialService);
+ this.receiver_ = new SerialServiceReceiver(this);
this.clients_ = [];
this.nextToken_ = 0;
this.reset();
@@ -341,7 +341,7 @@ class FakeSerialService {
}
addPort(info) {
- let portInfo = new blink.mojom.SerialPortInfo();
+ let portInfo = {};
if (info?.usbVendorId !== undefined) {
portInfo.hasUsbVendorId = true;
portInfo.usbVendorId = info.usbVendorId;
@@ -352,9 +352,7 @@ class FakeSerialService {
}
let token = ++this.nextToken_;
- portInfo.token = new mojoBase.mojom.UnguessableToken();
- portInfo.token.high = 0;
- portInfo.token.low = token;
+ portInfo.token = {high: 0n, low: BigInt(token)};
let record = {
portInfo: portInfo,
@@ -394,7 +392,7 @@ class FakeSerialService {
}
bind(handle) {
- this.bindingSet_.addBinding(this, handle);
+ this.receiver_.$.bindHandle(handle);
}
async setClient(client_remote) {
@@ -415,7 +413,7 @@ class FakeSerialService {
}
async openPort(token, options, client) {
- let record = this.ports_.get(token.low);
+ let record = this.ports_.get(Number(token.low));
if (record !== undefined) {
return {port: record.fakePort.open(options, client)};
} else {
@@ -424,4 +422,4 @@ class FakeSerialService {
}
}
-fakeSerialService = new FakeSerialService();
+export const fakeSerialService = new FakeSerialService();
diff --git a/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js b/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js
index 56438824518..b7b303b6f14 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/generic_sensor_mocks.js
@@ -1,9 +1,10 @@
-'use strict';
+import {ReportingMode, Sensor, SensorClientRemote, SensorReceiver, SensorRemote, SensorType} from '/gen/services/device/public/mojom/sensor.mojom.m.js';
+import {SensorCreationResult, SensorInitParams_READ_BUFFER_SIZE_FOR_TESTS, SensorProvider, SensorProviderReceiver} from '/gen/services/device/public/mojom/sensor_provider.mojom.m.js';
// A "sliding window" that iterates over |data| and returns one item at a
// time, advancing and wrapping around as needed. |data| must be an array of
// arrays.
-class RingBuffer {
+self.RingBuffer = class {
constructor(data) {
this.bufferPosition_ = 0;
// Validate |data|'s format and deep-copy every element.
@@ -28,9 +29,9 @@ class RingBuffer {
[Symbol.iterator]() {
return this;
}
-}
+};
-var GenericSensorTest = (() => {
+self.GenericSensorTest = (() => {
// Default sensor frequency in default configurations.
const DEFAULT_FREQUENCY = 5;
@@ -56,11 +57,8 @@ var GenericSensorTest = (() => {
}
this.buffer_ = new Float64Array(rv.buffer);
this.buffer_.fill(0);
- this.binding_ = new mojo.Binding(device.mojom.Sensor, this,
- sensorRequest);
- this.binding_.setConnectionErrorHandler(() => {
- this.reset();
- });
+ this.receiver_ = new SensorReceiver(this);
+ this.receiver_.$.bindHandle(sensorRequest.handle);
}
// Returns default configuration.
@@ -120,7 +118,7 @@ var GenericSensorTest = (() => {
this.notifyOnReadingChange_ = true;
this.readingData_ = null;
this.buffer_.fill(0);
- this.binding_.close();
+ this.receiver_.$.close();
}
// Sets fake data that is used to deliver sensor reading updates.
@@ -166,7 +164,7 @@ var GenericSensorTest = (() => {
// increasing timestamp.
this.buffer_[1] = this.timestamp_++;
- if (this.reportingMode_ === device.mojom.ReportingMode.ON_CHANGE &&
+ if (this.reportingMode_ === ReportingMode.ON_CHANGE &&
this.notifyOnReadingChange_) {
this.client_.sensorReadingChanged();
}
@@ -197,9 +195,9 @@ var GenericSensorTest = (() => {
class MockSensorProvider {
constructor() {
this.readingSizeInBytes_ =
- device.mojom.SensorInitParams.READ_BUFFER_SIZE_FOR_TESTS;
- this.sharedBufferSizeInBytes_ = this.readingSizeInBytes_ *
- (device.mojom.SensorType.MAX_VALUE + 1);
+ Number(SensorInitParams_READ_BUFFER_SIZE_FOR_TESTS);
+ this.sharedBufferSizeInBytes_ =
+ this.readingSizeInBytes_ * (SensorType.MAX_VALUE + 1);
const rv = Mojo.createSharedBuffer(this.sharedBufferSizeInBytes_);
if (rv.result != Mojo.RESULT_OK) {
throw new Error("MockSensorProvider: Failed to map shared buffer");
@@ -212,28 +210,26 @@ var GenericSensorTest = (() => {
this.maxFrequency_ = 60;
this.minFrequency_ = 1;
this.mojomSensorType_ = new Map([
- ['Accelerometer', device.mojom.SensorType.ACCELEROMETER],
- ['LinearAccelerationSensor',
- device.mojom.SensorType.LINEAR_ACCELERATION],
- ['GravitySensor',
- device.mojom.SensorType.GRAVITY],
- ['AmbientLightSensor', device.mojom.SensorType.AMBIENT_LIGHT],
- ['Gyroscope', device.mojom.SensorType.GYROSCOPE],
- ['Magnetometer', device.mojom.SensorType.MAGNETOMETER],
+ ['Accelerometer', SensorType.ACCELEROMETER],
+ ['LinearAccelerationSensor', SensorType.LINEAR_ACCELERATION],
+ ['GravitySensor', SensorType.GRAVITY],
+ ['AmbientLightSensor', SensorType.AMBIENT_LIGHT],
+ ['Gyroscope', SensorType.GYROSCOPE],
+ ['Magnetometer', SensorType.MAGNETOMETER],
['AbsoluteOrientationSensor',
- device.mojom.SensorType.ABSOLUTE_ORIENTATION_QUATERNION],
+ SensorType.ABSOLUTE_ORIENTATION_QUATERNION],
['AbsoluteOrientationEulerAngles',
- device.mojom.SensorType.ABSOLUTE_ORIENTATION_EULER_ANGLES],
+ SensorType.ABSOLUTE_ORIENTATION_EULER_ANGLES],
['RelativeOrientationSensor',
- device.mojom.SensorType.RELATIVE_ORIENTATION_QUATERNION],
+ SensorType.RELATIVE_ORIENTATION_QUATERNION],
['RelativeOrientationEulerAngles',
- device.mojom.SensorType.RELATIVE_ORIENTATION_EULER_ANGLES],
- ['ProximitySensor', device.mojom.SensorType.PROXIMITY]
+ SensorType.RELATIVE_ORIENTATION_EULER_ANGLES],
+ ['ProximitySensor', SensorType.PROXIMITY]
]);
- this.binding_ = new mojo.Binding(device.mojom.SensorProvider, this);
+ this.receiver_ = new SensorProviderReceiver(this);
this.interceptor_ =
- new MojoInterfaceInterceptor(device.mojom.SensorProvider.name);
+ new MojoInterfaceInterceptor(SensorProvider.$interfaceName);
this.interceptor_.oninterfacerequest = e => {
this.bindToPipe(e.handle);
};
@@ -243,25 +239,24 @@ var GenericSensorTest = (() => {
// Returns initialized Sensor proxy to the client.
async getSensor(type) {
if (this.getSensorShouldFail_.get(type)) {
- return {result: device.mojom.SensorCreationResult.ERROR_NOT_AVAILABLE,
+ return {result: SensorCreationResult.ERROR_NOT_AVAILABLE,
initParams: null};
}
if (this.permissionsDenied_.get(type)) {
- return {result: device.mojom.SensorCreationResult.ERROR_NOT_ALLOWED,
+ return {result: SensorCreationResult.ERROR_NOT_ALLOWED,
initParams: null};
}
const offset = type * this.readingSizeInBytes_;
- const reportingMode = device.mojom.ReportingMode.ON_CHANGE;
+ const reportingMode = ReportingMode.ON_CHANGE;
- const sensorPtr = new device.mojom.SensorPtr();
+ const sensor = new SensorRemote();
if (!this.activeSensors_.has(type)) {
const mockSensor = new MockSensor(
- mojo.makeRequest(sensorPtr), this.sharedBufferHandle_, offset,
- this.readingSizeInBytes_, reportingMode);
+ sensor.$.bindNewPipeAndPassReceiver(), this.sharedBufferHandle_,
+ offset, this.readingSizeInBytes_, reportingMode);
this.activeSensors_.set(type, mockSensor);
- this.activeSensors_.get(type).client_ =
- new device.mojom.SensorClientPtr();
+ this.activeSensors_.get(type).client_ = new SensorClientRemote();
}
const rv = this.sharedBufferHandle_.duplicateBufferHandle();
@@ -272,8 +267,7 @@ var GenericSensorTest = (() => {
const defaultConfig = { frequency: DEFAULT_FREQUENCY };
// Consider sensor traits to meet assertions in C++ code (see
// services/device/public/cpp/generic_sensor/sensor_traits.h)
- if (type == device.mojom.SensorType.AMBIENT_LIGHT ||
- type == device.mojom.SensorType.MAGNETOMETER) {
+ if (type == SensorType.AMBIENT_LIGHT || type == SensorType.MAGNETOMETER) {
this.maxFrequency_ = Math.min(10, this.maxFrequency_);
}
@@ -283,23 +277,24 @@ var GenericSensorTest = (() => {
// each reading return a different value that is significantly different
// from the previous one when setSensorReading() is not called by client
// code (e.g. run_generic_sensor_iframe_tests()).
- if (type == device.mojom.SensorType.AMBIENT_LIGHT) {
+ if (type == SensorType.AMBIENT_LIGHT) {
this.activeSensors_.get(type).setSensorReading([
[window.performance.now() * 100],
[(window.performance.now() + 50) * 100]
]);
}
- const initParams = new device.mojom.SensorInitParams({
- sensor: sensorPtr,
- clientReceiver: mojo.makeRequest(this.activeSensors_.get(type).client_),
+ const client = this.activeSensors_.get(type).client_;
+ const initParams = {
+ sensor,
+ clientReceiver: client.$.bindNewPipeAndPassReceiver(),
memory: rv.handle,
- bufferOffset: offset,
+ bufferOffset: BigInt(offset),
mode: reportingMode,
defaultConfiguration: defaultConfig,
minimumFrequency: this.minFrequency_,
maximumFrequency: this.maxFrequency_
- });
+ };
if (this.resolveFuncs_.has(type)) {
for (let resolveFunc of this.resolveFuncs_.get(type)) {
@@ -308,16 +303,12 @@ var GenericSensorTest = (() => {
this.resolveFuncs_.delete(type);
}
- return {result: device.mojom.SensorCreationResult.SUCCESS,
- initParams: initParams};
+ return {result: SensorCreationResult.SUCCESS, initParams};
}
// Binds object to mojo message pipe
bindToPipe(pipe) {
- this.binding_.bind(pipe);
- this.binding_.setConnectionErrorHandler(() => {
- this.reset();
- });
+ this.receiver_.$.bindHandle(pipe);
}
// Mock functions
@@ -333,7 +324,7 @@ var GenericSensorTest = (() => {
this.permissionsDenied_.clear();
this.maxFrequency_ = 60;
this.minFrequency_ = 1;
- this.binding_.close();
+ this.receiver_.$.close();
this.interceptor_.stop();
}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-barcodedetection.js b/tests/wpt/web-platform-tests/resources/chromium/mock-barcodedetection.js
index c11f879b5b6..b0d2e0af0ae 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-barcodedetection.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-barcodedetection.js
@@ -1,20 +1,20 @@
-"use strict";
+import {BarcodeDetectionReceiver, BarcodeFormat} from '/gen/services/shape_detection/public/mojom/barcodedetection.mojom.m.js';
+import {BarcodeDetectionProvider, BarcodeDetectionProviderReceiver} from '/gen/services/shape_detection/public/mojom/barcodedetection_provider.mojom.m.js';
-var BarcodeDetectionTest = (() => {
+self.BarcodeDetectionTest = (() => {
// Class that mocks BarcodeDetectionProvider interface defined in
// https://cs.chromium.org/chromium/src/services/shape_detection/public/mojom/barcodedetection_provider.mojom
class MockBarcodeDetectionProvider {
constructor() {
- this.bindingSet_ = new mojo.BindingSet(
- shapeDetection.mojom.BarcodeDetectionProvider);
+ this.receiver_ = new BarcodeDetectionProviderReceiver(this);
this.interceptor_ = new MojoInterfaceInterceptor(
- shapeDetection.mojom.BarcodeDetectionProvider.name);
+ BarcodeDetectionProvider.$interfaceName);
this.interceptor_.oninterfacerequest = e => {
if (this.should_close_pipe_on_request_)
e.handle.close();
else
- this.bindingSet_.addBinding(this, e.handle);
+ this.receiver_.$.bindHandle(e.handle);
}
this.interceptor_.start();
this.should_close_pipe_on_request_ = false;
@@ -25,13 +25,13 @@ var BarcodeDetectionTest = (() => {
}
enumerateSupportedFormats() {
- return Promise.resolve({
+ return {
supportedFormats: [
- shapeDetection.mojom.BarcodeFormat.AZTEC,
- shapeDetection.mojom.BarcodeFormat.DATA_MATRIX,
- shapeDetection.mojom.BarcodeFormat.QR_CODE,
+ BarcodeFormat.AZTEC,
+ BarcodeFormat.DATA_MATRIX,
+ BarcodeFormat.QR_CODE,
]
- });
+ };
}
getFrameData() {
@@ -45,7 +45,7 @@ var BarcodeDetectionTest = (() => {
reset() {
this.mockService_ = null;
this.should_close_pipe_on_request_ = false;
- this.bindingSet_.closeAllBindings();
+ this.receiver_.$.close();
this.interceptor_.stop();
}
@@ -60,20 +60,19 @@ var BarcodeDetectionTest = (() => {
class MockBarcodeDetection {
constructor(request, options) {
this.options_ = options;
- this.binding_ =
- new mojo.Binding(shapeDetection.mojom.BarcodeDetection,
- this, request);
+ this.receiver_ = new BarcodeDetectionReceiver(this);
+ this.receiver_.$.bindHandle(request.handle);
}
detect(bitmapData) {
this.bufferData_ =
new Uint32Array(getArrayBufferFromBigBuffer(bitmapData.pixelData));
- return Promise.resolve({
+ return {
results: [
{
rawValue : "cats",
boundingBox: { x: 1.0, y: 1.0, width: 100.0, height: 100.0 },
- format: shapeDetection.mojom.BarcodeFormat.QR_CODE,
+ format: BarcodeFormat.QR_CODE,
cornerPoints: [
{ x: 1.0, y: 1.0 },
{ x: 101.0, y: 1.0 },
@@ -84,7 +83,7 @@ var BarcodeDetectionTest = (() => {
{
rawValue : "dogs",
boundingBox: { x: 2.0, y: 2.0, width: 50.0, height: 50.0 },
- format: shapeDetection.mojom.BarcodeFormat.CODE_128,
+ format: BarcodeFormat.CODE_128,
cornerPoints: [
{ x: 2.0, y: 2.0 },
{ x: 52.0, y: 2.0 },
@@ -93,7 +92,7 @@ var BarcodeDetectionTest = (() => {
],
},
],
- });
+ };
}
}
@@ -133,3 +132,5 @@ var BarcodeDetectionTest = (() => {
return BarcodeDetectionTestChromium;
})();
+
+self.BarcodeFormat = BarcodeFormat;
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-facedetection.js b/tests/wpt/web-platform-tests/resources/chromium/mock-facedetection.js
index 1275e4dd2f5..7ae658621ee 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-facedetection.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-facedetection.js
@@ -1,17 +1,17 @@
-"use strict";
+import {FaceDetectionReceiver, LandmarkType} from '/gen/services/shape_detection/public/mojom/facedetection.mojom.m.js';
+import {FaceDetectionProvider, FaceDetectionProviderReceiver} from '/gen/services/shape_detection/public/mojom/facedetection_provider.mojom.m.js';
-var FaceDetectionTest = (() => {
+self.FaceDetectionTest = (() => {
// Class that mocks FaceDetectionProvider interface defined in
// https://cs.chromium.org/chromium/src/services/shape_detection/public/mojom/facedetection_provider.mojom
class MockFaceDetectionProvider {
constructor() {
- this.bindingSet_ = new mojo.BindingSet(
- shapeDetection.mojom.FaceDetectionProvider);
+ this.receiver_ = new FaceDetectionProviderReceiver(this);
this.interceptor_ = new MojoInterfaceInterceptor(
- shapeDetection.mojom.FaceDetectionProvider.name);
+ FaceDetectionProvider.$interfaceName);
this.interceptor_.oninterfacerequest =
- e => this.bindingSet_.addBinding(this, e.handle);
+ e => this.receiver_.$.bindHandle(e.handle);
this.interceptor_.start();
}
@@ -33,7 +33,7 @@ var FaceDetectionTest = (() => {
reset() {
this.mockService_ = null;
- this.bindingSet_.closeAllBindings();
+ this.receiver_.$.close();
this.interceptor_.stop();
}
}
@@ -44,9 +44,8 @@ var FaceDetectionTest = (() => {
constructor(request, options) {
this.maxDetectedFaces_ = options.maxDetectedFaces;
this.fastMode_ = options.fastMode;
- this.binding_ =
- new mojo.Binding(shapeDetection.mojom.FaceDetection,
- this, request);
+ this.receiver_ = new FaceDetectionReceiver(this);
+ this.receiver_.$.bindHandle(request.handle);
}
detect(bitmapData) {
@@ -57,11 +56,11 @@ var FaceDetectionTest = (() => {
{
boundingBox: {x: 1.0, y: 1.0, width: 100.0, height: 100.0},
landmarks: [{
- type: shapeDetection.mojom.LandmarkType.EYE,
+ type: LandmarkType.EYE,
locations: [{x: 4.0, y: 5.0}]
},
{
- type: shapeDetection.mojom.LandmarkType.EYE,
+ type: LandmarkType.EYE,
locations: [
{x: 4.0, y: 5.0}, {x: 5.0, y: 4.0}, {x: 6.0, y: 3.0},
{x: 7.0, y: 4.0}, {x: 8.0, y: 5.0}, {x: 7.0, y: 6.0},
@@ -72,11 +71,11 @@ var FaceDetectionTest = (() => {
{
boundingBox: {x: 2.0, y: 2.0, width: 200.0, height: 200.0},
landmarks: [{
- type: shapeDetection.mojom.LandmarkType.NOSE,
+ type: LandmarkType.NOSE,
locations: [{x: 100.0, y: 50.0}]
},
{
- type: shapeDetection.mojom.LandmarkType.NOSE,
+ type: LandmarkType.NOSE,
locations: [
{x: 80.0, y: 50.0}, {x: 70.0, y: 60.0}, {x: 60.0, y: 70.0},
{x: 70.0, y: 60.0}, {x: 80.0, y: 70.0}, {x: 90.0, y: 80.0},
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-idle-detection.js b/tests/wpt/web-platform-tests/resources/chromium/mock-idle-detection.js
index d88d1ad1c55..afc5b93f500 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-idle-detection.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-idle-detection.js
@@ -1,3 +1,5 @@
+import {IdleManager, IdleManagerReceiver, ScreenIdleState as MojoScreenIdleState, UserIdleState as MojoUserIdleState} from '/gen/third_party/blink/public/mojom/idle/idle_manager.mojom.m.js';
+
/**
* This is a testing framework that enables us to test the user idle detection
* by intercepting the connection between the renderer and the browser and
@@ -35,14 +37,14 @@ class FakeIdleMonitor {
return this;
}
close() {
- this.binding.close();
+ this.binding.$.close();
}
}
-const UserIdleState = {};
-const ScreenIdleState = {};
+self.UserIdleState = {};
+self.ScreenIdleState = {};
-function addMonitor(threshold, monitorPtr, callback) {
+self.addMonitor = function addMonitor(threshold, monitorPtr, callback) {
throw new Error("expected to be overriden by tests");
}
@@ -50,34 +52,31 @@ async function close() {
interceptor.close();
}
-function expect(call) {
+self.expect = function(call) {
return {
andReturn(callback) {
let handler = {};
handler[call.name] = callback;
interceptor.setHandler(handler);
}
- }
-}
+ };
+};
function intercept() {
let result = new FakeIdleMonitor();
- let binding = new mojo.Binding(blink.mojom.IdleManager, result);
- let interceptor = new MojoInterfaceInterceptor(blink.mojom.IdleManager.name);
- interceptor.oninterfacerequest = (e) => {
- binding.bind(e.handle);
- }
-
+ let binding = new IdleManagerReceiver(result);
+ let interceptor = new MojoInterfaceInterceptor(IdleManager.$interfaceName);
+ interceptor.oninterfacerequest = e => binding.$.bindHandle(e.handle);
interceptor.start();
- UserIdleState.ACTIVE = blink.mojom.UserIdleState.kActive;
- UserIdleState.IDLE = blink.mojom.UserIdleState.kIdle;
- ScreenIdleState.LOCKED = blink.mojom.ScreenIdleState.kLocked;
- ScreenIdleState.UNLOCKED = blink.mojom.ScreenIdleState.kUnlocked;
+ self.UserIdleState.ACTIVE = MojoUserIdleState.kActive;
+ self.UserIdleState.IDLE = MojoUserIdleState.kIdle;
+ self.ScreenIdleState.LOCKED = MojoScreenIdleState.kLocked;
+ self.ScreenIdleState.UNLOCKED = MojoScreenIdleState.kUnlocked;
result.setBinding(binding);
return result;
}
-const interceptor = intercept();
\ No newline at end of file
+const interceptor = intercept();
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
index a8f5c896b1f..97d45d453bd 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
@@ -1,34 +1,34 @@
-"use strict";
+import {FillLightMode, ImageCapture, ImageCaptureReceiver, MeteringMode, RedEyeReduction} from '/gen/media/capture/mojom/image_capture.mojom.m.js';
-var ImageCaptureTest = (() => {
+self.ImageCaptureTest = (() => {
// Class that mocks ImageCapture interface defined in
// https://cs.chromium.org/chromium/src/media/capture/mojom/image_capture.mojom
class MockImageCapture {
constructor() {
this.interceptor_ =
- new MojoInterfaceInterceptor(media.mojom.ImageCapture.name);
+ new MojoInterfaceInterceptor(ImageCapture.$interfaceName);
this.interceptor_.oninterfacerequest =
- e => this.bindingSet_.addBinding(this, e.handle);
+ e => this.receiver_.$.bindHandle(e.handle);
this.interceptor_.start();
this.state_ = {
state: {
supportedWhiteBalanceModes: [
- media.mojom.MeteringMode.SINGLE_SHOT,
- media.mojom.MeteringMode.CONTINUOUS
+ MeteringMode.SINGLE_SHOT,
+ MeteringMode.CONTINUOUS
],
- currentWhiteBalanceMode: media.mojom.MeteringMode.CONTINUOUS,
+ currentWhiteBalanceMode: MeteringMode.CONTINUOUS,
supportedExposureModes: [
- media.mojom.MeteringMode.MANUAL,
- media.mojom.MeteringMode.SINGLE_SHOT,
- media.mojom.MeteringMode.CONTINUOUS
+ MeteringMode.MANUAL,
+ MeteringMode.SINGLE_SHOT,
+ MeteringMode.CONTINUOUS
],
- currentExposureMode: media.mojom.MeteringMode.MANUAL,
+ currentExposureMode: MeteringMode.MANUAL,
supportedFocusModes: [
- media.mojom.MeteringMode.MANUAL,
- media.mojom.MeteringMode.SINGLE_SHOT
+ MeteringMode.MANUAL,
+ MeteringMode.SINGLE_SHOT
],
- currentFocusMode: media.mojom.MeteringMode.MANUAL,
+ currentFocusMode: MeteringMode.MANUAL,
pointsOfInterest: [{
x: 0.4,
y: 0.6
@@ -115,7 +115,7 @@ var ImageCaptureTest = (() => {
supportsTorch: true,
torch: false,
- redEyeReduction: media.mojom.RedEyeReduction.CONTROLLABLE,
+ redEyeReduction: RedEyeReduction.CONTROLLABLE,
height: {
min: 240.0,
max: 2448.0,
@@ -128,18 +128,16 @@ var ImageCaptureTest = (() => {
current: 320.0,
step: 3.0
},
- fillLightMode: [
- media.mojom.FillLightMode.AUTO, media.mojom.FillLightMode.FLASH
- ],
+ fillLightMode: [FillLightMode.AUTO, FillLightMode.FLASH],
}
};
this.panTiltZoomPermissionStatus_ = null;
this.settings_ = null;
- this.bindingSet_ = new mojo.BindingSet(media.mojom.ImageCapture);
+ this.receiver_ = new ImageCaptureReceiver(this);
}
reset() {
- this.bindingSet_.closeAllBindings();
+ this.receiver_.$.close();
this.interceptor_.stop();
}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js b/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js
index 2e41f59ea80..fc89b11ea10 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js
@@ -1,14 +1,27 @@
-'use strict'
+import {MultipleDisplays, ScreenEnumeration, ScreenEnumerationReceiver} from '/gen/third_party/blink/public/mojom/screen_enumeration/screen_enumeration.mojom.m.js';
+import {BufferFormat} from '/gen/ui/gfx/mojom/buffer_types.mojom.m.js';
+import {ColorSpaceMatrixID, ColorSpacePrimaryID, ColorSpaceRangeID, ColorSpaceTransferID} from '/gen/ui/gfx/mojom/color_space.mojom.m.js';
+import {AccelerometerSupport, Rotation, TouchSupport} from '/gen/ui/display/mojom/display.mojom.m.js';
-var ScreenEnumerationTest = (() => {
+export const HelperTypes = {
+ AccelerometerSupport,
+ BufferFormat,
+ ColorSpaceMatrixID,
+ ColorSpacePrimaryID,
+ ColorSpaceRangeID,
+ ColorSpaceTransferID,
+ Rotation,
+ TouchSupport,
+};
+self.ScreenEnumerationTest = (() => {
class MockScreenEnumeration {
constructor() {
- this.bindingSet_ = new mojo.BindingSet(blink.mojom.ScreenEnumeration);
- this.interceptor_ = new MojoInterfaceInterceptor(blink.mojom.ScreenEnumeration.name);
- this.interceptor_.oninterfacerequest = e => {
- this.bindingSet_.addBinding(this, e.handle);
- }
+ this.receiver_ = new ScreenEnumerationReceiver(this);
+ this.interceptor_ =
+ new MojoInterfaceInterceptor(ScreenEnumeration.$interfaceName);
+ this.interceptor_.oninterfacerequest =
+ e => this.receiver_.$.bindHandle(e.handle);
this.reset();
this.interceptor_.start();
}
@@ -45,22 +58,22 @@ var ScreenEnumerationTest = (() => {
async getDisplays() {
if (!this.success_)
- return Promise.resolve({ result: undefined, });
- let value = new blink.mojom.Displays();
- value.displays = this.displays_;
- value.internalId = this.internalId_;
- value.primaryId = this.primaryId_;
- return Promise.resolve({ result: value, });
+ return {result: undefined};
+ const result = {
+ displays: this.displays_,
+ internalId: this.internalId_,
+ primaryId: this.primaryId_,
+ };
+ return {result};
}
- async hasMultipleDisplays() {
+ hasMultipleDisplays() {
if (!this.success_)
- return Promise.resolve({ result: blink.mojom.MultipleDisplays.kError });
- return Promise.resolve({
+ return {result: MultipleDisplays.kError};
+ return {
result: this.displays_.length > 1
- ? blink.mojom.MultipleDisplays.kTrue
- : blink.mojom.MultipleDisplays.kFalse,
- });
+ ? MultipleDisplays.kTrue : MultipleDisplays.kFalse,
+ };
}
}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-textdetection.js b/tests/wpt/web-platform-tests/resources/chromium/mock-textdetection.js
index 427ce38da21..52ca987e286 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-textdetection.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-textdetection.js
@@ -1,16 +1,15 @@
-"use strict";
-var TextDetectionTest = (() => {
+import {TextDetection, TextDetectionReceiver} from '/gen/services/shape_detection/public/mojom/textdetection.mojom.m.js';
+
+self.TextDetectionTest = (() => {
// Class that mocks TextDetection interface defined in
// https://cs.chromium.org/chromium/src/services/shape_detection/public/mojom/textdetection.mojom
class MockTextDetection {
constructor() {
- this.bindingSet_ =
- new mojo.BindingSet(shapeDetection.mojom.TextDetection);
-
+ this.receiver_ = new TextDetectionReceiver(this);
this.interceptor_ =
- new MojoInterfaceInterceptor(shapeDetection.mojom.TextDetection.name);
+ new MojoInterfaceInterceptor(TextDetection.$interfaceName);
this.interceptor_.oninterfacerequest =
- e => this.bindingSet_.addBinding(this, e.handle);
+ e => this.receiver_.$.bindHandle(e.handle);
this.interceptor_.start();
}
@@ -48,7 +47,7 @@ var TextDetectionTest = (() => {
}
reset() {
- this.bindingSet_.closeAllBindings();
+ this.receiver_.$.close();
this.interceptor_.stop();
}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
index 2665f3db6b3..6a0437a7975 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
@@ -1,10 +1,9 @@
-'use strict';
+import {NDEFErrorType, NDEFRecordTypeCategory, NFC, NFCReceiver} from '/gen/services/device/public/mojom/nfc.mojom.m.js';
// Converts between NDEFMessageInit https://w3c.github.io/web-nfc/#dom-ndefmessage
// and mojom.NDEFMessage structure, so that watch function can be tested.
function toMojoNDEFMessage(message) {
- let ndefMessage = new device.mojom.NDEFMessage();
- ndefMessage.data = [];
+ let ndefMessage = {data: []};
for (let record of message.records) {
ndefMessage.data.push(toMojoNDEFRecord(record));
}
@@ -12,16 +11,16 @@ function toMojoNDEFMessage(message) {
}
function toMojoNDEFRecord(record) {
- let nfcRecord = new device.mojom.NDEFRecord();
+ let nfcRecord = {};
// Simply checks the existence of ':' to decide whether it's an external
// type or a local type. As a mock, no need to really implement the validation
// algorithms for them.
if (record.recordType.startsWith(':')) {
- nfcRecord.category = device.mojom.NDEFRecordTypeCategory.kLocal;
+ nfcRecord.category = NDEFRecordTypeCategory.kLocal;
} else if (record.recordType.search(':') != -1) {
- nfcRecord.category = device.mojom.NDEFRecordTypeCategory.kExternal;
+ nfcRecord.category = NDEFRecordTypeCategory.kExternal;
} else {
- nfcRecord.category = device.mojom.NDEFRecordTypeCategory.kStandardized;
+ nfcRecord.category = NDEFRecordTypeCategory.kStandardized;
}
nfcRecord.recordType = record.recordType;
nfcRecord.mediaType = record.mediaType;
@@ -59,7 +58,7 @@ function toByteArray(data) {
// Compares NDEFRecords that were provided / received by the mock service.
// TODO: Use different getters to get received record data,
// see spec changes at https://github.com/w3c/web-nfc/pull/243.
-function compareNDEFRecords(providedRecord, receivedRecord) {
+self.compareNDEFRecords = function(providedRecord, receivedRecord) {
assert_equals(providedRecord.recordType, receivedRecord.recordType);
if (providedRecord.id === undefined) {
@@ -93,7 +92,7 @@ function compareNDEFRecords(providedRecord, receivedRecord) {
// Compares NDEFWriteOptions structures that were provided to API and
// received by the mock mojo service.
-function assertNDEFWriteOptionsEqual(provided, received) {
+self.assertNDEFWriteOptionsEqual = function(provided, received) {
if (provided.overwrite !== undefined)
assert_equals(provided.overwrite, !!received.overwrite);
else
@@ -102,7 +101,7 @@ function assertNDEFWriteOptionsEqual(provided, received) {
// Compares NDEFReaderOptions structures that were provided to API and
// received by the mock mojo service.
-function assertNDEFReaderOptionsEqual(provided, received) {
+self.assertNDEFReaderOptionsEqual = function(provided, received) {
if (provided.url !== undefined)
assert_equals(provided.url, received.url);
else
@@ -119,24 +118,20 @@ function assertNDEFReaderOptionsEqual(provided, received) {
}
function createNDEFError(type) {
- return {
- error: type != null ?
- new device.mojom.NDEFError({errorType: type, errorMessage: ''}) :
- null
- };
+ return {error: (type != null ? {errorType: type, errorMessage: ''} : null)};
}
-var WebNFCTest = (() => {
+self.WebNFCTest = (() => {
class MockNFC {
constructor() {
- this.bindingSet_ = new mojo.BindingSet(device.mojom.NFC);
+ this.receiver_ = new NFCReceiver(this);
- this.interceptor_ = new MojoInterfaceInterceptor(device.mojom.NFC.name);
+ this.interceptor_ = new MojoInterfaceInterceptor(NFC.$interfaceName);
this.interceptor_.oninterfacerequest = e => {
if (this.should_close_pipe_on_request_)
e.handle.close();
else
- this.bindingSet_.addBinding(this, e.handle);
+ this.receiver_.$.bindHandle(e.handle);
}
this.interceptor_.start();
@@ -174,10 +169,10 @@ var WebNFCTest = (() => {
} else if (this.is_formatted_tag_ && !options.overwrite) {
// Resolves with NotAllowedError if there are NDEF records on the device
// and overwrite is false.
- resolve(createNDEFError(device.mojom.NDEFErrorType.NOT_ALLOWED));
+ resolve(createNDEFError(NDEFErrorType.NOT_ALLOWED));
} else if (this.data_transfer_failed_) {
// Resolves with NetworkError if data transfer fails.
- resolve(createNDEFError(device.mojom.NDEFErrorType.IO_ERROR));
+ resolve(createNDEFError(NDEFErrorType.IO_ERROR));
} else {
resolve(createNDEFError(null));
}
@@ -223,9 +218,9 @@ var WebNFCTest = (() => {
getHWError() {
if (this.hw_status_ === NFCHWStatus.DISABLED)
- return createNDEFError(device.mojom.NDEFErrorType.NOT_READABLE);
+ return createNDEFError(NDEFErrorType.NOT_READABLE);
if (this.hw_status_ === NFCHWStatus.NOT_SUPPORTED)
- return createNDEFError(device.mojom.NDEFErrorType.NOT_SUPPORTED);
+ return createNDEFError(NDEFErrorType.NOT_SUPPORTED);
return null;
}
@@ -264,7 +259,7 @@ var WebNFCTest = (() => {
cancelPendingPushOperation() {
if (this.pending_promise_func_) {
this.pending_promise_func_(
- createNDEFError(device.mojom.NDEFErrorType.OPERATION_CANCELLED));
+ createNDEFError(NDEFErrorType.OPERATION_CANCELLED));
this.pending_promise_func_ = null;
}
@@ -318,15 +313,15 @@ var WebNFCTest = (() => {
simulateNonNDEFTagDiscovered() {
// Notify NotSupportedError to all active readers.
if (this.watchers_.length != 0) {
- this.client_.onError(new device.mojom.NDEFError({
- errorType: device.mojom.NDEFErrorType.NOT_SUPPORTED,
+ this.client_.onError({
+ errorType: NDEFErrorType.NOT_SUPPORTED,
errorMessage: ''
- }));
+ });
}
// Reject the pending push with NotSupportedError.
if (this.pending_promise_func_) {
this.pending_promise_func_(
- createNDEFError(device.mojom.NDEFErrorType.NOT_SUPPORTED));
+ createNDEFError(NDEFErrorType.NOT_SUPPORTED));
this.pending_promise_func_ = null;
}
}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index 01d2ec23396..2846adda6ab 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -1,13 +1,15 @@
-'use strict';
+import * as vrMojom from '/gen/device/vr/public/mojom/vr_service.mojom.m.js';
+import {GamepadHand, GamepadMapping} from '/gen/device/gamepad/public/mojom/gamepad.mojom.m.js';
// This polyfill library implements the WebXR Test API as specified here:
// https://github.com/immersive-web/webxr-test-api
-const defaultMojoFromFloor = new gfx.mojom.Transform();
-defaultMojoFromFloor.matrix = [1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- 0, -1.65, 0, 1];
+const defaultMojoFromFloor = {
+ matrix: [1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 0, -1.65, 0, 1]
+};
const default_stage_parameters = {
mojoFromFloor: defaultMojoFromFloor,
bounds: null
@@ -44,15 +46,22 @@ function getMatrixFromTransform(transform) {
m14, m24, m34, 1];
}
+function getPoseFromTransform(transform) {
+ const [px, py, pz] = transform.position;
+ const [ox, oy, oz, ow] = transform.orientation;
+ return {
+ position: {x: px, y: py, z: pz},
+ orientation: {x: ox, y: oy, z: oz, w: ow},
+ };
+}
+
function composeGFXTransform(fakeTransformInit) {
- const transform = new gfx.mojom.Transform();
- transform.matrix = getMatrixFromTransform(fakeTransformInit);
- return transform;
+ return {matrix: getMatrixFromTransform(fakeTransformInit)};
}
class ChromeXRTest {
constructor() {
- this.mockVRService_ = new MockVRService(mojo.frameInterfaces);
+ this.mockVRService_ = new MockVRService();
}
simulateDeviceConnection(init_params) {
@@ -60,7 +69,7 @@ class ChromeXRTest {
}
disconnectAllDevices() {
- this.mockVRService_.removeAllRuntimes(device);
+ this.mockVRService_.removeAllRuntimes();
return Promise.resolve();
}
@@ -103,13 +112,13 @@ class ChromeXRTest {
// Mock service implements the VRService mojo interface.
class MockVRService {
constructor() {
- this.bindingSet_ = new mojo.BindingSet(device.mojom.VRService);
+ this.receiver_ = new vrMojom.VRServiceReceiver(this);
this.runtimes_ = [];
this.interceptor_ =
- new MojoInterfaceInterceptor(device.mojom.VRService.name);
- this.interceptor_.oninterfacerequest = e =>
- this.bindingSet_.addBinding(this, e.handle);
+ new MojoInterfaceInterceptor(vrMojom.VRService.$interfaceName);
+ this.interceptor_.oninterfacerequest =
+ e => this.receiver_.$.bindHandle(e.handle);
this.interceptor_.start();
}
@@ -151,7 +160,7 @@ class MockVRService {
this.client_ = client;
}
- requestSession(sessionOptions, was_activation) {
+ requestSession(sessionOptions) {
const requests = [];
// Request a session from all the runtimes.
for (let i = 0; i < this.runtimes_.length; i++) {
@@ -163,31 +172,21 @@ class MockVRService {
for (let i = 0; i < results.length; i++) {
if (results[i].session) {
// Construct a dummy metrics recorder
- const metricsRecorderPtr = new device.mojom.XRSessionMetricsRecorderPtr();
- const metricsRecorderRequest = mojo.makeRequest(metricsRecorderPtr);
- const metricsRecorderBinding = new mojo.Binding(
- device.mojom.XRSessionMetricsRecorder, new MockXRSessionMetricsRecorder(), metricsRecorderRequest);
+ const metricsRecorderPtr = new vrMojom.XRSessionMetricsRecorderRemote();
+ metricsRecorderPtr.$.bindNewPipeAndPassReceiver().handle.close();
const success = {
session: results[i].session,
metricsRecorder: metricsRecorderPtr,
};
- return {
- result: {
- success : success,
- $tag : 0
- }
- };
+ return {result: {success}};
}
}
// If there were no successful results, returns a null session.
return {
- result: {
- failureReason : device.mojom.RequestSessionError.NO_RUNTIME_FOUND,
- $tag : 1
- }
+ result: {failureReason: vrMojom.RequestSessionError.NO_RUNTIME_FOUND}
};
});
}
@@ -216,17 +215,22 @@ class MockVRService {
});
}
+ setFramesThrottled(throttled) {
+ this.setFramesThrottledImpl(throttled);
+ }
+
+ // May be overridden by specific tests.
+ setFramesThrottledImpl(throttled) {}
+
// Only handles asynchronous calls to makeXrCompatible. Synchronous calls are
// not supported in Javascript.
makeXrCompatible() {
if (this.runtimes_.length == 0) {
- return Promise.resolve({
- xrCompatibleResult: device.mojom.XrCompatibleResult.kNoDeviceAvailable
- });
+ return {
+ xrCompatibleResult: vrMojom.XrCompatibleResult.kNoDeviceAvailable
+ };
}
- return Promise.resolve({
- xrCompatibleResult: device.mojom.XrCompatibleResult.kAlreadyCompatible
- });
+ return {xrCompatibleResult: vrMojom.XrCompatibleResult.kAlreadyCompatible};
}
}
@@ -324,36 +328,36 @@ class MockRuntime {
// Mapping from string feature names to the corresponding mojo types.
// This is exposed as a member for extensibility.
static featureToMojoMap = {
- 'viewer': device.mojom.XRSessionFeature.REF_SPACE_VIEWER,
- 'local': device.mojom.XRSessionFeature.REF_SPACE_LOCAL,
- 'local-floor': device.mojom.XRSessionFeature.REF_SPACE_LOCAL_FLOOR,
- 'bounded-floor': device.mojom.XRSessionFeature.REF_SPACE_BOUNDED_FLOOR,
- 'unbounded': device.mojom.XRSessionFeature.REF_SPACE_UNBOUNDED,
- 'hit-test': device.mojom.XRSessionFeature.HIT_TEST,
- 'dom-overlay': device.mojom.XRSessionFeature.DOM_OVERLAY,
- 'light-estimation': device.mojom.XRSessionFeature.LIGHT_ESTIMATION,
- 'anchors': device.mojom.XRSessionFeature.ANCHORS,
+ 'viewer': vrMojom.XRSessionFeature.REF_SPACE_VIEWER,
+ 'local': vrMojom.XRSessionFeature.REF_SPACE_LOCAL,
+ 'local-floor': vrMojom.XRSessionFeature.REF_SPACE_LOCAL_FLOOR,
+ 'bounded-floor': vrMojom.XRSessionFeature.REF_SPACE_BOUNDED_FLOOR,
+ 'unbounded': vrMojom.XRSessionFeature.REF_SPACE_UNBOUNDED,
+ 'hit-test': vrMojom.XRSessionFeature.HIT_TEST,
+ 'dom-overlay': vrMojom.XRSessionFeature.DOM_OVERLAY,
+ 'light-estimation': vrMojom.XRSessionFeature.LIGHT_ESTIMATION,
+ 'anchors': vrMojom.XRSessionFeature.ANCHORS,
};
static sessionModeToMojoMap = {
- "inline": device.mojom.XRSessionMode.kInline,
- "immersive-vr": device.mojom.XRSessionMode.kImmersiveVr,
- "immersive-ar": device.mojom.XRSessionMode.kImmersiveAr,
+ "inline": vrMojom.XRSessionMode.kInline,
+ "immersive-vr": vrMojom.XRSessionMode.kImmersiveVr,
+ "immersive-ar": vrMojom.XRSessionMode.kImmersiveAr,
};
static environmentBlendModeToMojoMap = {
- "opaque": device.mojom.XREnvironmentBlendMode.kOpaque,
- "alpha-blend": device.mojom.XREnvironmentBlendMode.kAlphaBlend,
- "additive": device.mojom.XREnvironmentBlendMode.kAdditive,
+ "opaque": vrMojom.XREnvironmentBlendMode.kOpaque,
+ "alpha-blend": vrMojom.XREnvironmentBlendMode.kAlphaBlend,
+ "additive": vrMojom.XREnvironmentBlendMode.kAdditive,
};
static interactionModeToMojoMap = {
- "screen-space": device.mojom.XRInteractionMode.kScreenSpace,
- "world-space": device.mojom.XRInteractionMode.kWorldSpace,
+ "screen-space": vrMojom.XRInteractionMode.kScreenSpace,
+ "world-space": vrMojom.XRInteractionMode.kWorldSpace,
};
constructor(fakeDeviceInit, service) {
- this.sessionClient_ = new device.mojom.XRSessionClientPtr();
+ this.sessionClient_ = null;
this.presentation_provider_ = new MockXRPresentationProvider();
this.pose_ = null;
@@ -375,11 +379,11 @@ class MockRuntime {
// Currently active transient hit test subscriptions.
this.transientHitTestSubscriptions_ = new Map();
// ID of the next subscription to be assigned.
- this.next_hit_test_id_ = 1;
+ this.next_hit_test_id_ = 1n;
this.anchor_controllers_ = new Map();
// ID of the next anchor to be assigned.
- this.next_anchor_id_ = 1;
+ this.next_anchor_id_ = 1n;
// Anchor creation callback (initially null, can be set by tests).
this.anchor_creation_callback_ = null;
@@ -406,10 +410,10 @@ class MockRuntime {
// Initialize DisplayInfo first to set the defaults, then override with
// anything from the deviceInit
- if (this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveVr)
- || this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {
+ if (this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveVr) ||
+ this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) {
this.displayInfo_ = this.getImmersiveDisplayInfo();
- } else if (this.supportedModes_.includes(device.mojom.XRSessionMode.kInline)) {
+ } else if (this.supportedModes_.includes(vrMojom.XRSessionMode.kInline)) {
this.displayInfo_ = this.getNonImmersiveDisplayInfo();
} else {
// This should never happen!
@@ -458,10 +462,11 @@ class MockRuntime {
if (blendMode in MockRuntime.environmentBlendModeToMojoMap) {
return MockRuntime.environmentBlendModeToMojoMap[blendMode];
} else {
- if (this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {
- return device.mojom.XREnvironmentBlendMode.kAdditive;
- } else if (this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveVr)) {
- return device.mojom.XREnvironmentBlendMode.kOpaque;
+ if (this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) {
+ return vrMojom.XREnvironmentBlendMode.kAdditive;
+ } else if (this.supportedModes_.includes(
+ vrMojom.XRSessionMode.kImmersiveVr)) {
+ return vrMojom.XREnvironmentBlendMode.kOpaque;
}
}
}
@@ -470,7 +475,7 @@ class MockRuntime {
if (interactionMode in MockRuntime.interactionModeToMojoMap) {
return MockRuntime.interactionModeToMojoMap[interactionMode];
} else {
- return device.mojom.XRInteractionMode.kWorldSpace;
+ return vrMojom.XRInteractionMode.kWorldSpace;
}
}
@@ -478,8 +483,9 @@ class MockRuntime {
disconnect() {
this.service_.removeRuntime(this);
this.presentation_provider_.Close();
- if (this.sessionClient_.ptr.isBound()) {
- this.sessionClient_.ptr.reset();
+ if (this.sessionClient_) {
+ this.sessionClient_.$.close();
+ this.sessionClient_ = null;
}
return Promise.resolve();
@@ -498,7 +504,7 @@ class MockRuntime {
}
}
- if (changed && this.sessionClient_.ptr.isBound()) {
+ if (changed && this.sessionClient_) {
this.sessionClient_.onChanged(this.displayInfo_);
}
}
@@ -528,16 +534,16 @@ class MockRuntime {
let mojoState = null;
switch (visibilityState) {
case "visible":
- mojoState = device.mojom.XRVisibilityState.VISIBLE;
+ mojoState = vrMojom.XRVisibilityState.VISIBLE;
break;
case "visible-blurred":
- mojoState = device.mojom.XRVisibilityState.VISIBLE_BLURRED;
+ mojoState = vrMojom.XRVisibilityState.VISIBLE_BLURRED;
break;
case "hidden":
- mojoState = device.mojom.XRVisibilityState.HIDDEN;
+ mojoState = vrMojom.XRVisibilityState.HIDDEN;
break;
}
- if (mojoState) {
+ if (mojoState && this.sessionClient_) {
this.sessionClient_.onVisibilityStateChanged(mojoState);
}
}
@@ -567,11 +573,9 @@ class MockRuntime {
this.stageParameters_.bounds = this.bounds_;
}
- this.stageParameters_.mojoFromFloor = new gfx.mojom.Transform();
-
// floorOrigin is passed in as mojoFromFloor.
- this.stageParameters_.mojoFromFloor.matrix =
- getMatrixFromTransform(floorOrigin);
+ this.stageParameters_.mojoFromFloor =
+ {matrix: getMatrixFromTransform(floorOrigin)};
this.onStageParametersUpdated();
}
@@ -707,7 +711,7 @@ class MockRuntime {
if (feature in MockRuntime.featureToMojoMap) {
return MockRuntime.featureToMojoMap[feature];
} else {
- return device.mojom.XRSessionFeature.INVALID;
+ return vrMojom.XRSessionFeature.INVALID;
}
}
@@ -715,7 +719,7 @@ class MockRuntime {
for (let i = 0; i < supportedFeatures.length; i++) {
const feature = convertFeatureToMojom(supportedFeatures[i]);
- if (feature !== device.mojom.XRSessionFeature.INVALID) {
+ if (feature !== vrMojom.XRSessionFeature.INVALID) {
this.supportedFeatures_.push(feature);
}
}
@@ -774,11 +778,12 @@ class MockRuntime {
inputState: input_state,
timeDelta: {
// window.performance.now() is in milliseconds, so convert to microseconds.
- microseconds: window.performance.now() * 1000,
+ microseconds: BigInt(Math.floor(window.performance.now() * 1000)),
},
frameId: this.next_frame_id_,
bufferHolder: null,
bufferSize: {},
+ renderingTimeRatio: 0,
stageParameters: this.stageParameters_,
stageParametersId: this.stageParametersId_,
};
@@ -794,7 +799,7 @@ class MockRuntime {
resolve({frameData});
};
- if(this.sessionOptions_.mode == device.mojom.XRSessionMode.kInline) {
+ if(this.sessionOptions_.mode == vrMojom.XRSessionMode.kInline) {
// Inline sessions should not have a delay introduced since it causes them
// to miss a vsync blink-side and delays propagation of changes that happened
// within a rAFcb by one frame (e.g. setViewerOrigin() calls would take 2 frames
@@ -809,37 +814,46 @@ class MockRuntime {
}
getEnvironmentIntegrationProvider(environmentProviderRequest) {
- this.environmentProviderBinding_ = new mojo.AssociatedBinding(
- device.mojom.XREnvironmentIntegrationProvider, this,
- environmentProviderRequest);
+ if (this.environmentProviderReceiver_) {
+ this.environmentProviderReceiver_.$.close();
+ }
+ this.environmentProviderReceiver_ =
+ new vrMojom.XREnvironmentIntegrationProviderReceiver(this);
+ this.environmentProviderReceiver_.$.bindHandle(
+ environmentProviderRequest.handle);
}
+ setInputSourceButtonListener(listener) { listener.$.close(); }
+
// Note that if getEnvironmentProvider hasn't finished running yet this will
// be undefined. It's recommended that you allow a successful task to post
// first before attempting to close.
closeEnvironmentIntegrationProvider() {
- this.environmentProviderBinding_.close();
+ if (this.environmentProviderReceiver_) {
+ this.environmentProviderReceiver_.$.close();
+ }
}
closeDataProvider() {
- this.dataProviderBinding_.close();
+ this.closeEnvironmentIntegrationProvider();
+ this.dataProviderReceiver_.$.close();
this.sessionOptions_ = null;
}
// XREnvironmentIntegrationProvider implementation:
subscribeToHitTest(nativeOriginInformation, entityTypes, ray) {
- if (!this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {
+ if (!this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) {
// Reject outside of AR.
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
- subscriptionId : 0
+ result : vrMojom.SubscribeToHitTestResult.FAILURE_GENERIC,
+ subscriptionId : 0n
});
}
if (!this._nativeOriginKnown(nativeOriginInformation)) {
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
- subscriptionId : 0
+ result : vrMojom.SubscribeToHitTestResult.FAILURE_GENERIC,
+ subscriptionId : 0n
});
}
@@ -856,24 +870,24 @@ class MockRuntime {
this.hitTestSubscriptions_.set(id, { nativeOriginInformation, entityTypes, ray, controller });
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.SUCCESS,
+ result : vrMojom.SubscribeToHitTestResult.SUCCESS,
subscriptionId : id
});
} else {
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
- subscriptionId : 0
+ result : vrMojom.SubscribeToHitTestResult.FAILURE_GENERIC,
+ subscriptionId : 0n
});
}
});
}
subscribeToHitTestForTransientInput(profileName, entityTypes, ray){
- if (!this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {
+ if (!this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) {
// Reject outside of AR.
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
- subscriptionId : 0
+ result : vrMojom.SubscribeToHitTestResult.FAILURE_GENERIC,
+ subscriptionId : 0n
});
}
@@ -891,13 +905,13 @@ class MockRuntime {
this.transientHitTestSubscriptions_.set(id, { profileName, entityTypes, ray, controller });
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.SUCCESS,
+ result : vrMojom.SubscribeToHitTestResult.SUCCESS,
subscriptionId : id
});
} else {
return Promise.resolve({
- result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
- subscriptionId : 0
+ result : vrMojom.SubscribeToHitTestResult.FAILURE_GENERIC,
+ subscriptionId : 0n
});
}
});
@@ -922,8 +936,8 @@ class MockRuntime {
return new Promise((resolve) => {
if(this.anchor_creation_callback_ == null) {
resolve({
- result : device.mojom.CreateAnchorResult.FAILURE,
- anchorId : 0
+ result : vrMojom.CreateAnchorResult.FAILURE,
+ anchorId : 0n
});
return;
@@ -932,8 +946,8 @@ class MockRuntime {
const mojoFromNativeOrigin = this._getMojoFromNativeOrigin(nativeOriginInformation);
if(mojoFromNativeOrigin == null) {
resolve({
- result : device.mojom.CreateAnchorResult.FAILURE,
- anchorId : 0
+ result : vrMojom.CreateAnchorResult.FAILURE,
+ anchorId : 0n
});
return;
@@ -962,22 +976,22 @@ class MockRuntime {
anchorController.id = anchor_id;
resolve({
- result : device.mojom.CreateAnchorResult.SUCCESS,
+ result : vrMojom.CreateAnchorResult.SUCCESS,
anchorId : anchor_id
});
} else {
// The test has rejected anchor creation.
resolve({
- result : device.mojom.CreateAnchorResult.FAILURE,
- anchorId : 0
+ result : vrMojom.CreateAnchorResult.FAILURE,
+ anchorId : 0n
});
}
})
.catch(() => {
// The test threw an error, treat anchor creation as failed.
resolve({
- result : device.mojom.CreateAnchorResult.FAILURE,
- anchorId : 0
+ result : vrMojom.CreateAnchorResult.FAILURE,
+ anchorId : 0n
});
});
});
@@ -989,21 +1003,25 @@ class MockRuntime {
// Not supported yet.
resolve({
- result : device.mojom.CreateAnchorResult.FAILURE,
- anchorId : 0
+ result : vrMojom.CreateAnchorResult.FAILURE,
+ anchorId : 0n,
});
});
}
+ detachAnchor(anchorId) {}
+
// Utility function
requestRuntimeSession(sessionOptions) {
return this.runtimeSupportsSession(sessionOptions).then((result) => {
// The JavaScript bindings convert c_style_names to camelCase names.
- const options = new device.mojom.XRPresentationTransportOptions();
- options.transportMethod =
- device.mojom.XRPresentationTransportMethod.SUBMIT_AS_MAILBOX_HOLDER;
- options.waitForTransferNotification = true;
- options.waitForRenderNotification = true;
+ const options = {
+ transportMethod:
+ vrMojom.XRPresentationTransportMethod.SUBMIT_AS_MAILBOX_HOLDER,
+ waitForTransferNotification: true,
+ waitForRenderNotification: true,
+ waitForGpuFence: false,
+ };
let submit_frame_sink;
if (result.supportsSession) {
@@ -1013,13 +1031,15 @@ class MockRuntime {
transportOptions: options
};
- const dataProviderPtr = new device.mojom.XRFrameDataProviderPtr();
- const dataProviderRequest = mojo.makeRequest(dataProviderPtr);
- this.dataProviderBinding_ = new mojo.Binding(
- device.mojom.XRFrameDataProvider, this, dataProviderRequest);
+ const dataProviderPtr = new vrMojom.XRFrameDataProviderRemote();
+ this.dataProviderReceiver_ =
+ new vrMojom.XRFrameDataProviderReceiver(this);
+ this.dataProviderReceiver_.$.bindHandle(
+ dataProviderPtr.$.bindNewPipeAndPassReceiver().handle);
this.sessionOptions_ = sessionOptions;
- const clientReceiver = mojo.makeRequest(this.sessionClient_);
+ this.sessionClient_ = new vrMojom.XRSessionClientRemote();
+ const clientReceiver = this.sessionClient_.$.bindNewPipeAndPassReceiver();
const enabled_features = [];
for (let i = 0; i < sessionOptions.requiredFeatures.length; i++) {
@@ -1044,6 +1064,7 @@ class MockRuntime {
displayInfo: this.displayInfo_,
enabledFeatures: enabled_features,
deviceConfig: {
+ usesInputEventing: false,
defaultFramebufferScale: this.defaultFramebufferScale_,
supportsViewportScaling: true
},
@@ -1066,17 +1087,17 @@ class MockRuntime {
// Private functions - utilities:
_nativeOriginKnown(nativeOriginInformation){
- if (nativeOriginInformation.$tag == device.mojom.XRNativeOriginInformation.Tags.inputSourceId) {
+ if (nativeOriginInformation.inputSourceId !== undefined) {
if (!this.input_sources_.has(nativeOriginInformation.inputSourceId)) {
// Unknown input source.
return false;
}
return true;
- } else if (nativeOriginInformation.$tag == device.mojom.XRNativeOriginInformation.Tags.referenceSpaceType) {
+ } else if (nativeOriginInformation.referenceSpaceType !== undefined) {
// Bounded_floor & unbounded ref spaces are not yet supported for AR:
- if (nativeOriginInformation.referenceSpaceType == device.mojom.XRReferenceSpaceType.kUnbounded
- || nativeOriginInformation.referenceSpaceType == device.mojom.XRReferenceSpaceType.kBoundedFlor) {
+ if (nativeOriginInformation.referenceSpaceType == vrMojom.XRReferenceSpaceType.kUnbounded
+ || nativeOriginInformation.referenceSpaceType == vrMojom.XRReferenceSpaceType.kBoundedFloor) {
return false;
}
@@ -1091,24 +1112,21 @@ class MockRuntime {
// Modifies passed in frameData to add anchor information.
_calculateAnchorInformation(frameData) {
- if (!this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {
+ if (!this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) {
return;
}
- frameData.anchorsData = new device.mojom.XRAnchorsData();
- frameData.anchorsData.allAnchorsIds = [];
- frameData.anchorsData.updatedAnchorsData = [];
-
+ frameData.anchorsData = {allAnchorsIds: [], updatedAnchorsData: []};
for(const [id, controller] of this.anchor_controllers_) {
frameData.anchorsData.allAnchorsIds.push(id);
// Send the entire anchor data over if there was a change since last GetFrameData().
if(controller.dirty) {
- const anchorData = new device.mojom.XRAnchorData();
- anchorData.id = id;
+ const anchorData = {id};
if(!controller.paused) {
- anchorData.mojoFromAnchor = XRMathHelper.decomposeRigidTransform(
- controller.getAnchorOrigin());
+ anchorData.mojoFromAnchor = getPoseFromTransform(
+ XRMathHelper.decomposeRigidTransform(
+ controller.getAnchorOrigin()));
}
controller.markProcessed();
@@ -1133,14 +1151,12 @@ class MockRuntime {
// Modifies passed in frameData to add hit test results.
_calculateHitTestResults(frameData) {
- if (!this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {
+ if (!this.supportedModes_.includes(vrMojom.XRSessionMode.kImmersiveAr)) {
return;
}
- frameData.hitTestSubscriptionResults = new device.mojom.XRHitTestSubscriptionResultsData();
- frameData.hitTestSubscriptionResults.results = [];
- frameData.hitTestSubscriptionResults.transientInputResults = [];
-
+ frameData.hitTestSubscriptionResults = {results: [],
+ transientInputResults: []};
if (!this.world_) {
return;
}
@@ -1156,21 +1172,16 @@ class MockRuntime {
);
const results = this._hitTestWorld(mojo_ray_origin, mojo_ray_direction, subscription.entityTypes);
-
- const result = new device.mojom.XRHitTestSubscriptionResultData();
- result.subscriptionId = id;
- result.hitTestResults = results;
-
- frameData.hitTestSubscriptionResults.results.push(result);
+ frameData.hitTestSubscriptionResults.results.push(
+ {subscriptionId: id, hitTestResults: results});
}
// Transient hit test:
const mojo_from_viewer = this._getMojoFromViewer();
for (const [id, subscription] of this.transientHitTestSubscriptions_) {
- const result = new device.mojom.XRHitTestTransientInputSubscriptionResultData();
- result.subscriptionId = id;
- result.inputSourceIdToHitTestResults = new Map();
+ const result = {subscriptionId: id,
+ inputSourceIdToHitTestResults: new Map()};
// Find all input sources that match the profile name:
const matching_input_sources = Array.from(this.input_sources_.values())
@@ -1241,8 +1252,8 @@ class MockRuntime {
// Returns array of XRHitResults, each entry will be decorated with the distance from the ray origin (along the ray).
_hitTestRegion(region, origin, direction, entityTypes) {
const regionNameToMojoEnum = {
- "point":device.mojom.EntityTypeForHitTest.POINT,
- "plane":device.mojom.EntityTypeForHitTest.PLANE,
+ "point": vrMojom.EntityTypeForHitTest.POINT,
+ "plane": vrMojom.EntityTypeForHitTest.PLANE,
"mesh":null
};
@@ -1333,7 +1344,7 @@ class MockRuntime {
return null;
}
- const hitResult = new device.mojom.XRHitResult();
+ const hitResult = {planeId: 0n};
hitResult.distance = distance; // Extend the object with additional information used by higher layers.
// It will not be serialized over mojom.
@@ -1359,8 +1370,8 @@ class MockRuntime {
matrix[14] = intersection_point.z;
matrix[15] = 1;
- hitResult.mojoFromResult = XRMathHelper.decomposeRigidTransform(matrix);
-
+ hitResult.mojoFromResult = getPoseFromTransform(
+ XRMathHelper.decomposeRigidTransform(matrix));
return hitResult;
}
}
@@ -1385,28 +1396,28 @@ class MockRuntime {
_getMojoFromNativeOrigin(nativeOriginInformation) {
const mojo_from_viewer = this._getMojoFromViewer();
- if (nativeOriginInformation.$tag == device.mojom.XRNativeOriginInformation.Tags.inputSourceId) {
+ if (nativeOriginInformation.inputSourceId !== undefined) {
if (!this.input_sources_.has(nativeOriginInformation.inputSourceId)) {
return null;
} else {
const inputSource = this.input_sources_.get(nativeOriginInformation.inputSourceId);
return inputSource._getMojoFromInputSource(mojo_from_viewer);
}
- } else if (nativeOriginInformation.$tag == device.mojom.XRNativeOriginInformation.Tags.referenceSpaceType) {
+ } else if (nativeOriginInformation.referenceSpaceType !== undefined) {
switch (nativeOriginInformation.referenceSpaceType) {
- case device.mojom.XRReferenceSpaceType.kLocal:
+ case vrMojom.XRReferenceSpaceType.kLocal:
return XRMathHelper.identity();
- case device.mojom.XRReferenceSpaceType.kLocalFloor:
+ case vrMojom.XRReferenceSpaceType.kLocalFloor:
if (this.stageParameters_ == null || this.stageParameters_.mojoFromFloor == null) {
console.warn("Standing transform not available.");
return null;
}
return this.stageParameters_.mojoFromFloor.matrix;
- case device.mojom.XRReferenceSpaceType.kViewer:
+ case vrMojom.XRReferenceSpaceType.kViewer:
return mojo_from_viewer;
- case device.mojom.XRReferenceSpaceType.kBoundedFlor:
+ case vrMojom.XRReferenceSpaceType.kBoundedFloor:
return null;
- case device.mojom.XRReferenceSpaceType.kUnbounded:
+ case vrMojom.XRReferenceSpaceType.kUnbounded:
return null;
default:
throw new TypeError("Unrecognized XRReferenceSpaceType!");
@@ -1418,12 +1429,6 @@ class MockRuntime {
}
}
-class MockXRSessionMetricsRecorder {
- reportFeatureUsed(feature) {
- // Do nothing
- }
-}
-
class MockXRInputSource {
constructor(fakeInputSourceInit, id, pairedDevice) {
this.source_id_ = id;
@@ -1633,9 +1638,10 @@ class MockXRInputSource {
// Helpers for Mojom
getInputSourceState() {
- const input_state = new device.mojom.XRInputSourceState();
+ const input_state = {};
input_state.sourceId = this.source_id_;
+ input_state.isAuxiliary = false;
input_state.primaryInputPressed = this.primary_input_pressed_;
input_state.primaryInputClicked = this.primary_input_clicked_;
@@ -1658,17 +1664,17 @@ class MockXRInputSource {
input_state.emulatedPosition = this.emulated_position_;
if (this.desc_dirty_) {
- const input_desc = new device.mojom.XRInputSourceDescription();
+ const input_desc = {};
switch (this.target_ray_mode_) {
case 'gaze':
- input_desc.targetRayMode = device.mojom.XRTargetRayMode.GAZING;
+ input_desc.targetRayMode = vrMojom.XRTargetRayMode.GAZING;
break;
case 'tracked-pointer':
- input_desc.targetRayMode = device.mojom.XRTargetRayMode.POINTING;
+ input_desc.targetRayMode = vrMojom.XRTargetRayMode.POINTING;
break;
case 'screen':
- input_desc.targetRayMode = device.mojom.XRTargetRayMode.TAPPING;
+ input_desc.targetRayMode = vrMojom.XRTargetRayMode.TAPPING;
break;
default:
throw new Error('Unhandled target ray mode ' + this.target_ray_mode_);
@@ -1676,13 +1682,13 @@ class MockXRInputSource {
switch (this.handedness_) {
case 'left':
- input_desc.handedness = device.mojom.XRHandedness.LEFT;
+ input_desc.handedness = vrMojom.XRHandedness.LEFT;
break;
case 'right':
- input_desc.handedness = device.mojom.XRHandedness.RIGHT;
+ input_desc.handedness = vrMojom.XRHandedness.RIGHT;
break;
default:
- input_desc.handedness = device.mojom.XRHandedness.NONE;
+ input_desc.handedness = vrMojom.XRHandedness.NONE;
break;
}
@@ -1716,7 +1722,7 @@ class MockXRInputSource {
// Since we store mojo_from_input, we need to invert it here before
// multiplying.
let input_from_mojo = XRMathHelper.inverse(mojo_from_input);
- input_desc.inputFromPointer = new gfx.mojom.Transform();
+ input_desc.inputFromPointer = {};
input_desc.inputFromPointer.matrix =
XRMathHelper.mul4x4(input_from_mojo, this.mojo_from_pointer_.matrix);
@@ -1745,23 +1751,23 @@ class MockXRInputSource {
// everything to reasonable defaults that tests can override.
const gamepad = {
connected: true,
- id: "",
- timestamp: 0,
+ id: [],
+ timestamp: 0n,
axes: [],
buttons: [],
- mapping: "xr-standard",
- display_id: 0,
+ mapping: GamepadMapping.GamepadMappingStandard,
+ displayId: 0,
};
switch (this.handedness_) {
case 'left':
- gamepad.hand = device.mojom.GamepadHand.GamepadHandLeft;
+ gamepad.hand = GamepadHand.GamepadHandLeft;
break;
case 'right':
- gamepad.hand = device.mojom.GamepadHand.GamepadHandRight;
+ gamepad.hand = GamepadHand.GamepadHandRight;
break;
default:
- gamepad.hand = device.mojom.GamepadHand.GamepadHandNone;
+ gamepad.hand = GamepadHand.GamepadHandNone;
break;
}
@@ -1832,29 +1838,29 @@ class MockXRInputSource {
// Mojo helper classes
class MockXRPresentationProvider {
constructor() {
- this.binding_ = new mojo.Binding(device.mojom.XRPresentationProvider, this);
-
+ this.receiver_ = null;
this.submit_frame_count_ = 0;
this.missing_frame_count_ = 0;
}
- bindProvider(request) {
- const providerPtr = new device.mojom.XRPresentationProviderPtr();
- const providerRequest = mojo.makeRequest(providerPtr);
+ bindProvider() {
+ const provider = new vrMojom.XRPresentationProviderRemote();
- this.binding_.close();
-
- this.binding_ = new mojo.Binding(
- device.mojom.XRPresentationProvider, this, providerRequest);
-
- return providerPtr;
+ if (this.receiver_) {
+ this.receiver_.$.close();
+ }
+ this.receiver_ = new vrMojom.XRPresentationProviderReceiver(this);
+ this.receiver_.$.bindHandle(provider.$.bindNewPipeAndPassReceiver().handle);
+ return provider;
}
getClientReceiver() {
- this.submitFrameClient_ = new device.mojom.XRPresentationClientPtr();
- return mojo.makeRequest(this.submitFrameClient_);
+ this.submitFrameClient_ = new vrMojom.XRPresentationClientRemote();
+ return this.submitFrameClient_.$.bindNewPipeAndPassReceiver();
}
+ updateLayerBounds(frameId, leftBounds, rightBounds, sourceSize) {}
+
// XRPresentationProvider mojo implementation
submitFrameMissing(frameId, mailboxHolder, timeWaited) {
this.missing_frame_count_++;
@@ -1872,10 +1878,23 @@ class MockXRPresentationProvider {
this.submitFrameClient_.onSubmitFrameRendered();
}
+ submitFrameWithTextureHandle(frameId, texture) {}
+
+ submitFrameDrawnIntoTexture(frameId, syncToken, timeWaited) {}
+
// Utility methods
Close() {
- this.binding_.close();
+ if (this.receiver_) {
+ this.receiver_.$.close();
+ }
}
}
+// Export these into the global object as a side effect of importing this
+// module.
+self.ChromeXRTest = ChromeXRTest;
+self.MockRuntime = MockRuntime;
+self.MockVRService = MockVRService;
+self.SubscribeToHitTestResult = vrMojom.SubscribeToHitTestResult;
+
navigator.xr.test = new ChromeXRTest();
diff --git a/tests/wpt/web-platform-tests/resources/test-only-api.js b/tests/wpt/web-platform-tests/resources/test-only-api.js
index ef66e0e733f..a66eb44ede7 100644
--- a/tests/wpt/web-platform-tests/resources/test-only-api.js
+++ b/tests/wpt/web-platform-tests/resources/test-only-api.js
@@ -29,72 +29,3 @@ function loadScript(path) {
return p;
}
}
-
-/**
- * A helper for Chromium-based browsers to load Mojo JS bindings
- *
- * This is an async function that works in both workers and windows. It first
- * loads mojo_bindings.js, disables automatic dependency loading, and loads all
- * resources sequentially. The promise resolves if everything loads
- * successfully, or rejects if any exception is raised. If testharness.js is
- * used, an uncaught exception will terminate the test with a harness error
- * (unless `allow_uncaught_exception` is true), which is usually the desired
- * behaviour.
- *
- * This function also works with Blink web tests loaded from file://, in which
- * case file:// will be prepended to all '/gen/...' URLs.
- *
- * Only call this function if isChromiumBased === true.
- *
- * @param {Array.} resources - A list of scripts to load: Mojo JS
- * bindings should be of the form '/gen/../*.mojom.js' or
- * '/gen/../*.mojom-lite.js' (requires `lite` to be true); the order does not
- * matter. Do not include 'mojo_bindings.js' or 'mojo_bindings_lite.js'.
- * @param {boolean=} lite - Whether the lite bindings (*.mojom-lite.js) are used
- * (default is false).
- * @returns {Promise}
- */
-async function loadMojoResources(resources, lite = false) {
- if (!isChromiumBased) {
- throw new Error('MojoJS not enabled; start Chrome with --enable-blink-features=MojoJS,MojoJSTest');
- }
- if (resources.length == 0) {
- return;
- }
-
- let genPrefix = '';
- if (self.location.pathname.includes('/web_tests/')) {
- // Blink internal web tests
- genPrefix = 'file://';
- }
-
- for (const path of resources) {
- // We want to load mojo_bindings.js separately to set mojo.config.
- if (path.endsWith('/mojo_bindings.js')) {
- throw new Error('Do not load mojo_bindings.js explicitly.');
- }
- if (path.endsWith('/mojo_bindings_lite.js')) {
- throw new Error('Do not load mojo_bindings_lite.js explicitly.');
- }
- if (lite) {
- if (! /^\/gen\/.*\.mojom-lite\.js$/.test(path)) {
- throw new Error(`Unrecognized resource path: ${path}`);
- }
- } else {
- if (! /^\/gen\/.*\.mojom\.js$/.test(path)) {
- throw new Error(`Unrecognized resource path: ${path}`);
- }
- }
- }
-
- if (lite) {
- await loadScript(genPrefix + '/gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js');
- } else {
- await loadScript(genPrefix + '/gen/layout_test_data/mojo/public/js/mojo_bindings.js');
- mojo.config.autoLoadMojomDeps = false;
- }
-
- for (const path of resources) {
- await loadScript(genPrefix + path);
- }
-}
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html
index 5ce457cafd4..a02f40fd785 100644
--- a/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html
+++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/idlharness/IdlInterface/test_primary_interface_of.html
@@ -34,7 +34,7 @@ Object.defineProperty(window.Foo.prototype, "constructor", {
configurable: true,
value: window.Foo
});
-Foo.__proto__ = FooParent;
+Object.setPrototypeOf(Foo, FooParent);
Foo.prototype[Symbol.toStringTag] = "Foo";
var idlArray = new IdlArray();
diff --git a/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js b/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js
index 7d5d5221943..d0e0d9c56bc 100644
--- a/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js
+++ b/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js
@@ -7,19 +7,10 @@
// --enable-blink-features=MojoJS,MojoJSTest
async function loadChromiumResources() {
- const chromiumResources = [
- '/gen/ui/gfx/mojom/color_space.mojom.js',
- '/gen/ui/gfx/mojom/buffer_types.mojom.js',
- '/gen/ui/gfx/mojom/display_color_spaces.mojom.js',
- '/gen/ui/gfx/geometry/mojom/geometry.mojom.js',
- '/gen/ui/display/mojom/display.mojom.js',
- '/gen/third_party/blink/public/mojom/screen_enumeration/screen_enumeration.mojom.js'
- ];
-
- await loadMojoResources(chromiumResources);
await loadScript('/resources/testdriver.js');
await loadScript('/resources/testdriver-vendor.js');
- await loadScript('/resources/chromium/mock-screenenumeration.js');
+ const {HelperTypes} = await import('/resources/chromium/mock-screenenumeration.js');
+ self.HelperTypes = HelperTypes;
}
async function initialize_screen_enumeration_tests() {
@@ -57,28 +48,24 @@ function screen_enumeration_test(func, name, properties) {
function makeDisplay(id, bounds, work_area, scale_factor) {
let myColorSpace = fillColorSpaceVector();
let myBufferFormat = fillBufferFormatVector();
- let newDisplay = new display.mojom.Display({id: id,
- bounds: new gfx.mojom.Rect({x: bounds.x, y: bounds.y,
- width: bounds.width,
- height: bounds.height}),
- sizeInPixels: new gfx.mojom.Size({width: bounds.width,
- height: bounds.height}),
- maximumCursorSize: new gfx.mojom.Size({width: 20, height: 20}),
- workArea: new gfx.mojom.Rect({x: work_area.x, y: work_area.y,
- width: work_area.width,
- height: work_area.height}),
- deviceScaleFactor: scale_factor,
- rotation: display.mojom.Rotation.VALUE_0,
- touchSupport: display.mojom.TouchSupport.UNAVAILABLE,
- accelerometerSupport: display.mojom.AccelerometerSupport.UNAVAILABLE,
- colorSpaces: new gfx.mojom.DisplayColorSpaces({colorSpaces: myColorSpace,
- bufferFormats: myBufferFormat,
- sdrWhiteLevel: 1.0}),
- colorDepth: 10,
- depthPerComponent: 10,
- isMonochrome: true,
- displayFrequency: 120});
- return newDisplay;
+ return {
+ id,
+ bounds,
+ sizeInPixels: {width: bounds.width, height: bounds.height},
+ maximumCursorSize: {width: 20, height: 20},
+ workArea: work_area,
+ deviceScaleFactor: scale_factor,
+ rotation: HelperTypes.Rotation.VALUE_0,
+ touchSupport: HelperTypes.TouchSupport.UNAVAILABLE,
+ accelerometerSupport: HelperTypes.AccelerometerSupport.UNAVAILABLE,
+ colorSpaces: {colorSpaces: myColorSpace,
+ bufferFormats: myBufferFormat,
+ sdrWhiteLevel: 1.0},
+ colorDepth: 10,
+ depthPerComponent: 10,
+ isMonochrome: true,
+ displayFrequency: 120
+ };
}
// Function to construct color space vector.
@@ -86,13 +73,14 @@ function makeDisplay(id, bounds, work_area, scale_factor) {
function fillColorSpaceVector() {
let colorSpaceVector = [];
for (let i = 0; i < 6; i++) {
- let colorSpace = new gfx.mojom.ColorSpace({
- primaries: gfx.mojom.ColorSpacePrimaryID.BT709,
- transfer: gfx.mojom.ColorSpaceTransferID.BT709,
- matrix: gfx.mojom.ColorSpaceMatrixID.BT709,
- range: gfx.mojom.ColorSpaceRangeID.LIMITED,
- customPrimaryMatrix: fillCustomPrimaryMatrix(),
- transferParams: fillTransferParams()});
+ let colorSpace = {
+ primaries: HelperTypes.ColorSpacePrimaryID.BT709,
+ transfer: HelperTypes.ColorSpaceTransferID.BT709,
+ matrix: HelperTypes.ColorSpaceMatrixID.BT709,
+ range: HelperTypes.ColorSpaceRangeID.LIMITED,
+ customPrimaryMatrix: fillCustomPrimaryMatrix(),
+ transferParams: fillTransferParams()
+ };
colorSpaceVector.push(colorSpace);
}
return colorSpaceVector;
@@ -115,12 +103,12 @@ function fillTransferParams () {
// Function to construct buffer format vector.
// Values are purely random but mandatory.
function fillBufferFormatVector() {
-
- let bufferFormat = [gfx.mojom.BufferFormat.RGBA_8888,
- gfx.mojom.BufferFormat.RGBA_8888,
- gfx.mojom.BufferFormat.RGBA_8888,
- gfx.mojom.BufferFormat.RGBA_8888,
- gfx.mojom.BufferFormat.RGBA_8888,
- gfx.mojom.BufferFormat.RGBA_8888];
+ const BufferFormat = HelperTypes.BufferFormat;
+ let bufferFormat = [BufferFormat.RGBA_8888,
+ BufferFormat.RGBA_8888,
+ BufferFormat.RGBA_8888,
+ BufferFormat.RGBA_8888,
+ BufferFormat.RGBA_8888,
+ BufferFormat.RGBA_8888];
return bufferFormat;
}
diff --git a/tests/wpt/web-platform-tests/serial/resources/automation.js b/tests/wpt/web-platform-tests/serial/resources/automation.js
index 98f67fb6282..e88fdb1a9d2 100644
--- a/tests/wpt/web-platform-tests/serial/resources/automation.js
+++ b/tests/wpt/web-platform-tests/serial/resources/automation.js
@@ -11,14 +11,7 @@
//
// --enable-blink-features=MojoJS,MojoJSTest
-async function loadChromiumResources() {
- const chromiumResources = [
- '/gen/mojo/public/mojom/base/unguessable_token.mojom.js',
- '/gen/services/device/public/mojom/serial.mojom.js',
- '/gen/third_party/blink/public/mojom/serial/serial.mojom.js',
- ];
- await loadMojoResources(chromiumResources);
-}
+let fakeSerialService = undefined;
// Returns a SerialPort instance and associated FakeSerialPort instance.
async function getFakeSerialPort(fake) {
@@ -34,16 +27,14 @@ async function getFakeSerialPort(fake) {
return { port, fakePort };
}
-let fakeSerialService = undefined;
-
function serial_test(func, name, properties) {
promise_test(async (test) => {
assert_implements(navigator.serial, 'missing navigator.serial');
if (fakeSerialService === undefined) {
// Try loading a polyfill for the fake serial service.
if (isChromiumBased) {
- await loadChromiumResources();
- await loadScript('/resources/chromium/fake-serial.js');
+ const fakes = await import('/resources/chromium/fake-serial.js');
+ fakeSerialService = fakes.fakeSerialService;
}
}
assert_implements(fakeSerialService, 'missing fakeSerialService after initialization');
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/fetch-on-the-right-interface.https.any.js b/tests/wpt/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/fetch-on-the-right-interface.https.any.js
index e98a04b6a09..5ca5f65680c 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/fetch-on-the-right-interface.https.any.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/fetch-on-the-right-interface.https.any.js
@@ -6,9 +6,9 @@ test(function() {
'instance should not have "fetch" method as its property.');
assert_inherits(self, 'fetch', 'ServiceWorkerGlobalScope should ' +
'inherit "fetch" method.');
- assert_own_property(self.__proto__.__proto__, 'fetch',
+ assert_own_property(Object.getPrototypeOf(Object.getPrototypeOf(self)), 'fetch',
'WorkerGlobalScope should have "fetch" propery in its prototype.');
- assert_equals(self.fetch, self.__proto__.__proto__.fetch,
+ assert_equals(self.fetch, Object.getPrototypeOf(Object.getPrototypeOf(self)).fetch,
'ServiceWorkerGlobalScope.fetch should be the same as ' +
'WorkerGlobalScope.fetch.');
}, 'Fetch method on the right interface');
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/immutable-prototype-serviceworker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/immutable-prototype-serviceworker.js
index 346b998ceac..d8a94ad46be 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/immutable-prototype-serviceworker.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/immutable-prototype-serviceworker.js
@@ -2,9 +2,9 @@ function prototypeChain(global) {
let result = [];
while (global !== null) {
let thrown = false;
- let next = global.__proto__;
+ let next = Object.getPrototypeOf(global);
try {
- global.__proto__ = {};
+ Object.setPrototypeOf(global, {});
result.push('mutable');
} catch (e) {
result.push('immutable');
diff --git a/tests/wpt/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html b/tests/wpt/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html
index 4327e5d03e0..e22de321670 100644
--- a/tests/wpt/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html
+++ b/tests/wpt/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html
@@ -14,7 +14,7 @@
test(function () {
assert_true('HTMLSlotElement' in window, 'HTMLSlotElement must be defined on window');
- assert_equals(HTMLSlotElement.prototype.__proto__, HTMLElement.prototype, 'HTMLSlotElement should inherit from HTMLElement');
+ assert_equals(Object.getPrototypeOf(HTMLSlotElement.prototype), HTMLElement.prototype, 'HTMLSlotElement should inherit from HTMLElement');
assert_true(document.createElement('slot') instanceof HTMLSlotElement, 'slot element should be an instance of HTMLSlotElement');
assert_true(document.createElement('slot') instanceof HTMLElement, 'slot element should be an instance of HTMLElement');
}, 'HTMLSlotElement must be defined on window');
diff --git a/tests/wpt/web-platform-tests/shadow-dom/ShadowRoot-interface.html b/tests/wpt/web-platform-tests/shadow-dom/ShadowRoot-interface.html
index e95b1d9542e..de7ac91f250 100644
--- a/tests/wpt/web-platform-tests/shadow-dom/ShadowRoot-interface.html
+++ b/tests/wpt/web-platform-tests/shadow-dom/ShadowRoot-interface.html
@@ -17,7 +17,7 @@ test(function () {
}, 'Check the existence of ShadowRoot interface');
test(function () {
- assert_equals(ShadowRoot.prototype.__proto__, DocumentFragment.prototype, 'ShadowRoot must inherit from DocumentFragment');
+ assert_equals(Object.getPrototypeOf(ShadowRoot.prototype), DocumentFragment.prototype, 'ShadowRoot must inherit from DocumentFragment');
}, 'ShadowRoot must inherit from DocumentFragment');
test(function () {
diff --git a/tests/wpt/web-platform-tests/shape-detection/detection-options.https.html b/tests/wpt/web-platform-tests/shape-detection/detection-options.https.html
index db870e8e470..4b79da2a6e8 100644
--- a/tests/wpt/web-platform-tests/shape-detection/detection-options.https.html
+++ b/tests/wpt/web-platform-tests/shape-detection/detection-options.https.html
@@ -36,8 +36,7 @@ detection_test("BarcodeDetectionTest", async (t, detectionTest) => {
barcodeDetectionResult = await detectorWithOptions.detect(img);
assert_array_equals(
mock.getFormats(),
- [shapeDetection.mojom.BarcodeFormat.CODE_128,
- shapeDetection.mojom.BarcodeFormat.QR_CODE],
+ [BarcodeFormat.CODE_128, BarcodeFormat.QR_CODE],
"formats");
const invalidFormats = [
diff --git a/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js b/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
index 05424de893d..1b4949b8f6b 100644
--- a/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
+++ b/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js
@@ -10,23 +10,9 @@
// --enable-blink-features=MojoJS,MojoJSTest
async function loadChromiumResources() {
- const prefix = '/gen/services/shape_detection/public/mojom';
- const chromiumResources = [
- '/gen/mojo/public/mojom/base/big_buffer.mojom.js',
- '/gen/skia/public/mojom/image_info.mojom.js',
- '/gen/skia/public/mojom/bitmap.mojom.js',
- '/gen/ui/gfx/geometry/mojom/geometry.mojom.js',
- `${prefix}/barcodedetection.mojom.js`,
- `${prefix}/barcodedetection_provider.mojom.js`,
- `${prefix}/facedetection.mojom.js`,
- `${prefix}/facedetection_provider.mojom.js`,
- `${prefix}/textdetection.mojom.js`,
- ];
-
- await loadMojoResources(chromiumResources);
- await loadScript('/resources/chromium/mock-barcodedetection.js');
- await loadScript('/resources/chromium/mock-facedetection.js');
- await loadScript('/resources/chromium/mock-textdetection.js');
+ await import('/resources/chromium/mock-barcodedetection.js');
+ await import('/resources/chromium/mock-facedetection.js');
+ await import('/resources/chromium/mock-textdetection.js');
}
/**
@@ -81,7 +67,7 @@ function detection_test(detectionTestName, func, name, properties) {
}
function getArrayBufferFromBigBuffer(bigBuffer) {
- if (bigBuffer.$tag == mojoBase.mojom.BigBuffer.Tags.bytes) {
+ if (bigBuffer.bytes !== undefined) {
return new Uint8Array(bigBuffer.bytes).buffer;
}
return bigBuffer.sharedMemory.bufferHandle.mapBuffer(0,
diff --git a/tests/wpt/web-platform-tests/storage/buckets/buckets_basic.tentative.https.any.js b/tests/wpt/web-platform-tests/storage/buckets/buckets_basic.tentative.https.any.js
deleted file mode 100644
index fffb9af10cc..00000000000
--- a/tests/wpt/web-platform-tests/storage/buckets/buckets_basic.tentative.https.any.js
+++ /dev/null
@@ -1,84 +0,0 @@
-// META: title=Buckets API: Basic tests for openOrCreate(), keys(), delete().
-// META: global=window,worker
-
-'use strict';
-
-// This test is for initial IDL version optimized for debugging.
-// Split and add extensive testing once implementation for the endpoints are
-// added and method definitions are more defined.
-promise_test(async testCase => {
- await navigator.storageBuckets.openOrCreate('bucket_name');
- testCase.add_cleanup(async () => {
- await navigator.storageBuckets.delete('bucket_name');
- });
-
- const buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 1);
- assert_equals(buckets[0], 'bucket_name');
-}, 'openOrCreate() stores bucket name');
-
-promise_test(async testCase => {
- await navigator.storageBuckets.openOrCreate('bucket_name');
- await navigator.storageBuckets.openOrCreate('bucket_name');
- testCase.add_cleanup(async () => {
- await navigator.storageBuckets.delete('bucket_name');
- });
-
- const buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 1);
- assert_equals(buckets[0], 'bucket_name');
-}, 'openOrCreate() does not store duplicate bucket name');
-
-promise_test(async testCase => {
- await navigator.storageBuckets.openOrCreate('bucket_name3');
- await navigator.storageBuckets.openOrCreate('bucket_name1');
- await navigator.storageBuckets.openOrCreate('bucket_name2');
- testCase.add_cleanup(async () => {
- await navigator.storageBuckets.delete('bucket_name1');
- await navigator.storageBuckets.delete('bucket_name2');
- await navigator.storageBuckets.delete('bucket_name3');
- });
-
- const buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 3);
- assert_equals(buckets[0], 'bucket_name1');
- assert_equals(buckets[1], 'bucket_name2');
- assert_equals(buckets[2], 'bucket_name3');
-}, 'keys() lists all stored bucket names alphabetically');
-
-promise_test(async testCase => {
- await navigator.storageBuckets.openOrCreate('bucket_name1');
- await navigator.storageBuckets.openOrCreate('bucket_name2');
- testCase.add_cleanup(async () => {
- await navigator.storageBuckets.delete('bucket_name1');
- await navigator.storageBuckets.delete('bucket_name2');
- });
-
- let buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 2);
- assert_equals(buckets[0], 'bucket_name1');
- assert_equals(buckets[1], 'bucket_name2');
-
- await navigator.storageBuckets.delete('bucket_name1');
-
- buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 1);
- assert_equals(buckets[0], 'bucket_name2');
-}, 'delete() removes stored bucket name');
-
-promise_test(async testCase => {
- await navigator.storageBuckets.openOrCreate('bucket_name');
- testCase.add_cleanup(async () => {
- await navigator.storageBuckets.delete('bucket_name');
- });
-
- let buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 1);
- assert_equals(buckets[0], 'bucket_name');
-
- await navigator.storageBuckets.delete('does-not-exist');
-
- buckets = await navigator.storageBuckets.keys();
- assert_equals(buckets.length, 1);
- assert_equals(buckets[0], 'bucket_name');
-}, 'delete() does nothing if bucket name does not exist');
diff --git a/tests/wpt/web-platform-tests/svg/crashtests/chrome-bug-1172059.html b/tests/wpt/web-platform-tests/svg/crashtests/chrome-bug-1172059.html
new file mode 100644
index 00000000000..1c788ab3d81
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/crashtests/chrome-bug-1172059.html
@@ -0,0 +1,3 @@
+
+This test should not crash.
+
diff --git a/tests/wpt/web-platform-tests/svg/crashtests/support/used.svg b/tests/wpt/web-platform-tests/svg/crashtests/support/used.svg
new file mode 100644
index 00000000000..37ce3f57629
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/crashtests/support/used.svg
@@ -0,0 +1,3 @@
+
diff --git a/tests/wpt/web-platform-tests/svg/extensibility/interfaces/foreignObject-graphics.svg b/tests/wpt/web-platform-tests/svg/extensibility/interfaces/foreignObject-graphics.svg
index 000c107b53b..7745e91f0a3 100644
--- a/tests/wpt/web-platform-tests/svg/extensibility/interfaces/foreignObject-graphics.svg
+++ b/tests/wpt/web-platform-tests/svg/extensibility/interfaces/foreignObject-graphics.svg
@@ -12,7 +12,7 @@
diff --git a/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg b/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg
index c8d187cd3d2..b9e62177cb9 100644
--- a/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg
+++ b/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg
@@ -14,7 +14,7 @@
assert_equals(window.SVGAnimatedPathData, undefined);
var track = document.getElementById('track');
- assert_equals(track.__proto__, SVGPathElement.prototype);
+ assert_equals(Object.getPrototypeOf(track), SVGPathElement.prototype);
assert_equals(track.pathSegList, undefined);
assert_equals(track.normalizedPathSegList, undefined);
assert_equals(track.animatedPathSegList, undefined);
diff --git a/tests/wpt/web-platform-tests/svg/struct/UnknownElement/interface.svg b/tests/wpt/web-platform-tests/svg/struct/UnknownElement/interface.svg
index 862e5fde273..987f20c5e4c 100644
--- a/tests/wpt/web-platform-tests/svg/struct/UnknownElement/interface.svg
+++ b/tests/wpt/web-platform-tests/svg/struct/UnknownElement/interface.svg
@@ -13,7 +13,7 @@
diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh b/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh
index 366dcf66de8..a4d5cbb7de1 100755
--- a/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh
+++ b/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh
@@ -6,9 +6,9 @@ WPT_ROOT=$SCRIPT_DIR/../..
cd $WPT_ROOT
run_applicable_tox () {
- # instead of just running TOXENV (e.g., py27)
+ # instead of just running TOXENV (e.g., py38)
# run all environments that start with TOXENV
- # (e.g., py27-firefox as well as py27)
+ # (e.g., py38-firefox as well as py38)
local OLD_TOXENV="$TOXENV"
unset TOXENV
local RUN_ENVS=$(tox -l | grep "^${OLD_TOXENV}\(\-\|\$\)" | tr "\n" ",")
diff --git a/tests/wpt/web-platform-tests/tools/py27-flake8.ini b/tests/wpt/web-platform-tests/tools/py27-flake8.ini
deleted file mode 100644
index dd6ceb6fea4..00000000000
--- a/tests/wpt/web-platform-tests/tools/py27-flake8.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-[flake8]
-select = E,W,F,N
-# E128: continuation line under-indented for visual indent
-# E129: visually indented line with same indent as next logical line
-# E226: missing whitespace around arithmetic operator
-# E231: missing whitespace after ‘,’, ‘;’, or ‘:’
-# E251: unexpected spaces around keyword / parameter equals
-# E265: block comment should start with ‘# ‘
-# E302: expected 2 blank lines, found 0
-# E303: too many blank lines (3)
-# E305: expected 2 blank lines after end of function or class
-# E402: module level import not at top of file
-# E731: do not assign a lambda expression, use a def
-# W504: line break after binary operator
-# W601: .has_key() is deprecated, use ‘in’
-# W605: invalid escape sequence
-# W606: 'async' and 'await' are reserved keywords starting with Python 3.7
-# N801: class names should use CapWords convention
-# N802: function name should be lowercase
-# N806: variable in function should be lowercase
-ignore = E128,E129,E226,E231,E251,E265,E302,E303,E305,E402,E731,W504,W601,W605,W606,N801,N802,N806
-exclude =
- .tox,
- pywebsocket,
- quic,
- third_party,
- wptserve/docs/conf.py,
- wptserve/tests/functional/docroot/invalid.py
-max-line-length = 141
diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini
index c72d728239a..f3b0c4dd3ef 100644
--- a/tests/wpt/web-platform-tests/tools/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py27,py35,py36,py37,py38,{py27,py35,py36,py37,py38}-flake8,py38-mypy2,{py35,py38}-mypy3
+envlist = py36,py37,py38,{py36,py37,py38}-flake8,{py36,py38}-mypy3
skipsdist=True
skip_missing_interpreters = False
@@ -24,14 +24,6 @@ passenv =
PY_COLORS
TASKCLUSTER_ROOT_URL
-[testenv:py27-flake8]
-deps = -rrequirements_flake8.txt
-commands = flake8 --append-config={toxinidir}/py27-flake8.ini {posargs}
-
-[testenv:py35-flake8]
-deps = -rrequirements_flake8.txt
-commands = flake8 --append-config={toxinidir}/py3-flake8.ini {posargs}
-
[testenv:py36-flake8]
deps = -rrequirements_flake8.txt
commands = flake8 --append-config={toxinidir}/py3-flake8.ini {posargs}
@@ -44,18 +36,6 @@ commands = flake8 --append-config={toxinidir}/py3-flake8.ini {posargs}
deps = -rrequirements_flake8.txt
commands = flake8 --append-config={toxinidir}/py3-flake8.ini {posargs}
-[testenv:py38-mypy2]
-deps = -rrequirements_mypy.txt
-changedir = {toxinidir}/..
-commands =
- mypy --config-file={toxinidir}/mypy.ini --no-incremental --py2 -p tools.manifest -p tools.lint -p tools.gitignore
-
-[testenv:py35-mypy3]
-deps = -rrequirements_mypy.txt
-changedir = {toxinidir}/..
-commands =
- mypy --config-file={toxinidir}/mypy.ini --no-incremental -p tools.manifest -p tools.lint -p tools.gitignore
-
[testenv:py38-mypy3]
deps = -rrequirements_mypy.txt
changedir = {toxinidir}/..
diff --git a/tests/wpt/web-platform-tests/tools/wave/tox.ini b/tests/wpt/web-platform-tests/tools/wave/tox.ini
index 2feec8d1a4a..c70a46cc3c9 100644
--- a/tests/wpt/web-platform-tests/tools/wave/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/wave/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py27,py35,py36,py37,py38
+envlist = py36,py37,py38
skipsdist=True
skip_missing_interpreters = False
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tox.ini b/tests/wpt/web-platform-tests/tools/wpt/tox.ini
index 03f4ab5aba0..c2f745b5704 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/wpt/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py27,py35,py36,py37,py38
+envlist = py36,py37,py38
skipsdist=True
skip_missing_interpreters = False
diff --git a/tests/wpt/web-platform-tests/tools/wpt/wpt.py b/tests/wpt/web-platform-tests/tools/wpt/wpt.py
index 9bc6ce6ce9e..d47c91ce316 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/wpt.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/wpt.py
@@ -50,10 +50,6 @@ def parse_args(argv, commands=load_commands()):
dest="skip_venv_setup",
help="Whether to use the virtualenv as-is. Must set --venv as well")
parser.add_argument("--debug", action="store_true", help="Run the debugger in case of an exception")
- parser.add_argument("--py3", action="store_true",
- help="Run with Python 3 (requires a `python3` binary on the PATH)")
- parser.add_argument("--py2", action="store_true",
- help="Run with Python 2 (requires a `python2` binary on the PATH)")
subparsers = parser.add_subparsers(dest="command")
for command, props in iteritems(commands):
subparsers.add_parser(command, help=props["help"], add_help=False)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
index b39b5eb7e95..2b9bca17fa4 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
@@ -2,7 +2,7 @@
xfail_strict=true
[tox]
-envlist = py27-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},{py35,py36,py37,py38}-base
+envlist = py38-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},{py36,py37}-base
skip_missing_interpreters = False
[testenv]
diff --git a/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.html b/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.html
index f6b9798f502..64b04656d35 100644
--- a/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/Node-multiple-arguments.tentative.html
@@ -14,7 +14,7 @@
createScript: t => t,
});
function stringify(arg) {
- return "textContent" in arg.__proto__ ? arg.textContent : arg.toString()
+ return "textContent" in Object.getPrototypeOf(arg) ? arg.textContent : arg.toString()
}
// This test case mirrors the block-Node-multiple-arguments case except
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html
index f76b3587512..c3e7671534e 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html
@@ -15,7 +15,7 @@
createScript: t => t,
});
function stringify(arg) {
- return "textContent" in arg.__proto__ ? arg.textContent : arg.toString()
+ return "textContent" in Object.getPrototypeOf(arg) ? arg.textContent : arg.toString()
}
// Test all combinations of:
diff --git a/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js b/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js
index f9878373e5e..d482911350b 100644
--- a/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js
+++ b/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js
@@ -29,7 +29,7 @@ test(() => {
test(() => {
var params = new URLSearchParams('');
assert_true(params != null, 'constructor returned non-null value.');
- assert_equals(params.__proto__, URLSearchParams.prototype, 'expected URLSearchParams.prototype as prototype.');
+ assert_equals(Object.getPrototypeOf(params), URLSearchParams.prototype, 'expected URLSearchParams.prototype as prototype.');
}, "URLSearchParams constructor, empty string as argument")
test(() => {
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index 659f74ed8b1..35154e287d8 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -9,14 +9,9 @@
// --enable-blink-features=MojoJS,MojoJSTest
async function loadChromiumResources() {
- const chromiumResources = [
- '/gen/services/device/public/mojom/nfc.mojom.js',
- ];
-
- await loadMojoResources(chromiumResources);
await loadScript('/resources/testdriver.js');
await loadScript('/resources/testdriver-vendor.js');
- await loadScript('/resources/chromium/nfc-mock.js');
+ await import('/resources/chromium/nfc-mock.js');
}
async function initialize_nfc_tests() {
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-capture-video.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-capture-video.https.html
new file mode 100644
index 00000000000..8d2579602a8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-capture-video.https.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-relay-canvas.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-relay-canvas.https.html
new file mode 100644
index 00000000000..6e9cd068220
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-relay-canvas.https.html
@@ -0,0 +1,84 @@
+
+
+
+Relay canvas via PeerConnections
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
index fc4ca7d0d37..8ca7918298b 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
@@ -204,42 +204,19 @@ function forEachWebxrObject(callback) {
// Code for loading test API in Chromium.
async function loadChromiumResources() {
- const chromiumResources = [
- '/gen/mojo/public/mojom/base/time.mojom.js',
- '/gen/mojo/public/mojom/base/shared_memory.mojom.js',
- '/gen/mojo/public/mojom/base/unguessable_token.mojom.js',
- '/gen/gpu/ipc/common/sync_token.mojom.js',
- '/gen/gpu/ipc/common/mailbox.mojom.js',
- '/gen/gpu/ipc/common/mailbox_holder.mojom.js',
- '/gen/ui/gfx/geometry/mojom/geometry.mojom.js',
- '/gen/ui/gfx/mojom/native_handle_types.mojom.js',
- '/gen/ui/gfx/mojom/buffer_types.mojom.js',
- '/gen/ui/gfx/mojom/color_space.mojom.js',
- '/gen/ui/gfx/mojom/display_color_spaces.mojom.js',
- '/gen/ui/gfx/mojom/gpu_fence_handle.mojom.js',
- '/gen/ui/gfx/mojom/transform.mojom.js',
- '/gen/ui/display/mojom/display.mojom.js',
- '/gen/device/gamepad/public/mojom/gamepad.mojom.js',
- '/gen/device/vr/public/mojom/vr_service.mojom.js',
- ];
+ await loadScript('/resources/chromium/webxr-test-math-helper.js');
+ await import('/resources/chromium/webxr-test.js');
+ await loadScript('/resources/testdriver.js');
+ await loadScript('/resources/testdriver-vendor.js');
- let extraResources = [
- '/resources/chromium/webxr-test-math-helper.js',
- '/resources/chromium/webxr-test.js',
- '/resources/testdriver.js',
- '/resources/testdriver-vendor.js',
- ];
// This infrastructure is also used by Chromium-specific internal tests that
// may need additional resources (e.g. internal API extensions), this allows
// those tests to rely on this infrastructure while ensuring that no tests
// make it into public WPTs that rely on APIs outside of the webxr test API.
if (typeof(additionalChromiumResources) !== 'undefined') {
- extraResources = extraResources.concat(additionalChromiumResources);
- }
-
- await loadMojoResources(chromiumResources);
- for (const path of extraResources) {
- await loadScript(path);
+ for (const path of additionalChromiumResources) {
+ await loadScript(path);
+ }
}
xr_debug = navigator.xr.test.Debug;
diff --git a/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js b/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js
index faf48cf9386..e47fd065355 100644
--- a/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js
+++ b/tests/wpt/web-platform-tests/workers/SharedWorker-MessageEvent-source.any.js
@@ -1,6 +1,6 @@
// META: global=sharedworker
const t = async_test("Make sure that MessageEvent.source is properly set in connect event.");
onconnect = t.step_func_done((event) => {
- assert_equals(event.__proto__, MessageEvent.prototype);
+ assert_equals(Object.getPrototypeOf(event), MessageEvent.prototype);
assert_equals(event.source, event.ports[0]);
});
diff --git a/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js b/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js
index 5a4a6aa1137..297fe6c58b4 100644
--- a/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js
+++ b/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js
@@ -2,6 +2,6 @@
test(() => {
const proto = {};
assert_equals(String(Object.getPrototypeOf(WorkerLocation)).replace(/\n/g, " ").replace(/\s\s+/g, " "), "function () { [native code] }");
- WorkerLocation.__proto__ = proto;
+ Object.setPrototypeOf(WorkerLocation, proto);
assert_equals(Object.getPrototypeOf(WorkerLocation), proto);
}, 'Tests that setting the proto of a built in constructor is not reset.');
diff --git a/tests/wpt/web-platform-tests/wpt b/tests/wpt/web-platform-tests/wpt
index 36d0bed48ed..eac84b62e97 100755
--- a/tests/wpt/web-platform-tests/wpt
+++ b/tests/wpt/web-platform-tests/wpt
@@ -1,34 +1,11 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
if __name__ == "__main__":
import sys
- from tools.wpt import wpt
- args, extra = wpt.parse_args(sys.argv[1:])
- commands = wpt.load_commands()
- py3only = commands[args.command]["py3only"]
+ if (sys.version_info.major < 3 or
+ (sys.version_info.major == 3 and sys.version_info.minor < 6)):
+ sys.stderr.write("wpt requires Python 3.6 or higher\n")
+ sys.exit(1)
- if (args.py2) and sys.version_info.major > 2:
- if py3only:
- sys.stderr.write("This command only works with Python 3\n")
- sys.exit(1)
- from subprocess import call
- try:
- sys.exit(call(['python2'] + sys.argv))
- except OSError as e:
- if e.errno == 2:
- sys.stderr.write("python2 is needed to run this command\n")
- sys.exit(1)
- else:
- raise
- elif (not args.py2) and sys.version_info.major < 3:
- from subprocess import call
- try:
- sys.exit(call(['python3'] + sys.argv))
- except OSError as e:
- if e.errno == 2:
- sys.stderr.write("python3 is needed to run this command\n")
- sys.exit(1)
- else:
- raise
- else:
- wpt.main()
+ from tools.wpt import wpt
+ wpt.main()
diff --git a/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm b/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm
index c27a4482cd2..cb2edb777dd 100644
--- a/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm
+++ b/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm
@@ -39,7 +39,7 @@
function runTest(name, value){
test(function(){
if (name == "all") {
- assert_equals(client.responseXML[name].__proto__, value.prototype)
+ assert_equals(Object.getPrototypeOf(client.responseXML[name]), value.prototype)
} else {
assert_equals(client.responseXML[name], value)
}