summaryrefslogtreecommitdiffstats
path: root/test/wpt/tests/FileAPI/url/url-in-tags.window.js
blob: f20b3599013bf5b4f305549f6dc85e5756a00908 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
async_test(t => {
  const run_result = 'test_script_OK';
  const blob_contents = 'window.test_result = "' + run_result + '";';
  const blob = new Blob([blob_contents]);
  const url = URL.createObjectURL(blob);

  const e = document.createElement('script');
  e.setAttribute('src', url);
  e.onload = t.step_func_done(() => {
    assert_equals(window.test_result, run_result);
  });

  document.body.appendChild(e);
}, 'Blob URLs can be used in <script> tags');

async_test(t => {
  const run_result = 'test_frame_OK';
  const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
    '<script>window.test_result = "' + run_result + '";</script>';
  const blob = new Blob([blob_contents], {type: 'text/html'});
  const url = URL.createObjectURL(blob);

  const frame = document.createElement('iframe');
  frame.setAttribute('src', url);
  frame.setAttribute('style', 'display:none;');
  document.body.appendChild(frame);

  frame.onload = t.step_func_done(() => {
    assert_equals(frame.contentWindow.test_result, run_result);
  });
}, 'Blob URLs can be used in iframes, and are treated same origin');

async_test(t => {
  const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
    '<style>body { margin: 0; } .block { height: 5000px; }</style>\n' +
    '<body>\n' +
    '<a id="block1"></a><div class="block"></div>\n' +
    '<a id="block2"></a><div class="block"></div>';
  const blob = new Blob([blob_contents], {type: 'text/html'});
  const url = URL.createObjectURL(blob);

  const frame = document.createElement('iframe');
  frame.setAttribute('src', url + '#block2');
  document.body.appendChild(frame);
  frame.contentWindow.onscroll = t.step_func_done(() => {
    assert_equals(frame.contentWindow.scrollY, 5000);
  });
}, 'Blob URL fragment is implemented.');