content/base/test/test_mixed_content_blocker_frameNavigation.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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"/>
    13   <script>
    14   var counter = 0;
    15   var origBlockActive = SpecialPowers.getBoolPref("security.mixed_content.block_active_content");
    17   SpecialPowers.setBoolPref("security.mixed_content.block_active_content", true);
    18   var blockActive = SpecialPowers.getBoolPref("security.mixed_content.block_active_content");
    21   var testsToRunInsecure = {
    22     insecurePage_navigate_child: false,
    23     insecurePage_navigate_grandchild: false,
    24   };
    26   var testsToRunSecure = {
    27     securePage_navigate_child: false,
    28     blankTarget: false,
    29   };
    31   function log(msg) {
    32     document.getElementById("log").textContent += "\n" + msg;
    33   }
    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   }
    76   var firstTestDebugMessage = true;
    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     }
    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)
    90     switch(event.data.test) {
    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;
    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;
   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;
   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;
   112     }
   113     checkTestsCompleted();
   114   }
   116   SimpleTest.waitForExplicitFinish();
   117   </script>
   118 </head>
   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>
   125   <pre id="log"></pre>
   126 </body>
   127 </html>

mercurial