tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>