summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/pageStyle/browser_disable_author_style_oop.js
blob: f89e08a220df28ecaeca66ac8bd46e0cb66dd784 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

async function getColor(aSpawnTarget) {
  return SpecialPowers.spawn(aSpawnTarget, [], function () {
    return content.document.defaultView.getComputedStyle(
      content.document.querySelector("p")
    ).color;
  });
}

async function insertIFrame() {
  let bc = gBrowser.selectedBrowser.browsingContext;
  let len = bc.children.length;

  const kURL =
    WEB_ROOT.replace("example.com", "example.net") + "page_style.html";
  await SpecialPowers.spawn(gBrowser.selectedBrowser, [kURL], function (url) {
    return new Promise(function (resolve) {
      let e = content.document.createElement("iframe");
      e.src = url;
      e.onload = () => resolve();
      content.document.body.append(e);
    });
  });

  // Wait for the new frame to get a pres shell and be styled.
  await BrowserTestUtils.waitForCondition(async function () {
    return (
      bc.children.length == len + 1 && (await getColor(bc.children[len])) != ""
    );
  });
}

// Test that inserting an iframe with a URL that is loaded OOP with Fission
// enabled correctly matches the tab's author style disabled state.
add_task(async function test_disable_style() {
  let tab = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    WEB_ROOT + "page_style.html",
    /* waitForLoad = */ true
  );

  let bc = gBrowser.selectedBrowser.browsingContext;

  await insertIFrame();

  is(
    await getColor(bc),
    "rgb(0, 0, 255)",
    "parent color before disabling style"
  );
  is(
    await getColor(bc.children[0]),
    "rgb(0, 0, 255)",
    "first child color before disabling style"
  );

  gPageStyleMenu.disableStyle();

  is(await getColor(bc), "rgb(0, 0, 0)", "parent color after disabling style");
  is(
    await getColor(bc.children[0]),
    "rgb(0, 0, 0)",
    "first child color after disabling style"
  );

  await insertIFrame();

  is(
    await getColor(bc.children[1]),
    "rgb(0, 0, 0)",
    "second child color after disabling style"
  );

  await BrowserTestUtils.reloadTab(tab, true);

  // Check the menu:
  let { menupopup } = document.getElementById("pageStyleMenu");
  gPageStyleMenu.fillPopup(menupopup);
  Assert.equal(
    menupopup.querySelector("menuitem[checked='true']").dataset.l10nId,
    "menu-view-page-style-no-style",
    "No style menu should be checked."
  );

  // check the page content still has a disabled author style:
  Assert.ok(
    await SpecialPowers.spawn(
      tab.linkedBrowser,
      [],
      () => content.docShell.contentViewer.authorStyleDisabled
    ),
    "Author style should still be disabled."
  );

  BrowserTestUtils.removeTab(tab);
});