addon-sdk/source/test/private-browsing/helper.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/addon-sdk/source/test/private-browsing/helper.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,100 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +'use strict';
     1.8 +
     1.9 +const { Loader } = require('sdk/test/loader');
    1.10 +
    1.11 +const { loader } = LoaderWithHookedConsole(module);
    1.12 +
    1.13 +const pb = loader.require('sdk/private-browsing');
    1.14 +const pbUtils = loader.require('sdk/private-browsing/utils');
    1.15 +const xulApp = require("sdk/system/xul-app");
    1.16 +const { open: openWindow, getMostRecentBrowserWindow } = require('sdk/window/utils');
    1.17 +const { openTab, getTabContentWindow, getActiveTab, setTabURL, closeTab } = require('sdk/tabs/utils');
    1.18 +const promise = require("sdk/core/promise");
    1.19 +const windowHelpers = require('sdk/window/helpers');
    1.20 +const events = require("sdk/system/events");
    1.21 +
    1.22 +function LoaderWithHookedConsole(module) {
    1.23 +  let globals = {};
    1.24 +  let errors = [];
    1.25 +
    1.26 +  globals.console = Object.create(console, {
    1.27 +    error: {
    1.28 +      value: function(e) {
    1.29 +        errors.push(e);
    1.30 +        if (!/DEPRECATED:/.test(e)) {
    1.31 +          console.error(e);
    1.32 +        }
    1.33 +      }
    1.34 +    }
    1.35 +  });
    1.36 +
    1.37 +  let loader = Loader(module, globals);
    1.38 +
    1.39 +  return {
    1.40 +    loader: loader,
    1.41 +    errors: errors
    1.42 +  }
    1.43 +}
    1.44 +
    1.45 +function deactivate(callback) {
    1.46 +  if (pbUtils.isGlobalPBSupported) {
    1.47 +    if (callback)
    1.48 +      pb.once('stop', callback);
    1.49 +    pb.deactivate();
    1.50 +  }
    1.51 +}
    1.52 +exports.deactivate = deactivate;
    1.53 +
    1.54 +exports.pb = pb;
    1.55 +exports.pbUtils = pbUtils;
    1.56 +exports.LoaderWithHookedConsole = LoaderWithHookedConsole;
    1.57 +
    1.58 +exports.openWebpage = function openWebpage(url, enablePrivate) {
    1.59 +  if (xulApp.is("Fennec")) {
    1.60 +    let chromeWindow = getMostRecentBrowserWindow();
    1.61 +    let rawTab = openTab(chromeWindow, url, {
    1.62 +      isPrivate: enablePrivate
    1.63 +    });
    1.64 +
    1.65 +    return {
    1.66 +      ready: promise.resolve(getTabContentWindow(rawTab)),
    1.67 +      close: function () {
    1.68 +        closeTab(rawTab);
    1.69 +        // Returns a resolved promise as there is no need to wait
    1.70 +        return promise.resolve();
    1.71 +      }
    1.72 +    };
    1.73 +  }
    1.74 +  else {
    1.75 +    let win = openWindow(null, {
    1.76 +      features: {
    1.77 +        private: enablePrivate
    1.78 +      }
    1.79 +    });
    1.80 +    let deferred = promise.defer();
    1.81 +
    1.82 +    // Wait for delayed startup code to be executed, in order to ensure
    1.83 +    // that the window is really ready
    1.84 +    events.on("browser-delayed-startup-finished", function onReady({subject}) {
    1.85 +      if (subject == win) {
    1.86 +        events.off("browser-delayed-startup-finished", onReady);
    1.87 +        deferred.resolve(win);
    1.88 +
    1.89 +        let rawTab = getActiveTab(win);
    1.90 +        setTabURL(rawTab, url);
    1.91 +        deferred.resolve(getTabContentWindow(rawTab));
    1.92 +      }
    1.93 +    }, true);
    1.94 +
    1.95 +    return {
    1.96 +      ready: deferred.promise,
    1.97 +      close: function () {
    1.98 +        return windowHelpers.close(win);
    1.99 +      }
   1.100 +    };
   1.101 +  }
   1.102 +  return null;
   1.103 +}

mercurial