// META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js 'use strict'; // The Device Orientation spec does not fully integrate with the Permissions // spec and does not list the permissions that are expected for // requestPermission() to work. The list below was based on the permission // tokens corresponding to the sensors used to implement support for motion // events. They also match the feature policy tokens required by both Blink and // WebKit. const permissionDescriptorNames = ['accelerometer', 'gyroscope']; promise_test(async (t) => { await Promise.all(permissionDescriptorNames.map( name => test_driver.set_permission({name}, 'granted'))); const permission = await DeviceMotionEvent.requestPermission(); assert_equals(permission, 'granted'); }, 'requestPermission() returns "granted" for granted permissions without user activation'); promise_test(async (t) => { await Promise.all(permissionDescriptorNames.map( name => test_driver.set_permission({name}, 'granted'))); return test_driver.bless('enable user activation', async () => { const permission = await DeviceMotionEvent.requestPermission(); assert_equals(permission, 'granted'); }); }, 'requestPermission() returns "granted" for granted permissions with user activation'); promise_test(async (t) => { await Promise.all(permissionDescriptorNames.map( name => test_driver.set_permission({name}, 'denied'))); const permission = await DeviceMotionEvent.requestPermission(); assert_equals(permission, 'denied'); }, 'requestPermission() returns "denied" for denied permissions without user activation'); promise_test(async (t) => { await Promise.all(permissionDescriptorNames.map( name => test_driver.set_permission({name}, 'denied'))); return test_driver.bless('enable user activation', async () => { const permission = await DeviceMotionEvent.requestPermission(); assert_equals(permission, 'denied'); }); }, 'requestPermission() returns "denied" for denied permissions with user activation');