Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
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';
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", {});
15 let gPanelWindow;
16 let cache = Cc["@mozilla.org/netwerk/cache-storage-service;1"]
17 .getService(Ci.nsICacheStorageService);
20 // Import the GCLI test helper
21 let testDir = gTestPath.substr(0, gTestPath.lastIndexOf("/"));
22 Services.scriptloader.loadSubScript(testDir + "../../../commandline/test/helpers.js", this);
24 gDevTools.testing = true;
25 SimpleTest.registerCleanupFunction(() => {
26 gDevTools.testing = false;
27 });
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 }
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);
43 gBrowser.removeCurrentTab();
44 }
45 }
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 });
62 if (uri) {
63 content.location = uri;
64 }
65 return deferred.promise;
66 }
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 }
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;
91 panel.UI._alwaysDisableAnimations = true;
92 callback(panel);
93 });
94 }
96 function checkDiskCacheFor(host, done)
97 {
98 let foundPrivateData = false;
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() {}
118 var storage = cache.diskCacheStorage(LoadContextInfo.default, false);
119 storage.asyncVisitStorage(new Visitor(), true /* Do walk entries */);
120 }
122 registerCleanupFunction(cleanup);