Files
tubestation/toolkit/components/viewsource/test/browser/head.js

68 lines
2.4 KiB
JavaScript

/* 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);
aCallback();
}
});
aWindow.close();
}
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);
});
}