summaryrefslogtreecommitdiffstats
path: root/docshell/test/browser/browser_bug1691153.js
blob: ed4969dae897a14f1ee93242eddd1601a232bea5 (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"use strict";

add_task(async () => {
  const TEST_PATH = getRootDirectory(gTestPath).replace(
    "chrome://mochitests/content",
    // eslint-disable-next-line @microsoft/sdl/no-insecure-url
    "http://example.com"
  );

  const HTML_URI = TEST_PATH + "file_bug1691153.html";

  // Opening the page that contains the iframe
  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
  let browser = tab.linkedBrowser;
  let browserLoaded = BrowserTestUtils.browserLoaded(
    browser,
    true,
    HTML_URI,
    true
  );
  info("new tab loaded");

  BrowserTestUtils.startLoadingURIString(browser, HTML_URI);
  await browserLoaded;
  info("The test page has loaded!");

  let first_message_promise = SpecialPowers.spawn(
    browser,
    [],
    async function () {
      let blobPromise = new Promise((resolve, reject) => {
        content.addEventListener("message", event => {
          if (event.data.bloburl) {
            info("Sanity check: recvd blob URL as " + event.data.bloburl);
            resolve(event.data.bloburl);
          }
        });
      });
      content.postMessage("getblob", "*");
      return blobPromise;
    }
  );
  info("The test page has loaded!");
  let blob_url = await first_message_promise;

  Assert.ok(blob_url.startsWith("blob:"), "Sanity check: recvd blob");
  info(`Received blob URL message from content: ${blob_url}`);
  // try to open the blob in a new tab, manually created by the user
  let tab2 = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    blob_url,
    true,
    false,
    true
  );

  let principal = gBrowser.selectedTab.linkedBrowser._contentPrincipal;
  Assert.ok(
    !principal.isSystemPrincipal,
    "Newly opened blob shouldn't be Systemprincipal"
  );
  Assert.ok(
    !principal.isExpandedPrincipal,
    "Newly opened blob shouldn't be ExpandedPrincipal"
  );
  Assert.ok(
    principal.isContentPrincipal,
    "Newly opened blob tab should be ContentPrincipal"
  );

  BrowserTestUtils.removeTab(tab);
  BrowserTestUtils.removeTab(tab2);
});