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: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: let charsToDelete, deletedURLTab, fullURLTab, partialURLTab, testPartialURL, testURL; michael@0: michael@0: charsToDelete = 5; michael@0: deletedURLTab = gBrowser.addTab(); michael@0: fullURLTab = gBrowser.addTab(); michael@0: partialURLTab = gBrowser.addTab(); michael@0: testURL = "http://example.org/browser/browser/base/content/test/general/dummy_page.html"; michael@0: michael@0: function cleanUp() { michael@0: gBrowser.removeTab(fullURLTab); michael@0: gBrowser.removeTab(partialURLTab); michael@0: gBrowser.removeTab(deletedURLTab); michael@0: } michael@0: michael@0: function cycleTabs() { michael@0: gBrowser.selectedTab = fullURLTab; michael@0: is(gURLBar.value, testURL, 'gURLBar.value should be testURL after switching back to fullURLTab'); michael@0: michael@0: gBrowser.selectedTab = partialURLTab; michael@0: is(gURLBar.value, testPartialURL, 'gURLBar.value should be testPartialURL after switching back to partialURLTab'); michael@0: michael@0: gBrowser.selectedTab = deletedURLTab; michael@0: is(gURLBar.value, '', 'gURLBar.value should be "" after switching back to deletedURLTab'); michael@0: michael@0: gBrowser.selectedTab = fullURLTab; michael@0: is(gURLBar.value, testURL, 'gURLBar.value should be testURL after switching back to fullURLTab'); michael@0: } michael@0: michael@0: // function borrowed from browser_bug386835.js michael@0: function load(tab, url, cb) { michael@0: tab.linkedBrowser.addEventListener("load", function (event) { michael@0: event.currentTarget.removeEventListener("load", arguments.callee, true); michael@0: cb(); michael@0: }, true); michael@0: tab.linkedBrowser.loadURI(url); michael@0: } michael@0: michael@0: function urlbarBackspace(cb) { michael@0: gBrowser.selectedBrowser.focus(); michael@0: gURLBar.addEventListener("focus", function () { michael@0: gURLBar.removeEventListener("focus", arguments.callee, false); michael@0: gURLBar.addEventListener("input", function () { michael@0: gURLBar.removeEventListener("input", arguments.callee, false); michael@0: cb(); michael@0: }, false); michael@0: executeSoon(function () { michael@0: EventUtils.synthesizeKey("VK_BACK_SPACE", {}); michael@0: }); michael@0: }, false); michael@0: gURLBar.focus(); michael@0: } michael@0: michael@0: function prepareDeletedURLTab(cb) { michael@0: gBrowser.selectedTab = deletedURLTab; michael@0: is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to deletedURLTab'); michael@0: michael@0: // simulate the user removing the whole url from the location bar michael@0: gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", true); michael@0: michael@0: urlbarBackspace(function () { michael@0: is(gURLBar.value, "", 'gURLBar.value should be "" (just set)'); michael@0: if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll")) michael@0: gPrefService.clearUserPref("browser.urlbar.clickSelectsAll"); michael@0: cb(); michael@0: }); michael@0: } michael@0: michael@0: function prepareFullURLTab(cb) { michael@0: gBrowser.selectedTab = fullURLTab; michael@0: is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to fullURLTab'); michael@0: cb(); michael@0: } michael@0: michael@0: function preparePartialURLTab(cb) { michael@0: gBrowser.selectedTab = partialURLTab; michael@0: is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to partialURLTab'); michael@0: michael@0: // simulate the user removing part of the url from the location bar michael@0: gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", false); michael@0: michael@0: var deleted = 0; michael@0: urlbarBackspace(function () { michael@0: deleted++; michael@0: if (deleted < charsToDelete) { michael@0: urlbarBackspace(arguments.callee); michael@0: } else { michael@0: is(gURLBar.value, testPartialURL, "gURLBar.value should be testPartialURL (just set)"); michael@0: if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll")) michael@0: gPrefService.clearUserPref("browser.urlbar.clickSelectsAll"); michael@0: cb(); michael@0: } michael@0: }); michael@0: } michael@0: michael@0: function runTests() { michael@0: testURL = gURLBar.trimValue(testURL); michael@0: testPartialURL = testURL.substr(0, (testURL.length - charsToDelete)); michael@0: michael@0: // prepare the three tabs required by this test michael@0: prepareFullURLTab(function () { michael@0: preparePartialURLTab(function () { michael@0: prepareDeletedURLTab(function () { michael@0: // now cycle the tabs and make sure everything looks good michael@0: cycleTabs(); michael@0: cleanUp(); michael@0: finish(); michael@0: }); michael@0: }); michael@0: }); michael@0: } michael@0: michael@0: load(deletedURLTab, testURL, function() { michael@0: load(fullURLTab, testURL, function() { michael@0: load(partialURLTab, testURL, runTests); michael@0: }); michael@0: }); michael@0: } michael@0: