browser/devtools/styleeditor/test/head.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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);

mercurial