diff options
Diffstat (limited to 'addon-sdk/source/test/test-window-utils.js')
-rw-r--r-- | addon-sdk/source/test/test-window-utils.js | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/addon-sdk/source/test/test-window-utils.js b/addon-sdk/source/test/test-window-utils.js deleted file mode 100644 index 77a9d8d6a..000000000 --- a/addon-sdk/source/test/test-window-utils.js +++ /dev/null @@ -1,266 +0,0 @@ -/* 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 = { - engines: { - 'Firefox': '*' - } -}; - -const windowUtils = require("sdk/deprecated/window-utils"); -const timer = require("sdk/timers"); -const { Cc, Ci } = require("chrome"); -const { Loader } = require("sdk/test/loader"); -const { open, getFrames, getWindowTitle, onFocus, windows } = require('sdk/window/utils'); -const { close } = require('sdk/window/helpers'); -const { fromIterator: toArray } = require('sdk/util/array'); - -const WM = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator); - -function makeEmptyWindow(options) { - options = options || {}; - var xulNs = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; - var blankXul = ('<?xml version="1.0"?>' + - '<?xml-stylesheet href="chrome://global/skin/" ' + - ' type="text/css"?>' + - '<window xmlns="' + xulNs + '" windowtype="test:window">' + - '</window>'); - - return open("data:application/vnd.mozilla.xul+xml;charset=utf-8," + escape(blankXul), { - features: { - chrome: true, - width: 10, - height: 10 - } - }); -} - -exports.testWindowTracker = function(assert, done) { - var myWindow = makeEmptyWindow(); - assert.pass('window was created'); - - myWindow.addEventListener("load", function onload() { - myWindow.removeEventListener("load", onload, false); - assert.pass("test window has opened"); - - // test bug 638007 (new is optional), using new - var wt = new windowUtils.WindowTracker({ - onTrack: window => { - if (window === myWindow) { - assert.pass("onTrack() called with our test window"); - close(window); - } - }, - onUntrack: window => { - if (window === myWindow) { - assert.pass("onUntrack() called with our test window"); - wt.unload(); - timer.setTimeout(done); - } - } - }); - }, false); -}; - -exports['test window watcher untracker'] = function(assert, done) { - var myWindow; - var tracks = 0; - var unloadCalled = false; - - var delegate = { - onTrack: function(window) { - tracks = tracks + 1; - if (window == myWindow) { - assert.pass("onTrack() called with our test window"); - timer.setTimeout(function() { - myWindow.close(); - }, 1); - } - }, - onUntrack: function(window) { - tracks = tracks - 1; - if (window == myWindow && !unloadCalled) { - unloadCalled = true; - timer.setTimeout(function() { - wt.unload(); - }, 1); - } - if (0 > tracks) { - assert.fail("WindowTracker onUntrack was called more times than onTrack.."); - } - else if (0 == tracks) { - timer.setTimeout(function() { - myWindow = null; - done(); - }, 1); - } - } - }; - - // test bug 638007 (new is optional), not using new - var wt = windowUtils.WindowTracker(delegate); - myWindow = makeEmptyWindow(); -}; - -// test that _unregWindow calls _unregLoadingWindow -exports['test window watcher unregs 4 loading wins'] = function(assert, done) { - var myWindow; - var finished = false; - let browserWindow = WM.getMostRecentWindow("navigator:browser"); - var counter = 0; - - var delegate = { - onTrack: function(window) { - var type = window.document.documentElement.getAttribute("windowtype"); - if (type == "test:window") - assert.fail("onTrack shouldn't have been executed."); - } - }; - var wt = new windowUtils.WindowTracker(delegate); - - // make a new window - myWindow = makeEmptyWindow(); - - // make sure that the window hasn't loaded yet - assert.notEqual( - myWindow.document.readyState, - "complete", - "window hasn't loaded yet."); - - // unload WindowTracker - wt.unload(); - - // make sure that the window still hasn't loaded, which means that the onTrack - // would have been removed successfully assuming that it doesn't execute. - assert.notEqual( - myWindow.document.readyState, - "complete", - "window still hasn't loaded yet."); - - // wait for the window to load and then close it. onTrack wouldn't be called - // until the window loads, so we must let it load before closing it to be - // certain that onTrack was removed. - myWindow.addEventListener("load", function() { - // allow all of the load handles to execute before closing - myWindow.setTimeout(function() { - myWindow.addEventListener("unload", function() { - // once the window unloads test is done - done(); - }, false); - myWindow.close(); - }, 0); - }, false); -} - -exports['test window watcher without untracker'] = function(assert, done) { - let myWindow; - let wt = new windowUtils.WindowTracker({ - onTrack: function(window) { - if (window == myWindow) { - assert.pass("onTrack() called with our test window"); - - close(myWindow).then(function() { - wt.unload(); - done(); - }, assert.fail); - } - } - }); - - myWindow = makeEmptyWindow(); -}; - -exports['test active window'] = function(assert, done) { - let browserWindow = WM.getMostRecentWindow("navigator:browser"); - let continueAfterFocus = window => onFocus(window).then(nextTest); - - assert.equal(windowUtils.activeBrowserWindow, browserWindow, - "Browser window is the active browser window."); - - - let testSteps = [ - function() { - continueAfterFocus(windowUtils.activeWindow = browserWindow); - }, - function() { - assert.equal(windowUtils.activeWindow, browserWindow, - "Correct active window [1]"); - nextTest(); - }, - function() { - assert.equal(windowUtils.activeBrowserWindow, browserWindow, - "Correct active browser window [2]"); - continueAfterFocus(windowUtils.activeWindow = browserWindow); - }, - function() { - assert.equal(windowUtils.activeWindow, browserWindow, - "Correct active window [3]"); - nextTest(); - }, - function() { - assert.equal(windowUtils.activeBrowserWindow, browserWindow, - "Correct active browser window [4]"); - done(); - } - ]; - - function nextTest() { - if (testSteps.length) - testSteps.shift()(); - } - nextTest(); -}; - -exports.testWindowIterator = function(assert, done) { - // make a new window - let window = makeEmptyWindow(); - - // make sure that the window hasn't loaded yet - assert.notEqual( - window.document.readyState, - "complete", - "window hasn't loaded yet."); - - // this window should only appear in windowIterator() while its loading - assert.ok(toArray(windowUtils.windowIterator()).indexOf(window) === -1, - "window isn't in windowIterator()"); - - // Then it should be in windowIterator() - window.addEventListener("load", function onload() { - window.addEventListener("load", onload, false); - assert.ok(toArray(windowUtils.windowIterator()).indexOf(window) !== -1, - "window is now in windowIterator()"); - - // Wait for the window unload before ending test - close(window).then(done); - }, false); -}; - -exports.testIgnoreClosingWindow = function(assert, done) { - assert.equal(windows().length, 1, "Only one window open"); - - // make a new window - let window = makeEmptyWindow(); - - assert.equal(windows().length, 2, "Two windows open"); - - window.addEventListener("load", function onload() { - window.addEventListener("load", onload, false); - - assert.equal(windows().length, 2, "Two windows open"); - - // Wait for the window unload before ending test - let checked = false; - - close(window).then(function() { - assert.ok(checked, 'the test is finished'); - }).then(done, assert.fail) - - assert.equal(windows().length, 1, "Only one window open"); - checked = true; - }, false); -}; - -require("sdk/test").run(exports); |