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

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/toolkit/components/viewsource/test/browser/head.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,74 @@
     1.4 +/* Any copyright is dedicated to the Public Domain.
     1.5 + * http://creativecommons.org/publicdomain/zero/1.0/
     1.6 + */
     1.7 +
     1.8 +function openViewSourceWindow(aURI, aCallback) {
     1.9 +  let viewSourceWindow = openDialog("chrome://global/content/viewSource.xul", null, null, aURI);
    1.10 +  viewSourceWindow.addEventListener("pageshow", function pageShowHandler(event) {
    1.11 +    // Wait for the inner window to load, not viewSourceWindow.
    1.12 +    if (event.target.location == "view-source:" + aURI) {
    1.13 +      info("View source window opened: " + event.target.location);
    1.14 +      viewSourceWindow.removeEventListener("pageshow", pageShowHandler, false);
    1.15 +      aCallback(viewSourceWindow);
    1.16 +    }
    1.17 +  }, false);
    1.18 +}
    1.19 +
    1.20 +function closeViewSourceWindow(aWindow, aCallback) {
    1.21 +  Services.wm.addListener({
    1.22 +    onCloseWindow: function() {
    1.23 +      Services.wm.removeListener(this);
    1.24 +      executeSoon(aCallback);
    1.25 +    }
    1.26 +  });
    1.27 +  aWindow.close();
    1.28 +}
    1.29 +
    1.30 +function testViewSourceWindow(aURI, aTestCallback, aCloseCallback) {
    1.31 +  openViewSourceWindow(aURI, function(aWindow) {
    1.32 +    aTestCallback(aWindow);
    1.33 +    closeViewSourceWindow(aWindow, aCloseCallback);
    1.34 +  });
    1.35 +}
    1.36 +
    1.37 +function openViewPartialSourceWindow(aReference, aCallback) {
    1.38 +  let viewSourceWindow = openDialog("chrome://global/content/viewPartialSource.xul",
    1.39 +                                    null, null, null, null, aReference, "selection");
    1.40 +  viewSourceWindow.addEventListener("pageshow", function pageShowHandler(event) {
    1.41 +    // Wait for the inner window to load, not viewSourceWindow.
    1.42 +    if (/^view-source:/.test(event.target.location)) {
    1.43 +      info("View source window opened: " + event.target.location);
    1.44 +      viewSourceWindow.removeEventListener("pageshow", pageShowHandler, false);
    1.45 +      aCallback(viewSourceWindow);
    1.46 +    }
    1.47 +  }, false);
    1.48 +}
    1.49 +
    1.50 +registerCleanupFunction(function() {
    1.51 +  var windows = Services.wm.getEnumerator("navigator:view-source");
    1.52 +  ok(!windows.hasMoreElements(), "No remaining view source windows still open");
    1.53 +  while (windows.hasMoreElements())
    1.54 +    windows.getNext().close();
    1.55 +});
    1.56 +
    1.57 +function openDocument(aURI, aCallback) {
    1.58 +  let tab = gBrowser.addTab(aURI);
    1.59 +  let browser = tab.linkedBrowser;
    1.60 +  browser.addEventListener("DOMContentLoaded", function pageLoadedListener() {
    1.61 +    browser.removeEventListener("DOMContentLoaded", pageLoadedListener, false);
    1.62 +    aCallback(tab);
    1.63 +  }, false);
    1.64 +  registerCleanupFunction(function() {
    1.65 +    gBrowser.removeTab(tab);
    1.66 +  });
    1.67 +}
    1.68 +
    1.69 +function openDocumentSelect(aURI, aCSSSelector, aCallback) {
    1.70 +  openDocument(aURI, function(aTab) {
    1.71 +    let element = aTab.linkedBrowser.contentDocument.querySelector(aCSSSelector);
    1.72 +    let selection = aTab.linkedBrowser.contentWindow.getSelection();
    1.73 +    selection.selectAllChildren(element);
    1.74 +
    1.75 +    openViewPartialSourceWindow(selection, aCallback);
    1.76 +  });
    1.77 +}

mercurial