tor-browser

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

background-sync.https.html (7580B)


      1 <!DOCTYPE html>
      2 <title>Test fenced frame does not allow to register background sync</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="resources/utils.js"></script>
      6 <script src="/common/get-host-info.sub.js"></script>
      7 <script src="/common/utils.js"></script>
      8 <body>
      9 <script>
     10 const background_sync_register_key = token();
     11 const fenced_frame_url = 'resources/background-sync-inner.https.html';
     12 const fenced_frame_url_for_service_worker_test =
     13  'resources/background-sync-sw-inner.https.html';
     14 
     15 const generateFencedFrameUrl = (params, is_worker_test = false) => {
     16  const searchParams = new URLSearchParams(params);
     17  const frame_url = is_worker_test ?
     18    fenced_frame_url_for_service_worker_test : fenced_frame_url;
     19 
     20  return generateURL(`${frame_url}?${searchParams.toString()}`,
     21    [background_sync_register_key]);
     22 };
     23 
     24 async function background_sync_test(url, expected_text, message) {
     25  attachFencedFrame(url)
     26 
     27  // Get the result for the top-level fenced frame.
     28  const fenced_frame_result =
     29      await nextValueFromServer(background_sync_register_key);
     30  assert_equals(fenced_frame_result, expected_text, message);
     31 };
     32 
     33 const background_sync_message =
     34  "Background Sync is not allowed in fenced frames.";
     35 const periodic_background_sync_message =
     36  "Periodic Background Sync is not allowed in fenced frames.";
     37 
     38 promise_test(async (t) => {
     39  const method = 'register';
     40  const frame_url = generateFencedFrameUrl({method});
     41  const expected_message = "Failed to execute 'register' on 'SyncManager': " +
     42    background_sync_message;
     43  await background_sync_test(
     44      frame_url,
     45      expected_message,
     46      'register() is disallowed inside a same-origin fenced frame');
     47 
     48  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
     49  await background_sync_test(
     50      cross_origin_frame_url,
     51      expected_message,
     52      'register() is disallowed inside a cross-origin fenced frame');
     53 }, 'background sync register');
     54 
     55 promise_test(async (t) => {
     56  const method = 'getTags';
     57  const frame_url = generateFencedFrameUrl({method});
     58  const expected_message = background_sync_message;
     59  await background_sync_test(
     60      frame_url,
     61      expected_message,
     62      'getTags() is disallowed inside a same-origin fenced frame');
     63 
     64  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
     65  await background_sync_test(
     66      cross_origin_frame_url,
     67      expected_message,
     68      'getTags() is disallowed inside a cross-origin fenced frame');
     69 }, 'background sync getTags');
     70 
     71 promise_test(async (t) => {
     72  const method = 'register';
     73  const frame_url = generateFencedFrameUrl({method}, true);
     74  const expected_message = "Failed to execute 'register' on 'SyncManager': " +
     75    background_sync_message;
     76  await background_sync_test(
     77      frame_url,
     78      expected_message,
     79      'register() is disallowed inside a same-origin fenced frame');
     80  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
     81  await background_sync_test(
     82      cross_origin_frame_url,
     83      expected_message,
     84      'register() is disallowed inside a cross-origin fenced frame');
     85 }, 'background sync register in service worker');
     86 
     87 promise_test(async (t) => {
     88  const method = 'getTags';
     89  const frame_url = generateFencedFrameUrl({method}, true);
     90  const expected_message = background_sync_message;
     91  await background_sync_test(
     92      frame_url,
     93      expected_message,
     94      'getTags() is disallowed inside a same-origin fenced frame');
     95  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
     96  await background_sync_test(
     97      cross_origin_frame_url,
     98      expected_message,
     99      'getTags() is disallowed inside a cross-origin fenced frame');
    100 }, 'background sync getTags in service worker');
    101 
    102 promise_test(async (t) => {
    103  const params = {
    104    method: 'register',
    105    periodic: true
    106  };
    107  const frame_url = generateFencedFrameUrl(params)
    108  const expected_message = "Failed to execute 'register' on " +
    109    "'PeriodicSyncManager': " + periodic_background_sync_message;
    110  await background_sync_test(
    111      frame_url,
    112      expected_message,
    113      'register() is disallowed inside a same-origin fenced frame');
    114 
    115  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
    116  await background_sync_test(
    117      cross_origin_frame_url,
    118      expected_message,
    119      'register() is disallowed inside a cross-origin fenced frame');
    120 }, 'periodic sync register');
    121 
    122 promise_test(async (t) => {
    123  const params = {
    124    method: 'getTags',
    125    periodic: true
    126  };
    127  const frame_url = generateFencedFrameUrl(params)
    128  const expected_message = periodic_background_sync_message;
    129  await background_sync_test(
    130      frame_url,
    131      expected_message,
    132      'getTags() is disallowed inside a same-origin fenced frame');
    133 
    134  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
    135  await background_sync_test(
    136      cross_origin_frame_url,
    137      expected_message,
    138      'getTags() is disallowed inside a cross-origin fenced frame');
    139 }, 'periodic sync getTags');
    140 
    141 promise_test(async (t) => {
    142  const params = {
    143    method: 'unregister',
    144    periodic: true
    145  };
    146  const frame_url = generateFencedFrameUrl(params)
    147  const expected_message = periodic_background_sync_message;
    148  await background_sync_test(
    149      frame_url,
    150      expected_message,
    151      'unregister() is disallowed inside a same-origin fenced frame');
    152 
    153  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
    154  await background_sync_test(
    155      cross_origin_frame_url,
    156      expected_message,
    157      'unregister() is disallowed inside a cross-origin fenced frame');
    158 }, 'periodic sync unregister');
    159 
    160 promise_test(async (t) => {
    161  const params = {
    162    method: 'register',
    163    periodic: true
    164  };
    165  const frame_url = generateFencedFrameUrl(params, true)
    166  const expected_message = "Failed to execute 'register' on " +
    167    "'PeriodicSyncManager': " + periodic_background_sync_message;
    168  await background_sync_test(
    169      frame_url,
    170      expected_message,
    171      'register() is disallowed inside a same-origin fenced frame');
    172 
    173  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
    174  await background_sync_test(
    175      cross_origin_frame_url,
    176      expected_message,
    177      'register() is disallowed inside a cross-origin fenced frame');
    178 }, 'periodic sync register in service worker');
    179 
    180 promise_test(async (t) => {
    181  const params = {
    182    method: 'getTags',
    183    periodic: true
    184  };
    185  const frame_url = generateFencedFrameUrl(params, true)
    186  const expected_message = periodic_background_sync_message;
    187  await background_sync_test(
    188      frame_url,
    189      expected_message,
    190      'getTags() is disallowed inside a same-origin fenced frame');
    191 
    192  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
    193  await background_sync_test(
    194      cross_origin_frame_url,
    195      expected_message,
    196      'getTags() is disallowed inside a cross-origin fenced frame');
    197 }, 'periodic sync getTags in service worker');
    198 
    199 promise_test(async (t) => {
    200  const params = {
    201    method: 'unregister',
    202    periodic: true
    203  };
    204  const frame_url = generateFencedFrameUrl(params, true)
    205  const expected_message = periodic_background_sync_message;
    206  await background_sync_test(
    207      frame_url,
    208      expected_message,
    209      'unregister() is disallowed inside a same-origin fenced frame');
    210 
    211  const cross_origin_frame_url = getRemoteOriginURL(frame_url);
    212  await background_sync_test(
    213      cross_origin_frame_url,
    214      expected_message,
    215      'unregister() is disallowed inside a cross-origin fenced frame');
    216 }, 'periodic sync unregister in service worker');
    217 </script>
    218 </body>