[sensor] Set permissions in WPT tests
Thanks to the new set_permission method on test_runner, this CL
makes sure the sensor WPT tests with first granted permission and
adds tests for sensor permission status.
Change-Id: Id72e60f92043986c3fe3517faf0c79716a1f03c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2104654
Reviewed-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Commit-Queue: Wanming Lin <wanming.lin@intel.com>
Cr-Commit-Position: refs/heads/master@{#751207}
diff --git a/generic-sensor/generic-sensor-permission.https.html b/generic-sensor/generic-sensor-permission.https.html
new file mode 100644
index 0000000..a86ed5d
--- /dev/null
+++ b/generic-sensor/generic-sensor-permission.https.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>sensor: permission</title>
+<link rel="help" href="https://w3c.github.io/sensors/"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+
+"use strict";
+
+for (const entry of ['accelerometer', 'gyroscope',
+ 'magnetometer', 'ambient-light-sensor']) {
+ promise_test(async t => {
+ await test_driver.set_permission({ name: entry }, 'denied', false);
+
+ const status = await navigator.permissions.query({ name: entry });
+ assert_class_string(status, "PermissionStatus");
+ assert_equals(status.state, "denied");
+ }, `Deny ${entry} permission should work.`);
+
+ promise_test(async t => {
+ await test_driver.set_permission({ name: entry }, 'granted', false);
+
+ const status = await navigator.permissions.query({ name: entry });
+ assert_class_string(status, "PermissionStatus");
+ assert_equals(status.state, "granted");
+ }, `Grant ${entry} permission should work.`);
+};
+
+</script>
\ No newline at end of file
diff --git a/generic-sensor/resources/generic-sensor-helpers.js b/generic-sensor/resources/generic-sensor-helpers.js
index afc2fad..ad11e58 100644
--- a/generic-sensor/resources/generic-sensor-helpers.js
+++ b/generic-sensor/resources/generic-sensor-helpers.js
@@ -20,6 +20,8 @@
'/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',
+ '/resources/testdriver.js',
+ '/resources/testdriver-vendor.js',
'/resources/chromium/generic_sensor_mocks.js',
];
diff --git a/resources/chromium/generic_sensor_mocks.js b/resources/chromium/generic_sensor_mocks.js
index ac6043d..8f13420 100644
--- a/resources/chromium/generic_sensor_mocks.js
+++ b/resources/chromium/generic_sensor_mocks.js
@@ -309,18 +309,15 @@
Object.freeze(this); // Make it immutable.
}
- initialize() {
+ async initialize() {
if (testInternal.initialized)
throw new Error('Call reset() before initialize().');
- if (window.testRunner) {
- // Grant sensor permissions for Chromium testrunner.
- ['accelerometer', 'gyroscope',
- 'magnetometer', 'ambient-light-sensor'].forEach((entry) => {
- window.testRunner.setPermission(entry, 'granted',
- location.origin, location.origin);
- });
- }
+ // Grant sensor permissions for Chromium testdriver.
+ for (const entry of ['accelerometer', 'gyroscope',
+ 'magnetometer', 'ambient-light-sensor']) {
+ await test_driver.set_permission({ name: entry }, 'granted', false);
+ };
testInternal.sensorProvider = new MockSensorProvider;
testInternal.initialized = true;