|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 const TEST_BASE = "chrome://mochitests/content/browser/browser/devtools/styleeditor/test/"; |
|
5 const TEST_BASE_HTTP = "http://example.com/browser/browser/devtools/styleeditor/test/"; |
|
6 const TEST_BASE_HTTPS = "https://example.com/browser/browser/devtools/styleeditor/test/"; |
|
7 const TEST_HOST = 'mochi.test:8888'; |
|
8 |
|
9 let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); |
|
10 let TargetFactory = devtools.TargetFactory; |
|
11 let {LoadContextInfo} = Cu.import("resource://gre/modules/LoadContextInfo.jsm", {}); |
|
12 let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {}); |
|
13 let {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {}); |
|
14 |
|
15 let gPanelWindow; |
|
16 let cache = Cc["@mozilla.org/netwerk/cache-storage-service;1"] |
|
17 .getService(Ci.nsICacheStorageService); |
|
18 |
|
19 |
|
20 // Import the GCLI test helper |
|
21 let testDir = gTestPath.substr(0, gTestPath.lastIndexOf("/")); |
|
22 Services.scriptloader.loadSubScript(testDir + "../../../commandline/test/helpers.js", this); |
|
23 |
|
24 gDevTools.testing = true; |
|
25 SimpleTest.registerCleanupFunction(() => { |
|
26 gDevTools.testing = false; |
|
27 }); |
|
28 |
|
29 /** |
|
30 * Define an async test based on a generator function |
|
31 */ |
|
32 function asyncTest(generator) { |
|
33 return () => Task.spawn(generator).then(null, ok.bind(null, false)).then(finish); |
|
34 } |
|
35 |
|
36 function* cleanup() |
|
37 { |
|
38 gPanelWindow = null; |
|
39 while (gBrowser.tabs.length > 1) { |
|
40 let target = TargetFactory.forTab(gBrowser.selectedTab); |
|
41 yield gDevTools.closeToolbox(target); |
|
42 |
|
43 gBrowser.removeCurrentTab(); |
|
44 } |
|
45 } |
|
46 |
|
47 function addTabAndOpenStyleEditors(count, callback, uri) { |
|
48 let deferred = promise.defer(); |
|
49 let currentCount = 0; |
|
50 let panel; |
|
51 addTabAndCheckOnStyleEditorAdded(p => panel = p, function () { |
|
52 currentCount++; |
|
53 info(currentCount + " of " + count + " editors opened"); |
|
54 if (currentCount == count) { |
|
55 if (callback) { |
|
56 callback(panel); |
|
57 } |
|
58 deferred.resolve(panel); |
|
59 } |
|
60 }); |
|
61 |
|
62 if (uri) { |
|
63 content.location = uri; |
|
64 } |
|
65 return deferred.promise; |
|
66 } |
|
67 |
|
68 function addTabAndCheckOnStyleEditorAdded(callbackOnce, callbackOnAdded) { |
|
69 gBrowser.selectedTab = gBrowser.addTab(); |
|
70 gBrowser.selectedBrowser.addEventListener("load", function onLoad() { |
|
71 gBrowser.selectedBrowser.removeEventListener("load", onLoad, true); |
|
72 openStyleEditorInWindow(window, function (panel) { |
|
73 // Execute the individual callback with the panel argument. |
|
74 callbackOnce(panel); |
|
75 // Report editors that already opened while loading. |
|
76 for (let editor of panel.UI.editors) { |
|
77 callbackOnAdded(editor); |
|
78 } |
|
79 // Report new editors added afterwards. |
|
80 panel.UI.on("editor-added", (event, editor) => callbackOnAdded(editor)); |
|
81 }); |
|
82 }, true); |
|
83 } |
|
84 |
|
85 function openStyleEditorInWindow(win, callback) { |
|
86 let target = TargetFactory.forTab(win.gBrowser.selectedTab); |
|
87 win.gDevTools.showToolbox(target, "styleeditor").then(function(toolbox) { |
|
88 let panel = toolbox.getCurrentPanel(); |
|
89 gPanelWindow = panel._panelWin; |
|
90 |
|
91 panel.UI._alwaysDisableAnimations = true; |
|
92 callback(panel); |
|
93 }); |
|
94 } |
|
95 |
|
96 function checkDiskCacheFor(host, done) |
|
97 { |
|
98 let foundPrivateData = false; |
|
99 |
|
100 Visitor.prototype = { |
|
101 onCacheStorageInfo: function(num, consumption) |
|
102 { |
|
103 info("disk storage contains " + num + " entries"); |
|
104 }, |
|
105 onCacheEntryInfo: function(entry) |
|
106 { |
|
107 info(entry.key); |
|
108 foundPrivateData |= entry.key.contains(host); |
|
109 }, |
|
110 onCacheEntryVisitCompleted: function() |
|
111 { |
|
112 is(foundPrivateData, false, "web content present in disk cache"); |
|
113 done(); |
|
114 } |
|
115 }; |
|
116 function Visitor() {} |
|
117 |
|
118 var storage = cache.diskCacheStorage(LoadContextInfo.default, false); |
|
119 storage.asyncVisitStorage(new Visitor(), true /* Do walk entries */); |
|
120 } |
|
121 |
|
122 registerCleanupFunction(cleanup); |