Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Bug 834961: Update window util modules to ignore private windows #769

Closed
wants to merge 37 commits into from

3 participants

@erikvold

No description provided.

erikvold added some commits
@erikvold erikvold bug 834961: adding a ignoreWindow helper method, and ignoring private…
… windows in window util modules
2ec0199
@erikvold erikvold Merge branch '820582' into 834961 ba6520e
@erikvold erikvold Merge branch 'master' of git://github.com/mozilla/addon-sdk into 834961 f826151
@erikvold erikvold bug 834961: window/utils openDialog method no longer returns a privat…
…e window if pb is not supported, now private-browsing tests are broken for pwpb builds..
886b361
@erikvold erikvold bug 834961: fixing private-browsing tests for window util module chan…
…ges made thus far
b822c3a
@erikvold erikvold require("window/utils").open should not return private windows when t…
…hey are not supported
debee09
@erikvold erikvold Merge branch '828746' of github.com:erikvold/jetpack-sdk into 834961
Conflicts:
	test/test-private-browsing.js
b0d0de6
@erikvold erikvold bug 834961: making the private-browsing/helper test module easier to …
…use in other places
127fb5b
@erikvold erikvold bug 834961: adding simple tests of isBrowser from the window/utils mo…
…dule
f133051
@erikvold erikvold bug 834961: adding PWPB test of the windowIterator, adding a helper c…
…lose method to window utils
4f09f8d
@erikvold erikvold bug 834961 adding a test of the activeWindow and activeBrowserWindow …
…properties of the window-utils module in pb supported mode
ad25835
@erikvold erikvold bug 834961: adding a pb mode test of the WindowTracker dfb443d
@erikvold erikvold adding test of getFrames from the window/utils module df99c1a
@erikvold erikvold bug 834961: adding a test of the getWindowTitle method when pb mode i…
…s not supported
8fd82ac
@Gozala Gozala was assigned
app-extension/bootstrap.js
@@ -97,6 +97,10 @@ function startup(data, reasonCode) {
let id = options.jetpackID;
let name = options.name;
+
+ // Clean the private-browsing flag
+ options.metadata[name]['private-browsing'] = options.metadata[name]['private-browsing'] === true ? true : false;
+
@Gozala Owner
Gozala added a note

This should be properly documented, so users are aware that they need to opt-in and have an idea how to do that. I also would love if we could come up with some better name for this so it's more obvious. I did some comments in that regard in one of the related bugs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/loader/cuddlefish.js
@@ -22,7 +22,6 @@ require('sdk/system/xul-app') // Otherwise CFX will stip out sdk/system/xul
const { classes: Cc, Constructor: CC, interfaces: Ci, utils: Cu } = Components;
-// `loadSandbox` is exposed by bootstrap.js
@Gozala Owner
Gozala added a note

Changes in this file are not relevant and will cause conflicts to other changes we're making, please get rid of them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/private-browsing.js
@@ -36,6 +38,28 @@ exports.removeListener = deprecateEvents(function removeListener(type, listener)
off(exports, type, listener);
});
+exports.isPrivate = function(thing) {
@Gozala Owner
Gozala added a note

Comments have being made in other pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/private-browsing/utils.js
@@ -93,5 +98,9 @@ exports.getMode = getMode;
exports.on = on.bind(null, exports);
+Object.defineProperty(exports, "usePrivateBrowsing", {
@Gozala Owner
Gozala added a note

Does not looks like we need to export this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/private-browsing/utils.js
@@ -50,6 +50,11 @@ function isWindowPrivate(win) {
}
exports.isWindowPrivate = isWindowPrivate;
+function ignoreWindow(window) {
@Gozala Owner
Gozala added a note

Maybe you should use isWindowSupported or isWindowHandled or something more predicaty name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/private-browsing/window/utils.js
@@ -0,0 +1,33 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+'use strict';
+
+module.metadata = {
+ 'stability': 'unstable'
+};
+
+const privateNS = require('../../core/namespace').ns();
+
+function getOwnerWindow(thing) {
@Gozala Owner
Gozala added a note

Commented in other pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((20 lines not shown))
}
exports.open = open;
+function close(window, callback) {
+ if (callback) {
+ // Wait for the window unload before ending test
+ window.addEventListener("unload", function onunload() {
+ window.addEventListener("unload", onunload, false);
@Gozala Owner
Gozala added a note

You meant removeEventListener

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((20 lines not shown))
}
exports.open = open;
+function close(window, callback) {
+ if (callback) {
+ // Wait for the window unload before ending test
+ window.addEventListener("unload", function onunload() {
+ window.addEventListener("unload", onunload, false);
+ callback();
+ }, false);
+ }
+
+ window.close();
+}
+exports.close = close;
+
+
+function onFocus(window, callback) {
@Gozala Owner
Gozala added a note

I think you should factor out isFocused(window) function out of this.

@Gozala Owner
Gozala added a note

I think this should use promise same promise API as commented for close.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
test/private-browsing/helper.js
((14 lines not shown))
-function LoaderWithHookedConsole() {
- let errors = [];
- let loader = Loader(module, {
- console: Object.create(console, {
- error: { value: function(e) {
- if (!/DEPRECATED:/.test(e)) {
- console.error(e);
+// need authority..
+require('window/utils');
+require('windows');
@Gozala Owner
Gozala added a note

Please use sdk/... style require these will break (for non add-on code) after we land FF integration work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala
Owner

One thing I noticed is that you tend to over-secure things, basically all window/util functions make sure they don't handle private windows if private browsing is not enabled. I don't think that's necessary I think onFocus for example should not be concerned by that. We should just make sure we do not expose a private window reference by enumerating windows or by accessing focused one, in which case other functions won't just get a window that is private. And if in some way (require("chrome")) they still manage to get hold of private window I don't see much problem in letting other util functions compatible.

@Gozala Gozala commented on the diff
lib/sdk/window/utils.js
((19 lines not shown))
}
exports.getMostRecentBrowserWindow = getMostRecentBrowserWindow;
+function getMostRecentWindow(type) {
@Gozala Owner
Gozala added a note

null return value is kind of strange, not sure why do we need to prevent returning a private window here. It's a low level API so I don't think we necessarily need to blacklist private windows here. Maybe we should ignore active window that is private in the next tire ?

@Gozala Owner
Gozala added a note

@erikvold I still think we should not return null it's kind of strange to not get any window when you ask for most recent one. On IRC you mentioned that this can happen either way, mind sharing details on when that would be a case ?

Open Firefox in osx, one window is opened, close the window and you'll find that you have no windows, but the application is still running, in this case getMostRecentWindow would return null regardless of the changes in this branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala Gozala commented on the diff
lib/sdk/window/utils.js
((11 lines not shown))
openWindow(options.parent || null,
uri,
options.name || null,
serializeFeatures(options.features || {}),
options.args || null);
+
@Gozala Owner
Gozala added a note

I think this is better and avoid dependency on ignoreWindow.

return options.private ? null : newWindow
@Gozala Owner
Gozala added a note

One the second thought I think we should always return window and instead ignore it in the higher layer calling this.

done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((20 lines not shown))
}
exports.open = open;
+function close(window, callback) {
@Gozala Owner
Gozala added a note

I assume this is internal utility function, I would prefer it to return promise that is resolved once window is closed. With optional callback argument that is registered as a handler on the returned promise if passed.

can we do this later?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((6 lines not shown))
return window.document.documentElement.getAttribute("windowtype") === BROWSER;
};
exports.isBrowser = isBrowser;
function getWindowTitle(window) {
+ // ignore private windows when they are not supported
@Gozala Owner
Gozala added a note

I don't think think we should prevent finding title of the private windows, we should just give refs to the private windows to a higher level APIs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((5 lines not shown))
const WM = Cc['@mozilla.org/appshell/window-mediator;1'].
getService(Ci.nsIWindowMediator);
+const observers = require('../deprecated/observer-service');
+const { ignoreWindow } = require('../private-browsing/utils');
@Gozala Owner
Gozala added a note

I don't think this util functions should be concerned with private browsing, neither they should ignore arguments that are private windows. I think that should happen at the next tire. More precisely only way danger is that high level APIs will by accident wrap private window, but that can only happen if the get a reference by enumerating wins, by getting an active win, or get a ref via observer notification, which in our case is more or less replaced by window tracker. IMO this module should not even know be concerned by private browsing, instead we should have a second tire module that just wraps windows from this module and ignores skips privates. It also should expose window tracker that skips privates and I don't know if getMostRecentBrowserWindow is even a concern, if it is then wrapped version of that too (although I find null return value awkward).

So the reason I think it's necessary at least for the getActiveWindow and WindowTracker to be updated to use ignoreWindow is because 3rd party modules use them and they will all need to be updated if we do not ignore private windows here for them. If we need versions of these that are unaware of pb mode then we should add them as we need them.

@Gozala Owner
Gozala added a note

So we should get rid of this dependency and instead have utility function here isPrivate that returns true if passed window is private browsing one. That utility can be used to ignore windows that are non private.

@Gozala Owner
Gozala added a note

^^^ That require should go away!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala Gozala commented on the diff
lib/sdk/deprecated/window-utils.js
@@ -159,12 +165,16 @@ Object.defineProperties(exports, {
activeWindow: {
enumerable: true,
get: function() {
- return Cc['@mozilla.org/appshell/window-mediator;1']
- .getService(Ci.nsIWindowMediator)
- .getMostRecentWindow(null);
+ return getMostRecentWindow(null);
},
set: function(window) {
@Gozala Owner
Gozala added a note

If in someway user manged to get private window I think we should allow focusing it not to mention he can already do it by just calling window.focus(). Not sure what would be a benefit of not letting it to be focused.

@Gozala Owner
Gozala added a note

That being said we should just remove activeWindow from this module IMO, or at least write some deprication warnings and remove it in few cycles.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala Gozala commented on the diff
lib/sdk/system/xul-app.js
((14 lines not shown))
for (var i = 0; i < names.length; i++)
if (is(names[i]))
return true;
return false;
};
+exports.isOneOf = isOneOf;
@Gozala Owner
Gozala added a note

I do think that's a way exports should look like, but still it would be better to avoid unrelated changes or maybe send then as separate pull request (you can keep it now, but try to avoid this in a future).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((19 lines not shown))
}
exports.getMostRecentBrowserWindow = getMostRecentBrowserWindow;
+function getMostRecentWindow(type) {
+ let window = WM.getMostRecentWindow(type);
@Gozala Owner
Gozala added a note

I think we should attempt to extend platform such that private windows will have a different type than regular browser windows. Of course we don't wanna block on that, so only reasonable option I could think of is to return last focused window that was not private.

so you are ok with the changes below for now, or do you want a change?

ah I suppose I should keep track of the order of focus then?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
@@ -189,6 +266,8 @@ function isDocumentLoaded(window) {
exports.isDocumentLoaded = isDocumentLoaded;
function isBrowser(window) {
+ if (!(window instanceof Ci.nsIDOMWindow))
+ return false;
@Gozala Owner
Gozala added a note

I assume it only can be nsIXULWindow and if you want to support that you can get dom window from it from
the util function in this module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala
Owner

@erikvold I think there are still few things we don't quite agree on, maybe I'm missing some context there. I thin we should probably talk it over IRC or Vidyo to move on.

@ochameau
Owner

Please consider squashing or splitting in meaningfull changeset before landing.

lib/sdk/window/utils.js
@@ -166,12 +241,15 @@ exports.openDialog = openDialog;
* Returns an array of all currently opened windows.
* Note that these windows may still be loading.
*/
-function windows() {
+function windows(type) {
@Gozala Owner
Gozala added a note

I think we should add second argument options. Private windows should be only included
if options.includePrivates is true.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@ochameau
Owner

Erik, wouldn't it be easier to move tests that require private-browsing permission to the test addon instead of doing the complex loader hack introduced in test/private-browsing/helper.js ?

@erikvold

@ochameau I'd like to be able to test both situations with the same test, but I admit the loader hack is complex.. I'm there is a way to make it easier to understand, I just haven't worked it out yet.

I'm thinking that making a PrivateModeTest wrapper for these tests which provides a loader that uses pb permission and a loader that does not us pb permission.

@erikvold

hmm the test addons are handy too, but 3rd party devs can't use them to test their modules without manually moving a test addon the sdk folder or linking it, so there really ought to be some examples that they can use.

@ochameau
Owner

From my perspective, it would be easier to expose a way to have custom tests addon than having to cope with complex loader hack. (Do not forget that now, test addons are 100% regular addons, there is absolutely no more magic compared to sdk tests living in test/ folder)

I don't think it is reasonable to explain how to trick the loader and the manifest parser to be able to write such test in a sane way. On top of that you will end up with different high level objects instances and if you end up being tricked because of that, it will be really hard to debug.
Finally, very few addons have unit tests and even less with such complicated tests.

@erikvold

alright I think having a optional flag for 3rd party module developers to test with pb mode supported is probably the easiest for them, so I will use a test addon for this branch.

@Gozala
Owner

@ochameau I think test addons are nice workaround but what we should really do is
run each test file as test add-on so no boilerplate associated with addon will be required. If you want to batch up tests that's fine just don't prefix tests with test- and require them from the test-my-batch.js.

That's does not mean I'm against suggestion of making a test add-on here, it's just I think a right way to go about this long term, specially for add-on tests.

@erikvold

alright @gozala, I'm ready for you to take another look at this pull request

@ochameau
Owner

@ochameau I think test addons are nice workaround but what we should really do is
run each test file as test add-on so no boilerplate associated with addon will be required. If you want to batch up tests that's fine just don't prefix tests with test- and require them from the test-my-batch.js

@gozala We can do that, but we will still need test addons where you do want addon boiterplate as you either need a dedicated data folder and/or a custom package.json with values related to the test.
For example, l10n test addon needs a locale directory with locale files; packed need the unpack attribute in its package.json, private-browsing needs the private-browsing permission in its package.json and so on. And for most of these requirements we shouldn't apply them to all test but only to the related tests.
Having said that, yes, we should somehow fix sdk tests and make them non-magical and I like your idea.

But let's start this converation in following bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=846284
Could you describe what you have in mind in the bug?

@ochameau ochameau commented on the diff
lib/sdk/test/assert.js
((20 lines not shown))
}
+ catch(e) {}
@ochameau Owner

fyi, I fixed this exception in some pull request source throws on document.location.proto attribute. (but you can keep the try/catch, as this patch may still not be landed)
We are also having another issue with source where the output is HUGE for some object and opened bug https://bugzilla.mozilla.org/show_bug.cgi?id=846290

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
test/private-browsing/helper.js
((18 lines not shown))
const { getOwnerWindow } = require('sdk/private-browsing/window/utils');
-require('sdk/tabs/utils');
-require('sdk/windows');
+// need authority..
+require('window/utils');
+require('windows');
+require('sdk/deprecated/window-utils');
+require('sdk/private-browsing/window/utils');
+require('sdk/self');
+
+function PBLoader(options) {
@ochameau Owner

I don't think you still need this custom PBLoader except for the console hook, and the right way to do it that would avoid all magic require statements being written before is to do like this:

function LoaderWithHookedConsole(module) {
  let errors = [];

  let console = Object.create(console, {
    error: {
      value: function(e) {
        errors.push(e);
        if (!/DEPRECATED:/.test(e)) {
          console.error(e);
        }
      }
    }
  });

  let loader = Loader(module, {console:console});

  return {
    loader: loader,
    errors: errors
  };
}

And then, in tests, do this:

let { LoaderWithHookedConsole } = require("private-browsing/helper");
let { loader, errors } = LoaderWithHookedConsole(module);
let windows = loader.require("windows");

The important trick is to pass to Loader constructor the module object from where you do call require(something).
So here, the module object for test-something, instead of private-browsing/helper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/helpers.js
((4 lines not shown))
+'use strict';
+
+const { defer } = require('../core/promise');
+const { open: openWindow, onFocus } = require('./utils');
+
+function open(uri, options) {
+ let deferred = defer();
+ let window = openWindow.apply(null, arguments);
+ once(window, 'load').then(deferred.resolve);
+ return deferred.promise;
+}
+exports.open = open;
+
+function close(window) {
+ let deferred = defer();
+ once(window, 'unload').then(deferred.resolve);
@Gozala Owner
Gozala added a note

Why not just return promise returned by once ? This feels like extra unnecessary work. That actually applies to all of the other functions too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/helpers.js
((18 lines not shown))
+ let deferred = defer();
+ once(window, 'unload').then(deferred.resolve);
+ window.close();
+ return deferred.promise;
+}
+exports.close = close;
+
+function focus(window) {
+ let deferred = defer();
+ onFocus(window).then(deferred.resolve);
+ window.focus();
+ return deferred.promise;
+}
+exports.focus = focus;
+
+function once(window, evt) {
@Gozala Owner
Gozala added a note

This feels too generic to be here, also note that we already have once. You could probably add promise(eventTarget, eventType, [capture]) there instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala Gozala commented on the diff
lib/sdk/window/utils.js
((28 lines not shown))
+ var childTargetWindow = {};
+ fm.getFocusedElementForWindow(window, true, childTargetWindow);
+ childTargetWindow = childTargetWindow.value;
+
+ var focusedChildWindow = {};
+ if (fm.activeWindow) {
+ fm.getFocusedElementForWindow(fm.activeWindow, true, focusedChildWindow);
+ focusedChildWindow = focusedChildWindow.value;
+ }
+
+ var focused = (focusedChildWindow == childTargetWindow);
+ if (focused) {
+ deferred.resolve();
+ }
+ else {
+ childTargetWindow.addEventListener("focus", function focusListener() {
@Gozala Owner
Gozala added a note

Looks like this could make use of once after it's moved to sdk/dom/events and renamed to promise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@Gozala Gozala commented on the diff
lib/sdk/window/utils.js
@@ -149,8 +195,13 @@ function openDialog(options) {
features = features.split(',').concat('private').join(',');
}
- let browser = WM.getMostRecentWindow(BROWSER);
- return browser.openDialog.apply(
+ let browser = getMostRecentBrowserWindow();
+
+ // if there is no browser then do nothing
@Gozala Owner
Gozala added a note

Does such case exists ? We can actually open windows regardless of this, I would rather leave it as is and submit a bug to support opening browser windows regarless of weather windows are there or not.

yes this can happen, if there no windows open. This openDialog function is just sugar for the one defined in browser.js which I think uses similar code to the open method in window/utils. I've made bug 843799 already about using require('sdk/window/utils').open instead of require('sdk/window/utils').openDialog in the sdk/windows module already, which is the only place that it seems to be used. It's a tricky thing to fix tho and I don't want to mess with that here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((10 lines not shown))
while (winEnum.hasMoreElements()) {
let window = winEnum.getNext().QueryInterface(Ci.nsIDOMWindow);
- list.push(window);
+ // only add unprivate windows when pb is not supported
+ if (options.isPrivateBrowsing || !ignoreWindow(window)) {
@Gozala Owner
Gozala added a note

As far as I remember we decided to add local isPrivateWindow(window) function to this module and do
this instead:

if (!isPrivateWindow(window) || options.private) list.push(window)

Although you was going decide weather options.private or options.includePrivates made more sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/util/iterator.js
@@ -0,0 +1,12 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+'use strict';
+
+function toArray(iterator) {
@Gozala Owner
Gozala added a note

Could you please move it to sdk/util/array and rename fromIterator.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
@@ -23,11 +25,48 @@ const BROWSER = 'navigator:browser',
NAME = '_blank',
FEATURES = 'chrome,all,dialog=no';
+let PrivateBrowsingUtils;
+try {
+ PrivateBrowsingUtils = Cu.import('resource://gre/modules/PrivateBrowsingUtils.jsm', {}).PrivateBrowsingUtils;
+}
+catch(e) { /* if this file DNE then an error will be thrown */ }
+
+function isWindowPrivate(win) {
@Gozala Owner
Gozala added a note

I would rather not add dependency on that JSM etc... This should be enough:

function isWindowPrivate(window) {
  return window.QueryInterface(Ci.nsIInterfaceRequestor)
                  .getInterface(Ci.nsIWebNavigation)
                  .QueryInterface(Ci.nsILoadContext).
                   usePrivateBrowsing
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
lib/sdk/window/utils.js
((19 lines not shown))
+ }
+
+ // Sometimes the input is not a nsIDOMWindow.. but it is still a winodw.
+ try {
+ return !!win.docShell.QueryInterface(Ci.nsILoadContext).usePrivateBrowsing;
+ }
+ catch (e) {}
+
+ return false;
+}
+exports.isWindowPrivate = isWindowPrivate;
+
+function ignoreWindow(window) {
+ return !isPrivateBrowsingSupported && isWindowPrivate(window);
+}
+exports.ignoreWindow = ignoreWindow;
@Gozala Owner
Gozala added a note

This does not belongs here, should be where it used to be. Private browsing module should depend on window/utils but window/utils should not now about private browsing support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@erikvold erikvold closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Feb 5, 2013
  1. @erikvold

    bug 834961: adding a ignoreWindow helper method, and ignoring private…

    erikvold authored
    … windows in window util modules
  2. @erikvold
  3. @erikvold
  4. @erikvold

    bug 834961: window/utils openDialog method no longer returns a privat…

    erikvold authored
    …e window if pb is not supported, now private-browsing tests are broken for pwpb builds..
Commits on Feb 6, 2013
  1. @erikvold
  2. @erikvold
  3. @erikvold

    Merge branch '828746' of github.com:erikvold/jetpack-sdk into 834961

    erikvold authored
    Conflicts:
    	test/test-private-browsing.js
  4. @erikvold
Commits on Feb 7, 2013
  1. @erikvold
  2. @erikvold

    bug 834961: adding PWPB test of the windowIterator, adding a helper c…

    erikvold authored
    …lose method to window utils
  3. @erikvold

    bug 834961 adding a test of the activeWindow and activeBrowserWindow …

    erikvold authored
    …properties of the window-utils module in pb supported mode
  4. @erikvold
  5. @erikvold
  6. @erikvold
Commits on Feb 9, 2013
  1. @erikvold

    bug 834961: moving continueAfterFocus method to the window/utils modu…

    erikvold authored
    …le and ignoring private windows
  2. @erikvold

    bug 834961: created onFocus in window/utils module using it in tests,…

    erikvold authored
    … and testing activeWindow setter on window-utils module
Commits on Feb 21, 2013
  1. @erikvold

    Merge branch 'master' of git://github.com/mozilla/addon-sdk into 834961

    erikvold authored
    Conflicts:
    	lib/sdk/private-browsing.js
    	lib/sdk/private-browsing/utils.js
    	test/private-browsing/helper.js
    	test/private-browsing/windows.js
    	test/test-private-browsing.js
  2. @erikvold

    bug 834961: no longer prevent opening of private windows in window/ut…

    erikvold authored
    …ils, it is prevented in high level windows module still however. Also fixing issues using the loader in test/private-browsing/helper
  3. @erikvold
  4. @erikvold
  5. @erikvold
  6. @erikvold
  7. @erikvold

    Revert "bug 834961: ignoreWindow -> isWindowSupported"

    erikvold authored
    This reverts commit d278c3c.
Commits on Feb 26, 2013
  1. @erikvold
  2. @erikvold

    bug 834961: removing ignoreWindow checks on methods that take a windo…

    erikvold authored
    …w as an argument
    
    Also addressing some review comments
  3. @erikvold
  4. @erikvold
Commits on Feb 28, 2013
  1. @erikvold

    Merge branch 'master' of git://github.com/mozilla/addon-sdk into 834961

    erikvold authored
    Conflicts:
    	test/test-private-browsing.js
  2. @erikvold

    bug 834961: updating the window utils modules to no longer ignore pri…

    erikvold authored
    …vate windows when getting the active window
  3. @erikvold
  4. @erikvold
  5. @erikvold
  6. @erikvold
  7. @erikvold
  8. @erikvold
Commits on Mar 1, 2013
  1. @erikvold

    cleaning up window/helpers

    erikvold authored
  2. @erikvold

    windows() now always ignores private windows by default, unless priva…

    erikvold authored
    …te windows are also explicitly requested
Something went wrong with that request. Please try again.