/* 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'; const { Loader } = require('sdk/test/loader'); const { browserWindows } = require('sdk/windows'); const { isFocused } = require('sdk/window/utils'); const { viewFor } = require('sdk/view/core'); const { modelFor } = require('sdk/model/core'); const { Ci } = require("chrome"); const { isBrowser, getWindowTitle } = require("sdk/window/utils"); const { after, cleanUI } = require("sdk/test/utils"); // TEST: browserWindows Iterator exports.testBrowserWindowsIterator = function(assert) { let activeWindowCount = 0; let windows = []; let i = 0; for (let window of browserWindows) { if (window === browserWindows.activeWindow) activeWindowCount++; assert.equal(windows.indexOf(window), -1, 'window not already in iterator'); assert.equal(browserWindows[i++], window, 'browserWindows[x] works'); windows.push(window); } assert.equal(activeWindowCount, 1, 'activeWindow was found in the iterator'); i = 0; for (let j in browserWindows) { assert.equal(j, i++, 'for (x in browserWindows) works'); } }; exports.testActiveWindowIsFocused = function(assert) { assert.ok(isFocused(browserWindows.activeWindow), 'the active window is focused'); } exports.testWindowTabsObject_alt = function(assert, done) { let window = browserWindows.activeWindow; window.tabs.open({ url: 'data:text/html;charset=utf-8,tab 2', inBackground: true, onReady: function onReady(tab) { assert.equal(tab.title, 'tab 2', 'Correct new tab title'); assert.notEqual(window.tabs.activeTab, tab, 'Correct active tab'); // end test tab.close(done); } }); }; // TEST: browserWindows.activeWindow exports.testWindowActivateMethod_simple = function(assert) { let window = browserWindows.activeWindow; let tab = window.tabs.activeTab; window.activate(); assert.equal(browserWindows.activeWindow, window, 'Active window is active after window.activate() call'); assert.equal(window.tabs.activeTab, tab, 'Active tab is active after window.activate() call'); }; exports["test getView(window)"] = function*(assert) { let window = yield new Promise(resolve => { browserWindows.once("open", resolve); browserWindows.open({ url: "data:text/html;charset=utf-8,yo" }); }); const view = viewFor(window); assert.ok(view instanceof Ci.nsIDOMWindow, "view is a window"); assert.ok(isBrowser(view), "view is a browser window"); assert.equal(getWindowTitle(view), window.title, "window has a right title"); }; exports["test modelFor(window)"] = function(assert, done) { browserWindows.once("open", window => { const view = viewFor(window); assert.ok(view instanceof Ci.nsIDOMWindow, "view is a window"); assert.ok(isBrowser(view), "view is a browser window"); assert.ok(modelFor(view) === window, "modelFor(browserWindow) is SDK window"); window.close(done); }); browserWindows.open({ url: "data:text/html;charset=utf-8,yo" }); }; after(exports, function*(name, assert) { assert.pass("cleaning the ui."); yield cleanUI(); }); require('sdk/test').run(exports);