michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: add_task(function* test_switchtab_override() { michael@0: let testURL = "http://example.org/browser/browser/base/content/test/general/dummy_page.html"; michael@0: michael@0: info("Opening first tab"); michael@0: let tab = gBrowser.addTab(testURL); michael@0: let deferred = Promise.defer(); michael@0: whenTabLoaded(tab, deferred.resolve); michael@0: yield deferred.promise; michael@0: michael@0: info("Opening and selecting second tab"); michael@0: let secondTab = gBrowser.selectedTab = gBrowser.addTab(); michael@0: registerCleanupFunction(() => { michael@0: try { michael@0: gBrowser.removeTab(tab); michael@0: gBrowser.removeTab(secondTab); michael@0: } catch(ex) { /* tabs may have already been closed in case of failure */ } michael@0: }); michael@0: michael@0: info("Wait for autocomplete") michael@0: deferred = Promise.defer(); michael@0: let onSearchComplete = gURLBar.onSearchComplete; michael@0: registerCleanupFunction(() => { michael@0: gURLBar.onSearchComplete = onSearchComplete; michael@0: }); michael@0: gURLBar.onSearchComplete = function () { michael@0: ok(gURLBar.popupOpen, "The autocomplete popup is correctly open"); michael@0: onSearchComplete.apply(gURLBar); michael@0: deferred.resolve(); michael@0: } michael@0: michael@0: gURLBar.focus(); michael@0: gURLBar.value = "dummy_pag"; michael@0: EventUtils.synthesizeKey("e" , {}); michael@0: yield deferred.promise; michael@0: michael@0: info("Select first autocomplete popup entry"); michael@0: EventUtils.synthesizeKey("VK_DOWN" , {}); michael@0: ok(/moz-action:switchtab/.test(gURLBar.value), "switch to tab entry found"); michael@0: michael@0: info("Override switch-to-tab"); michael@0: let deferred = Promise.defer(); michael@0: // In case of failure this would switch tab. michael@0: let onTabSelect = event => { michael@0: deferred.reject(new Error("Should have overridden switch to tab")); michael@0: }; michael@0: gBrowser.tabContainer.addEventListener("TabSelect", onTabSelect, false); michael@0: registerCleanupFunction(() => { michael@0: gBrowser.tabContainer.removeEventListener("TabSelect", onTabSelect, false); michael@0: }); michael@0: // Otherwise it would load the page. michael@0: whenTabLoaded(secondTab, deferred.resolve); michael@0: michael@0: EventUtils.synthesizeKey("VK_SHIFT" , { type: "keydown" }); michael@0: EventUtils.synthesizeKey("VK_RETURN" , { }); michael@0: EventUtils.synthesizeKey("VK_SHIFT" , { type: "keyup" }); michael@0: yield deferred.promise; michael@0: michael@0: yield promiseClearHistory(); michael@0: });