diff -r 000000000000 -r 6474c204b198 toolkit/components/viewsource/test/browser/head.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/components/viewsource/test/browser/head.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,74 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +function openViewSourceWindow(aURI, aCallback) { + let viewSourceWindow = openDialog("chrome://global/content/viewSource.xul", null, null, aURI); + viewSourceWindow.addEventListener("pageshow", function pageShowHandler(event) { + // Wait for the inner window to load, not viewSourceWindow. + if (event.target.location == "view-source:" + aURI) { + info("View source window opened: " + event.target.location); + viewSourceWindow.removeEventListener("pageshow", pageShowHandler, false); + aCallback(viewSourceWindow); + } + }, false); +} + +function closeViewSourceWindow(aWindow, aCallback) { + Services.wm.addListener({ + onCloseWindow: function() { + Services.wm.removeListener(this); + executeSoon(aCallback); + } + }); + aWindow.close(); +} + +function testViewSourceWindow(aURI, aTestCallback, aCloseCallback) { + openViewSourceWindow(aURI, function(aWindow) { + aTestCallback(aWindow); + closeViewSourceWindow(aWindow, aCloseCallback); + }); +} + +function openViewPartialSourceWindow(aReference, aCallback) { + let viewSourceWindow = openDialog("chrome://global/content/viewPartialSource.xul", + null, null, null, null, aReference, "selection"); + viewSourceWindow.addEventListener("pageshow", function pageShowHandler(event) { + // Wait for the inner window to load, not viewSourceWindow. + if (/^view-source:/.test(event.target.location)) { + info("View source window opened: " + event.target.location); + viewSourceWindow.removeEventListener("pageshow", pageShowHandler, false); + aCallback(viewSourceWindow); + } + }, false); +} + +registerCleanupFunction(function() { + var windows = Services.wm.getEnumerator("navigator:view-source"); + ok(!windows.hasMoreElements(), "No remaining view source windows still open"); + while (windows.hasMoreElements()) + windows.getNext().close(); +}); + +function openDocument(aURI, aCallback) { + let tab = gBrowser.addTab(aURI); + let browser = tab.linkedBrowser; + browser.addEventListener("DOMContentLoaded", function pageLoadedListener() { + browser.removeEventListener("DOMContentLoaded", pageLoadedListener, false); + aCallback(tab); + }, false); + registerCleanupFunction(function() { + gBrowser.removeTab(tab); + }); +} + +function openDocumentSelect(aURI, aCSSSelector, aCallback) { + openDocument(aURI, function(aTab) { + let element = aTab.linkedBrowser.contentDocument.querySelector(aCSSSelector); + let selection = aTab.linkedBrowser.contentWindow.getSelection(); + selection.selectAllChildren(element); + + openViewPartialSourceWindow(selection, aCallback); + }); +}