diff options
Diffstat (limited to 'browser/base/content/test/urlbar/browser_bug304198.js')
-rw-r--r-- | browser/base/content/test/urlbar/browser_bug304198.js | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/browser/base/content/test/urlbar/browser_bug304198.js b/browser/base/content/test/urlbar/browser_bug304198.js new file mode 100644 index 000000000..dc8d39fae --- /dev/null +++ b/browser/base/content/test/urlbar/browser_bug304198.js @@ -0,0 +1,109 @@ +/* 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/. */ + +add_task(function* () { + let charsToDelete, deletedURLTab, fullURLTab, partialURLTab, testPartialURL, testURL; + + charsToDelete = 5; + deletedURLTab = gBrowser.addTab(); + fullURLTab = gBrowser.addTab(); + partialURLTab = gBrowser.addTab(); + testURL = "http://example.org/browser/browser/base/content/test/urlbar/dummy_page.html"; + + let loaded1 = BrowserTestUtils.browserLoaded(deletedURLTab.linkedBrowser, testURL); + let loaded2 = BrowserTestUtils.browserLoaded(fullURLTab.linkedBrowser, testURL); + let loaded3 = BrowserTestUtils.browserLoaded(partialURLTab.linkedBrowser, testURL); + deletedURLTab.linkedBrowser.loadURI(testURL); + fullURLTab.linkedBrowser.loadURI(testURL); + partialURLTab.linkedBrowser.loadURI(testURL); + yield Promise.all([loaded1, loaded2, loaded3]); + + testURL = gURLBar.trimValue(testURL); + testPartialURL = testURL.substr(0, (testURL.length - charsToDelete)); + + function cleanUp() { + gBrowser.removeTab(fullURLTab); + gBrowser.removeTab(partialURLTab); + gBrowser.removeTab(deletedURLTab); + } + + function* cycleTabs() { + yield BrowserTestUtils.switchTab(gBrowser, fullURLTab); + is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after switching back to fullURLTab'); + + yield BrowserTestUtils.switchTab(gBrowser, partialURLTab); + is(gURLBar.textValue, testPartialURL, 'gURLBar.textValue should be testPartialURL after switching back to partialURLTab'); + yield BrowserTestUtils.switchTab(gBrowser, deletedURLTab); + is(gURLBar.textValue, '', 'gURLBar.textValue should be "" after switching back to deletedURLTab'); + + yield BrowserTestUtils.switchTab(gBrowser, fullURLTab); + is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after switching back to fullURLTab'); + } + + function urlbarBackspace() { + return new Promise((resolve, reject) => { + gBrowser.selectedBrowser.focus(); + gURLBar.addEventListener("input", function () { + gURLBar.removeEventListener("input", arguments.callee, false); + resolve(); + }, false); + gURLBar.focus(); + if (gURLBar.selectionStart == gURLBar.selectionEnd) { + gURLBar.selectionStart = gURLBar.selectionEnd = gURLBar.textValue.length; + } + EventUtils.synthesizeKey("VK_BACK_SPACE", {}); + }); + } + + function* prepareDeletedURLTab() { + yield BrowserTestUtils.switchTab(gBrowser, deletedURLTab); + is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after initial switch to deletedURLTab'); + + // simulate the user removing the whole url from the location bar + gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", true); + + yield urlbarBackspace(); + is(gURLBar.textValue, "", 'gURLBar.textValue should be "" (just set)'); + if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll")) { + gPrefService.clearUserPref("browser.urlbar.clickSelectsAll"); + } + } + + function* prepareFullURLTab() { + yield BrowserTestUtils.switchTab(gBrowser, fullURLTab); + is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after initial switch to fullURLTab'); + } + + function* preparePartialURLTab() { + yield BrowserTestUtils.switchTab(gBrowser, partialURLTab); + is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after initial switch to partialURLTab'); + + // simulate the user removing part of the url from the location bar + gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", false); + + let deleted = 0; + while (deleted < charsToDelete) { + yield urlbarBackspace(arguments.callee); + deleted++; + } + + is(gURLBar.textValue, testPartialURL, "gURLBar.textValue should be testPartialURL (just set)"); + if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll")) { + gPrefService.clearUserPref("browser.urlbar.clickSelectsAll"); + } + } + + // prepare the three tabs required by this test + + // First tab + yield* prepareFullURLTab(); + yield* preparePartialURLTab(); + yield* prepareDeletedURLTab(); + + // now cycle the tabs and make sure everything looks good + yield* cycleTabs(); + cleanUp(); +}); + + |