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

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:89aa65a324bb
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
4
5 function openViewSourceWindow(aURI, aCallback) {
6 let viewSourceWindow = openDialog("chrome://global/content/viewSource.xul", null, null, aURI);
7 viewSourceWindow.addEventListener("pageshow", function pageShowHandler(event) {
8 // Wait for the inner window to load, not viewSourceWindow.
9 if (event.target.location == "view-source:" + aURI) {
10 info("View source window opened: " + event.target.location);
11 viewSourceWindow.removeEventListener("pageshow", pageShowHandler, false);
12 aCallback(viewSourceWindow);
13 }
14 }, false);
15 }
16
17 function closeViewSourceWindow(aWindow, aCallback) {
18 Services.wm.addListener({
19 onCloseWindow: function() {
20 Services.wm.removeListener(this);
21 executeSoon(aCallback);
22 }
23 });
24 aWindow.close();
25 }
26
27 function testViewSourceWindow(aURI, aTestCallback, aCloseCallback) {
28 openViewSourceWindow(aURI, function(aWindow) {
29 aTestCallback(aWindow);
30 closeViewSourceWindow(aWindow, aCloseCallback);
31 });
32 }
33
34 function openViewPartialSourceWindow(aReference, aCallback) {
35 let viewSourceWindow = openDialog("chrome://global/content/viewPartialSource.xul",
36 null, null, null, null, aReference, "selection");
37 viewSourceWindow.addEventListener("pageshow", function pageShowHandler(event) {
38 // Wait for the inner window to load, not viewSourceWindow.
39 if (/^view-source:/.test(event.target.location)) {
40 info("View source window opened: " + event.target.location);
41 viewSourceWindow.removeEventListener("pageshow", pageShowHandler, false);
42 aCallback(viewSourceWindow);
43 }
44 }, false);
45 }
46
47 registerCleanupFunction(function() {
48 var windows = Services.wm.getEnumerator("navigator:view-source");
49 ok(!windows.hasMoreElements(), "No remaining view source windows still open");
50 while (windows.hasMoreElements())
51 windows.getNext().close();
52 });
53
54 function openDocument(aURI, aCallback) {
55 let tab = gBrowser.addTab(aURI);
56 let browser = tab.linkedBrowser;
57 browser.addEventListener("DOMContentLoaded", function pageLoadedListener() {
58 browser.removeEventListener("DOMContentLoaded", pageLoadedListener, false);
59 aCallback(tab);
60 }, false);
61 registerCleanupFunction(function() {
62 gBrowser.removeTab(tab);
63 });
64 }
65
66 function openDocumentSelect(aURI, aCSSSelector, aCallback) {
67 openDocument(aURI, function(aTab) {
68 let element = aTab.linkedBrowser.contentDocument.querySelector(aCSSSelector);
69 let selection = aTab.linkedBrowser.contentWindow.getSelection();
70 selection.selectAllChildren(element);
71
72 openViewPartialSourceWindow(selection, aCallback);
73 });
74 }

mercurial