<!DOCTYPE HTML> <html> <body> <div id="content"></div> <script> // get the case from the query string var type = location.search.substring(1); switch (type) { case "insecurePage_navigate_child": document.getElementById("content").innerHTML = '<a href="http://example.com/tests/dom/security/test/mixedcontentblocker/file_frameNavigation_innermost.html?insecurePage_navigate_child_response" id="link">Testing\<\/a>'; document.getElementById("link").click(); break; case "insecurePage_navigate_child_response": parent.parent.postMessage({"test": "insecurePage_navigate_child", "msg": "navigated to insecure iframe on insecure page"}, "http://mochi.test:8888"); document.getElementById("content").innerHTML = "Navigated from secure to insecure frame on an insecure page"; break; case "insecurePage_navigate_grandchild": document.getElementById("content").innerHTML = '<a href="http://example.com/tests/dom/security/test/mixedcontentblocker/file_frameNavigation_innermost.html?insecurePage_navigate_grandchild_response" id="link">Testing\<\/a>'; // If we don't reflow before clicking the link, the test will fail intermittently. The reason is still unknown. We'll track this issue in bug 1259715. requestAnimationFrame(function() { setTimeout(function() { document.getElementById("link").click(); }, 0); }); break; case "insecurePage_navigate_grandchild_response": parent.parent.parent.postMessage({"test": "insecurePage_navigate_grandchild", "msg": "navigated to insecure grandchild iframe on insecure page"}, "http://mochi.test:8888"); document.getElementById("content").innerHTML = "Navigated from secure to insecure grandchild frame on an insecure page"; break; case "securePage_navigate_child": document.getElementById("content").innerHTML = '<a href="http://example.com/tests/dom/security/test/mixedcontentblocker/file_frameNavigation_innermost.html?securePage_navigate_child_response" id="link">Testing\<\/a>'; document.getElementById("link").click(); break; case "securePage_navigate_child_response": document.getElementById("content").innerHTML = "<p>Navigated from secure to insecure frame on a secure page</p>"; parent.parent.postMessage({"test": "securePage_navigate_child", "msg": "navigated to insecure iframe on secure page"}, "http://mochi.test:8888"); break; case "securePage_navigate_grandchild": document.getElementById("content").innerHTML= '<a href="http://example.com/tests/dom/security/test/mixedcontentblocker/file_frameNavigation_innermost.html?securePage_navigate_grandchild_response" id="link">Testing\<\/a>'; document.getElementById("link").click(); break; case "securePage_navigate_grandchild_response": dump("\nNavigated to grandchild iframe from secure location to insecure location. About to post message to the top page.\n"); parent.parent.parent.postMessage({"test": "securePage_navigate_grandchild", "msg": "navigated to insecure grandchild iframe on secure page"}, "http://mochi.test:8888"); dump("\npostMessage to parent attempted.\n"); document.getElementById("content").innerHTML = "<p>Navigated from secure to insecure grandchild frame on a secure page</p>"; break; case "blankTarget": window.close(); break; default: document.getElementById("content").innerHTML = "Hello"; break; } </script> </body> </html>