/* * 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 = 'test'; 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 ];