| /* | |
| * Copyright 2016 Jacek Caban for CodeWeavers | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| function nav_parent_test() { | |
| external.trace("Running _parent navigation tests..."); | |
| var iframe = document.getElementById("testframe"); | |
| var subframe = iframe.contentWindow.document.createElement("iframe"); | |
| subframe.onload = function() { | |
| var doc = subframe.contentWindow.document; | |
| doc.body.innerHTML = '<a href="blank2.html" id="aid" target="_parent">test</a>'; | |
| doc.getElementById("aid").click(); | |
| } | |
| iframe.onload = function() { | |
| iframe.onload = null; | |
| var href = iframe.contentWindow.location.href; | |
| ok(/.*blank2.html/.test(href), "Unexpected href " + href); | |
| next_test(); | |
| } | |
| iframe.contentWindow.document.body.appendChild(subframe); | |
| subframe.src = "blank.html"; | |
| } | |
| function window_navigate_test() { | |
| external.trace("Running window.navigate() tests..."); | |
| var iframe = document.getElementById("testframe"); | |
| iframe.onload = function() { | |
| iframe.onload = null; | |
| var href = iframe.contentWindow.location.href; | |
| ok(href === "about:blank", "Unexpected href " + href); | |
| next_test(); | |
| } | |
| iframe.contentWindow.navigate("about:blank"); | |
| } | |
| function window_open_self_test() { | |
| external.trace("Running window.open(_self) tests..."); | |
| var iframe = document.getElementById("testframe"); | |
| var iframe_window = iframe.contentWindow; | |
| iframe.onload = function() { | |
| iframe.onload = null; | |
| var href = iframe.contentWindow.location.href; | |
| ok(/.*blank.html\?window_open_self/.test(href), "Unexpected href " + href); | |
| ok(iframe.contentWindow === iframe_window, "iframe.contentWindow !== iframe_window"); | |
| next_test(); | |
| } | |
| iframe_window.open("blank.html?window_open_self", "_self"); | |
| } | |
| function detached_src_test() { | |
| var iframe = document.createElement("iframe"); | |
| var onload_called = false; | |
| iframe.onload = function() { | |
| onload_called = true; | |
| next_test(); | |
| } | |
| iframe.src = "blank.html"; | |
| document.body.appendChild(iframe); | |
| ok(onload_called === false, "called onload too early?"); | |
| } | |
| function init_test_iframe() { | |
| var iframe = document.createElement("iframe"); | |
| iframe.onload = next_test; | |
| iframe.id = "testframe"; | |
| iframe.src = "about:blank"; | |
| document.body.appendChild(iframe); | |
| } | |
| var tests = [ | |
| init_test_iframe, | |
| nav_parent_test, | |
| window_navigate_test, | |
| window_open_self_test, | |
| detached_src_test | |
| ]; |