bluetooth-reporting.https.html (3248B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src='/resources/testharness.js'></script> 5 <script src='/resources/testharnessreport.js'></script> 6 <script src='/resources/testdriver.js'></script> 7 <script src='/resources/testdriver-vendor.js'></script> 8 <script src='/bluetooth/resources/bluetooth-test.js'></script> 9 <script src='../resources/permissions-policy-report-json.js'></script> 10 </head> 11 <body> 12 <script> 13 14 function check_report_format([reports, observer]) { 15 const report = reports[0]; 16 assert_equals(report.type, "permissions-policy-violation"); 17 assert_equals(report.url, document.location.href); 18 assert_equals(report.body.featureId, "bluetooth"); 19 assert_equals(report.body.sourceFile, document.location.href); 20 assert_equals(typeof report.body.lineNumber, "number"); 21 assert_equals(typeof report.body.columnNumber, "number"); 22 assert_equals(report.body.disposition, "enforce"); 23 check_report_json(report); 24 }; 25 26 bluetooth_test(() => { 27 promise_test(async t => { 28 const report = new Promise(resolve => { 29 new ReportingObserver((reports, observer) => resolve([reports, observer]), 30 {types: ['permissions-policy-violation']}).observe(); 31 }); 32 33 try { 34 await navigator.bluetooth.getAvailability().then(availability => { 35 assert_false(availability); 36 }); 37 } catch(e) { 38 assert_unreached('getAvailability should return false when Bluetooth access is disallowed.'); 39 } 40 check_report_format(await report); 41 }, 'getAvailability in bluetooth reporting mode'); 42 43 promise_test(async t => { 44 const report = new Promise(resolve => { 45 new ReportingObserver((reports, observer) => resolve([reports, observer]), 46 {types: ['permissions-policy-violation']}).observe(); 47 }); 48 49 await promise_rejects_dom( 50 t, 'SecurityError', navigator.bluetooth.getDevices(), 51 'Bluetooth access should not be allowed in this document.'); 52 check_report_format(await report); 53 }, 'getDevices in bluetooth reporting mode'); 54 55 promise_test(async t => { 56 const report = new Promise(resolve => { 57 new ReportingObserver((reports, observer) => resolve([reports, observer]), 58 {types: ['permissions-policy-violation']}).observe(); 59 }); 60 61 await test_driver.bless('Activate document for bluetooth.requestDevice'); 62 await promise_rejects_dom( 63 t, 'SecurityError', navigator.bluetooth.requestDevice(), 64 'Bluetooth access should not be allowed in this document.'); 65 check_report_format(await report); 66 }, 'requestDevice in bluetooth reporting mode'); 67 68 promise_test(async t => { 69 const report = new Promise(resolve => { 70 new ReportingObserver((reports, observer) => resolve([reports, observer]), 71 {types: ['permissions-policy-violation']}).observe(); 72 }); 73 74 await test_driver.bless('Activate document for bluetooth.requestLEScan'); 75 await promise_rejects_dom( 76 t, 'SecurityError', navigator.bluetooth.requestLEScan(), 77 'Bluetooth access should not be allowed in this document.'); 78 check_report_format(await report); 79 }, 'requestLEScan in bluetooth reporting mode'); 80 }); 81 </script> 82 </body> 83 </html>