1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/tests/browser/browser_frame_elements.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,87 @@ 1.4 +/* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* vim: set ts=2 et sw=2 tw=80: */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +const TEST_URI = "http://example.com/browser/dom/tests/browser/browser_frame_elements.html"; 1.11 +let gWindow; 1.12 + 1.13 +function test() { 1.14 + waitForExplicitFinish(); 1.15 + 1.16 + var tab = gBrowser.addTab(TEST_URI); 1.17 + gBrowser.selectedTab = tab; 1.18 + var browser = gBrowser.selectedBrowser; 1.19 + 1.20 + registerCleanupFunction(function () { 1.21 + gBrowser.removeTab(tab); 1.22 + gWindow = null; 1.23 + }); 1.24 + 1.25 + browser.addEventListener("DOMContentLoaded", function onLoad(event) { 1.26 + browser.removeEventListener("DOMContentLoaded", onLoad, false); 1.27 + executeSoon(function test_executeSoon() { 1.28 + gWindow = browser.contentWindow; 1.29 + startTests(); 1.30 + }); 1.31 + }, false); 1.32 +} 1.33 + 1.34 +function startTests() { 1.35 + info("Frame tests started"); 1.36 + 1.37 + info("Checking top window"); 1.38 + let windowUtils = getWindowUtils(gWindow); 1.39 + is (windowUtils.containerElement, gBrowser.selectedBrowser, "Container element for main window is xul:browser"); 1.40 + is (gWindow.top, gWindow, "gWindow is top"); 1.41 + is (gWindow.parent, gWindow, "gWindow is parent"); 1.42 + 1.43 + info("Checking about:blank iframe"); 1.44 + let iframeBlank = gWindow.document.querySelector("#iframe-blank"); 1.45 + ok (iframeBlank, "Iframe exists on page"); 1.46 + let iframeBlankUtils = getWindowUtils(iframeBlank.contentWindow); 1.47 + is (iframeBlankUtils.containerElement, iframeBlank, "Container element for iframe window is iframe"); 1.48 + is (iframeBlank.contentWindow.top, gWindow, "gWindow is top"); 1.49 + is (iframeBlank.contentWindow.parent, gWindow, "gWindow is parent"); 1.50 + 1.51 + info("Checking iframe with data url src"); 1.52 + let iframeDataUrl = gWindow.document.querySelector("#iframe-data-url"); 1.53 + ok (iframeDataUrl, "Iframe exists on page"); 1.54 + let iframeDataUrlUtils = getWindowUtils(iframeDataUrl.contentWindow); 1.55 + is (iframeDataUrlUtils.containerElement, iframeDataUrl, "Container element for iframe window is iframe"); 1.56 + is (iframeDataUrl.contentWindow.top, gWindow, "gWindow is top"); 1.57 + is (iframeDataUrl.contentWindow.parent, gWindow, "gWindow is parent"); 1.58 + 1.59 + info("Checking object with data url data attribute"); 1.60 + let objectDataUrl = gWindow.document.querySelector("#object-data-url"); 1.61 + ok (objectDataUrl, "Object exists on page"); 1.62 + let objectDataUrlUtils = getWindowUtils(objectDataUrl.contentWindow); 1.63 + is (objectDataUrlUtils.containerElement, objectDataUrl, "Container element for object window is the object"); 1.64 + is (objectDataUrl.contentWindow.top, gWindow, "gWindow is top"); 1.65 + is (objectDataUrl.contentWindow.parent, gWindow, "gWindow is parent"); 1.66 + 1.67 + info("Granting special powers for mozbrowser"); 1.68 + SpecialPowers.addPermission("browser", true, gWindow.document); 1.69 + SpecialPowers.setBoolPref('dom.mozBrowserFramesEnabled', true); 1.70 + 1.71 + info("Checking mozbrowser iframe"); 1.72 + let mozBrowserFrame = gWindow.document.createElement("iframe"); 1.73 + mozBrowserFrame.setAttribute("mozbrowser", ""); 1.74 + gWindow.document.body.appendChild(mozBrowserFrame); 1.75 + is (mozBrowserFrame.contentWindow.top, mozBrowserFrame.contentWindow, "Mozbrowser top == iframe window"); 1.76 + is (mozBrowserFrame.contentWindow.parent, mozBrowserFrame.contentWindow, "Mozbrowser parent == iframe window"); 1.77 + 1.78 + info("Revoking special powers for mozbrowser"); 1.79 + SpecialPowers.clearUserPref('dom.mozBrowserFramesEnabled') 1.80 + SpecialPowers.removePermission("browser", gWindow.document); 1.81 + 1.82 + finish(); 1.83 +} 1.84 + 1.85 +function getWindowUtils(window) 1.86 +{ 1.87 + return window. 1.88 + QueryInterface(Components.interfaces.nsIInterfaceRequestor). 1.89 + getInterface(Components.interfaces.nsIDOMWindowUtils); 1.90 +}