| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"/> |
| <title>HTML Test: window.frameElement</title> |
| <link rel="author" title="Intel" href="http://www.intel.com/" /> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <!-- t1 (same-origin)--> |
| <iframe id="iframe_0"></iframe> |
| <iframe id="iframe_1" src="./resources/frameElement-nested-frame.html"></iframe> |
| <object id="object_id" name="object_name" type="text/html" data="about:blank"></object> |
| <embed id="embed_id" name="embed_name" type="image/svg+xml" src="/images/green.svg" /> |
| |
| <!-- t2 (cross-origin) --> |
| <iframe name="iframe_2" src="http://{{hosts[alt][]}}:{{ports[http][0]}}/html/browsers/windows/nested-browsing-contexts/resources/frameElement-nested-frame.html"></iframe> |
| |
| <!-- t3 (cross-origin) --> |
| <iframe id="iframe_3" src="http://{{hosts[alt][]}}:{{ports[http][0]}}/html/browsers/windows/nested-browsing-contexts/resources/frameElement-window-post.html"></iframe> |
| |
| <script> |
| test(function() { |
| assert_equals(window.frameElement, null, |
| "The frameElement attribute should be null."); |
| }, "The window's frameElement attribute must return null if it is not a nested browsing context"); |
| |
| var t1 = async_test("The window's frameElement attribute must return its container element if it is a nested browsing context"); |
| window.addEventListener("load", t1.step_func_done(function() { |
| assert_equals(frames[0].frameElement, document.getElementById("iframe_0"), |
| "The frameElement attribute should be the first iframe element."); |
| assert_equals(window["object_name"].frameElement, document.getElementById("object_id"), |
| "The frameElement attribute should be the object element."); |
| assert_equals(window["embed_name"].frameElement, document.getElementById("embed_id"), |
| "The frameElement attribute should be the embed element."); |
| assert_equals(document.getElementById("iframe_1").contentWindow[0].frameElement, |
| document.getElementById("iframe_1").contentDocument.getElementById("f1"), |
| "The frameElement attribute should be the frame element in 'resources/frameElement-nested-frame.html'."); |
| })); |
| |
| var t2 = async_test("The SecurityError must be thrown if the window accesses to frameElement attribute of a Window which does not have the same effective script origin"); |
| window.addEventListener("load", t2.step_func_done(function() { |
| assert_throws("SecurityError", function() { |
| frames["iframe_2"].frameElement; |
| }, |
| "The SecurityError exception should be thrown."); |
| })); |
| |
| var t3 = async_test("The window's frameElement attribute must return null if the container's document does not have the same effective script origin"); |
| window.addEventListener("load", function() { |
| window.addEventListener("message", function(event) { |
| var data = JSON.parse(event.data); |
| if (data.name == "testcase3") { |
| t3.step(function() { |
| assert_equals(data.result, "window.frameElement = null", |
| "The frameElement attribute should be null."); |
| t3.done(); |
| }); |
| } |
| }, false); |
| document.getElementById("iframe_3").contentWindow.postMessage(null, "*"); |
| }) |
| </script> |
| </body> |
| </html> |