summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/siteIdentity/browser_about_blank_same_document_tabswitch.js
blob: 5e58b4bedb65a98f8bdb354e057b981d319cbd36 (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
74
75
76
77
78
79
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

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

const TEST_PAGE = TEST_PATH + "open-self-from-frame.html";

add_task(async function test_identityBlock_inherited_blank() {
  await BrowserTestUtils.withNewTab("https://example.com", async browser => {
    let identityBox = document.getElementById("identity-box");
    // Ensure we remove the 3rd party storage permission for example.org, or
    // it'll mess up other tests:
    let principal = browser.contentPrincipal;
    registerCleanupFunction(() => {
      Services.perms.removeFromPrincipal(
        principal,
        "3rdPartyStorage^http://example.org"
      );
    });
    is(
      identityBox.className,
      "verifiedDomain",
      "Should indicate a secure site."
    );
    // Open a popup from the web content.
    let popupPromise = BrowserTestUtils.waitForNewWindow();
    await SpecialPowers.spawn(browser, [TEST_PAGE], testPage => {
      content.open(testPage, "_blank", "height=300,width=300");
    });
    // Open a tab back in the main window:
    let popup = await popupPromise;
    info("Opened popup");
    let popupBC = popup.gBrowser.selectedBrowser.browsingContext;
    await TestUtils.waitForCondition(
      () => popupBC.children[0]?.currentWindowGlobal
    );

    info("Waiting for button to appear");
    await SpecialPowers.spawn(popupBC.children[0], [], async () => {
      await ContentTaskUtils.waitForCondition(() =>
        content.document.querySelector("button")
      );
    });

    info("Got frame contents.");

    let otherTabPromise = BrowserTestUtils.waitForLocationChange(
      gBrowser,
      TEST_PAGE
    );
    info("Clicking button");
    await BrowserTestUtils.synthesizeMouseAtCenter(
      "button",
      {},
      popupBC.children[0]
    );
    info("Waiting for tab");
    await otherTabPromise;

    ok(
      gURLBar.value.startsWith("example.org/"),
      "URL bar value should be correct, was " + gURLBar.value
    );
    is(
      identityBox.className,
      "notSecure",
      "Identity box should have been updated."
    );

    await BrowserTestUtils.removeTab(gBrowser.selectedTab);
    await BrowserTestUtils.closeWindow(popup);
  });
});