summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/siteIdentity/browser_no_mcb_on_http_site.js
blob: 30caae4ea5cda1e33077c115e5d48e6b92b881fd (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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * Description of the Tests for
 *  - Bug 909920 - Mixed content warning should not show on a HTTP site
 *
 * Description of the tests:
 *   Test 1:
 *     1) Load an http page
 *     2) The page includes a css file using https
 *     3) The css file loads an |IMAGE| << over http
 *
 *   Test 2:
 *     1) Load an http page
 *     2) The page includes a css file using https
 *     3) The css file loads a |FONT| over http
 *
 *   Test 3:
 *     1) Load an http page
 *     2) The page includes a css file using https
 *     3) The css file imports (@import) another css file using http
 *     3) The imported css file loads a |FONT| over http
 *
 * Since the top-domain is >> NOT << served using https, the MCB
 * should >> NOT << trigger a warning.
 */

const PREF_ACTIVE = "security.mixed_content.block_active_content";
const PREF_DISPLAY = "security.mixed_content.block_display_content";

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

var gTestBrowser = null;

function cleanUpAfterTests() {
  gBrowser.removeCurrentTab();
  window.focus();
}

add_setup(async function () {
  await SpecialPowers.pushPrefEnv({
    set: [
      [PREF_ACTIVE, true],
      [PREF_DISPLAY, true],
    ],
  });
  let url = HTTP_TEST_ROOT + "test_no_mcb_on_http_site_img.html";
  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
  gTestBrowser = tab.linkedBrowser;
});

// ------------- TEST 1 -----------------------------------------

add_task(async function test1() {
  let expected =
    "Verifying MCB does not trigger warning/error for an http page ";
  expected += "with https css that includes http image";

  await SpecialPowers.spawn(
    gTestBrowser,
    [expected],
    async function (condition) {
      await ContentTaskUtils.waitForCondition(
        () => content.document.getElementById("testDiv").innerHTML == condition,
        "Waited too long for status in Test 1!"
      );
    }
  );

  // Explicit OKs needed because the harness requires at least one call to ok.
  ok(true, "test 1 passed");

  // set up test 2
  let url = HTTP_TEST_ROOT + "test_no_mcb_on_http_site_font.html";
  BrowserTestUtils.loadURIString(gTestBrowser, url);
  await BrowserTestUtils.browserLoaded(gTestBrowser);
});

// ------------- TEST 2 -----------------------------------------

add_task(async function test2() {
  let expected =
    "Verifying MCB does not trigger warning/error for an http page ";
  expected += "with https css that includes http font";

  await SpecialPowers.spawn(
    gTestBrowser,
    [expected],
    async function (condition) {
      await ContentTaskUtils.waitForCondition(
        () => content.document.getElementById("testDiv").innerHTML == condition,
        "Waited too long for status in Test 2!"
      );
    }
  );

  ok(true, "test 2 passed");

  // set up test 3
  let url = HTTP_TEST_ROOT + "test_no_mcb_on_http_site_font2.html";
  BrowserTestUtils.loadURIString(gTestBrowser, url);
  await BrowserTestUtils.browserLoaded(gTestBrowser);
});

// ------------- TEST 3 -----------------------------------------

add_task(async function test3() {
  let expected =
    "Verifying MCB does not trigger warning/error for an http page ";
  expected +=
    "with https css that imports another http css which includes http font";

  await SpecialPowers.spawn(
    gTestBrowser,
    [expected],
    async function (condition) {
      await ContentTaskUtils.waitForCondition(
        () => content.document.getElementById("testDiv").innerHTML == condition,
        "Waited too long for status in Test 3!"
      );
    }
  );

  ok(true, "test3 passed");
});

// ------------------------------------------------------

add_task(async function cleanup() {
  BrowserTestUtils.removeTab(gBrowser.selectedTab);
});