Skip to content
This repository has been archived by the owner on Feb 26, 2022. It is now read-only.

Commit

Permalink
cleaning up window/helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvold committed Mar 1, 2013
1 parent d9c3b88 commit 16b11bc
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 21 deletions.
30 changes: 14 additions & 16 deletions lib/sdk/window/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,35 @@ 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;
return promise(openWindow.apply(null, arguments), 'load');
}
exports.open = open;

function close(window) {
let deferred = defer();
once(window, 'unload').then(deferred.resolve);
// unload event could happen so fast that it is not resolved
// if we listen to unload after calling close()
let p = promise(window, 'unload');
window.close();
return deferred.promise;
return p;
}
exports.close = close;

function focus(window) {
let deferred = defer();
onFocus(window).then(deferred.resolve);
let p = onFocus(window);
window.focus();
return deferred.promise;
return p;
}
exports.focus = focus;

function once(window, evt) {
function promise(target, evt, capture) {
let deferred = defer();
capture = !!capture;

window.addEventListener(evt, function eventHandler() {
window.removeEventListener(evt, eventHandler, false);
deferred.resolve(window);
}, false);
target.addEventListener(evt, function eventHandler() {
target.removeEventListener(evt, eventHandler, capture);
deferred.resolve(target);
}, capture);

return deferred.promise;
}
exports.once = once;
exports.promise = promise;
2 changes: 1 addition & 1 deletion test/addons/private-browsing-supported/windows.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const { isPrivate } = require('sdk/private-browsing');
const { isWindowPBSupported } = require('sdk/private-browsing/utils');
const { isWindowPrivate } = require('../window/utils');
const { onFocus, getMostRecentWindow, getWindowTitle, getFrames, windows, open: openWindow } = require('sdk/window/utils');
const { open, close, focus, once } = require('sdk/window/helpers');
const { open, close, focus, promise } = require('sdk/window/helpers');
const { browserWindows } = require("sdk/windows");
const winUtils = require("sdk/deprecated/window-utils");
const { fromIterator: toArray } = require('sdk/util/array');
Expand Down
6 changes: 3 additions & 3 deletions test/private-browsing/windows.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

const { pb, pbUtils } = require('./helper');
const { openDialog, open } = require('window/utils');
const { once, close } = require('sdk/window/helpers');
const { promise, close } = require('sdk/window/helpers');
const { isPrivate } = require('sdk/private-browsing');
const { browserWindows: windows } = require('sdk/windows');

Expand All @@ -17,7 +17,7 @@ exports.testPerWindowPrivateBrowsingGetter = function(assert, done) {
private: true
});

once(win, 'DOMContentLoaded').then(function onload() {
promise(win, 'DOMContentLoaded').then(function onload() {
assert.equal(pbUtils.getMode(win),
true, 'Newly opened window is in PB mode');
assert.ok(isPrivate(win), 'isPrivate(window) is true');
Expand All @@ -40,7 +40,7 @@ exports.testPerWindowPrivateBrowsingGetter = function(assert, done) {
}
});

once(win, 'DOMContentLoaded').then(function onload() {
promise(win, 'DOMContentLoaded').then(function onload() {
assert.equal(pbUtils.getMode(win),
true, 'Newly opened window is in PB mode');
assert.ok(isPrivate(win), 'isPrivate(window) is true');
Expand Down
2 changes: 1 addition & 1 deletion test/test-window-utils2.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ exports['test new top window with options'] = function(assert, done) {
close(window).then(done);
};

exports['test backgroundify'] = function(assert, done) {
exports.testBackgroundify = function(assert, done) {
let window = open('data:text/html;charset=utf-8,backgroundy');
assert.ok(~windows().indexOf(window),
'window is in the list of windows');
Expand Down

0 comments on commit 16b11bc

Please sign in to comment.