content/base/test/test_mixed_content_blocker_frameNavigation.html

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:d6be3742c627
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 Tests for Mixed Content Blocker
5 https://bugzilla.mozilla.org/show_bug.cgi?id=840388
6 -->
7 <head>
8 <meta charset="utf-8">
9 <title>Tests for Bug 840388</title>
10 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
11 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
12
13 <script>
14 var counter = 0;
15 var origBlockActive = SpecialPowers.getBoolPref("security.mixed_content.block_active_content");
16
17 SpecialPowers.setBoolPref("security.mixed_content.block_active_content", true);
18 var blockActive = SpecialPowers.getBoolPref("security.mixed_content.block_active_content");
19
20
21 var testsToRunInsecure = {
22 insecurePage_navigate_child: false,
23 insecurePage_navigate_grandchild: false,
24 };
25
26 var testsToRunSecure = {
27 securePage_navigate_child: false,
28 blankTarget: false,
29 };
30
31 function log(msg) {
32 document.getElementById("log").textContent += "\n" + msg;
33 }
34
35 var secureTestsStarted = false;
36 function checkTestsCompleted() {
37 for (var prop in testsToRunInsecure) {
38 // some test hasn't run yet so we're not done
39 if (!testsToRunInsecure[prop])
40 return;
41 }
42 // If we are here, all the insecure tests have run.
43 // If we haven't changed the iframe to run the secure tests, change it now.
44 if (!secureTestsStarted) {
45 document.getElementById('testing_frame').src = "https://example.com/tests/content/base/test/file_mixed_content_frameNavigation_secure.html";
46 secureTestsStarted = true;
47 }
48 for (var prop in testsToRunSecure) {
49 // some test hasn't run yet so we're not done
50 if (!testsToRunSecure[prop])
51 return;
52 }
53 //if the secure and insecure testsToRun are all completed, change the block mixed active content pref and run the tests again.
54 if(counter < 1) {
55 for (var prop in testsToRunSecure) {
56 testsToRunSecure[prop] = false;
57 }
58 for (var prop in testsToRunInsecure) {
59 testsToRunInsecure[prop] = false;
60 }
61 //call to change the preferences
62 counter++;
63 SpecialPowers.setBoolPref("security.mixed_content.block_active_content", false);
64 blockActive = SpecialPowers.getBoolPref("security.mixed_content.block_active_content");
65 log("blockActive set to "+blockActive+".");
66 secureTestsStarted = false;
67 document.getElementById('framediv').innerHTML = '<iframe src="http://example.com/tests/content/base/test/file_mixed_content_frameNavigation.html" id="testing_frame"></iframe>';
68 }
69 else {
70 //set the prefs back to what they were set to originally
71 SpecialPowers.setBoolPref("security.mixed_content.block_active_content", origBlockActive);
72 SimpleTest.finish();
73 }
74 }
75
76 var firstTestDebugMessage = true;
77
78 // listen for a messages from the mixed content test harness
79 window.addEventListener("message", receiveMessage, false);
80 function receiveMessage(event) {
81 if(firstTestDebugMessage) {
82 log("blockActive set to "+blockActive);
83 firstTestDebugMessage = false;
84 }
85
86 log("test: "+event.data.test+", msg: "+event.data.msg + ".");
87 // test that the load type matches the pref for this type of content
88 // (i.e. active vs. display)
89
90 switch(event.data.test) {
91
92 case "insecurePage_navigate_child":
93 ok((event.data.msg == "navigated to insecure iframe on insecure page"), "navigating to insecure iframe blocked on insecure page");
94 testsToRunInsecure["insecurePage_navigate_child"] = true;
95 break;
96
97 case "insecurePage_navigate_grandchild":
98 ok((event.data.msg == "navigated to insecure grandchild iframe on insecure page"), "navigating to insecure grandchild iframe blocked on insecure page");
99 testsToRunInsecure["insecurePage_navigate_grandchild"] = true;
100 break;
101
102 case "securePage_navigate_child":
103 ok(blockActive == (event.data.msg == "navigating to insecure iframe blocked on secure page"), "navigated to insecure iframe on secure page");
104 testsToRunSecure["securePage_navigate_child"] = true;
105 break;
106
107 case "blankTarget":
108 ok((event.data.msg == "opened an http link with target=_blank from a secure page"), "couldn't open an http link in a new window from a secure page");
109 testsToRunSecure["blankTarget"] = true;
110 break;
111
112 }
113 checkTestsCompleted();
114 }
115
116 SimpleTest.waitForExplicitFinish();
117 </script>
118 </head>
119
120 <body>
121 <div id="framediv">
122 <iframe src="http://example.com/tests/content/base/test/file_mixed_content_frameNavigation.html" id="testing_frame"></iframe>
123 </div>
124
125 <pre id="log"></pre>
126 </body>
127 </html>

mercurial