Bug 1067903 - Part 3: Update tests to deal with autoselect and textValue. r=mak

--HG--
extra : transplant_source : %27%23%DC/%3E%866%CB%AC%FD%87%8C%16hP%28%B8%04%F4O
This commit is contained in:
Blair McBride 2014-11-24 12:19:44 +13:00
Родитель 33080ce19a
Коммит 6a76308101
22 изменённых файлов: 214 добавлений и 77 удалений

Просмотреть файл

@ -122,6 +122,8 @@ skip-if = os == "linux" || e10s # Bug 1073339 - Investigate autocomplete test un
[browser_alltabslistener.js] [browser_alltabslistener.js]
[browser_autocomplete_a11y_label.js] [browser_autocomplete_a11y_label.js]
skip-if = e10s # Bug 1101993 - times out for unknown reasons when run in the dir (works on its own) skip-if = e10s # Bug 1101993 - times out for unknown reasons when run in the dir (works on its own)
[browser_autocomplete_autoselect.js]
skip-if = os == "linux" || e10s # Bug 1073339 - Investigate autocomplete test unreliability on Linux/e10s
[browser_backButtonFitts.js] [browser_backButtonFitts.js]
skip-if = os != "win" || e10s # The Fitts Law back button is only supported on Windows (bug 571454) / e10s - Bug 1099154: test touches content (attempts to add an event listener directly to the contentWindow) skip-if = os != "win" || e10s # The Fitts Law back button is only supported on Windows (bug 571454) / e10s - Bug 1099154: test touches content (attempts to add an event listener directly to the contentWindow)
[browser_blob-channelname.js] [browser_blob-channelname.js]
@ -289,7 +291,7 @@ skip-if = e10s # Bug 1093155 - tries to use context menu from browser-chrome and
skip-if = os == 'win' || e10s # Bug 1056146 - zoom tests use FullZoomHelper and break in e10s skip-if = os == 'win' || e10s # Bug 1056146 - zoom tests use FullZoomHelper and break in e10s
[browser_bug1064280_changeUrlInPinnedTab.js] [browser_bug1064280_changeUrlInPinnedTab.js]
[browser_bug1070778.js] [browser_bug1070778.js]
skip-if = os == "linux" # Bug 1073339 - Investigate autocomplete test unreliability on Linux skip-if = os == "linux" || e10s # Bug 1073339 - Investigate autocomplete test unreliability on Linux/e10s
[browser_canonizeURL.js] [browser_canonizeURL.js]
skip-if = e10s # Bug 1094510 - test hits the network in e10s mode only skip-if = e10s # Bug 1094510 - test hits the network in e10s mode only
[browser_contentAreaClick.js] [browser_contentAreaClick.js]

Просмотреть файл

@ -31,7 +31,7 @@ let tests = [
function revert(next) { function revert(next) {
loadTabInWindow(window, function (tab) { loadTabInWindow(window, function (tab) {
gURLBar.handleRevert(); gURLBar.handleRevert();
is(gURLBar.value, "example.com", "URL bar had user/pass stripped after reverting"); is(gURLBar.textValue, "example.com", "URL bar had user/pass stripped after reverting");
gBrowser.removeTab(tab); gBrowser.removeTab(tab);
next(); next();
}); });
@ -44,7 +44,7 @@ let tests = [
loadTabInWindow(win, function () { loadTabInWindow(win, function () {
openToolbarCustomizationUI(function () { openToolbarCustomizationUI(function () {
closeToolbarCustomizationUI(function () { closeToolbarCustomizationUI(function () {
is(win.gURLBar.value, "example.com", "URL bar had user/pass stripped after customize"); is(win.gURLBar.textValue, "example.com", "URL bar had user/pass stripped after customize");
win.close(); win.close();
next(); next();
}, win); }, win);
@ -59,7 +59,7 @@ let tests = [
// error. // error.
tab.linkedBrowser.loadURI("http://test1.example.com"); tab.linkedBrowser.loadURI("http://test1.example.com");
tab.linkedBrowser.stop(); tab.linkedBrowser.stop();
is(gURLBar.value, "example.com", "URL bar had user/pass stripped after load error"); is(gURLBar.textValue, "example.com", "URL bar had user/pass stripped after load error");
gBrowser.removeTab(tab); gBrowser.removeTab(tab);
next(); next();
}); });
@ -76,7 +76,7 @@ function loadTabInWindow(win, callback) {
return; return;
tab.linkedBrowser.removeEventListener("load", listener, true); tab.linkedBrowser.removeEventListener("load", listener, true);
is(win.gURLBar.value, "example.com", "URL bar had user/pass stripped initially"); is(win.gURLBar.textValue, "example.com", "URL bar had user/pass stripped initially");
callback(tab); callback(tab);
}, true); }, true);
} }

Просмотреть файл

@ -43,11 +43,14 @@ add_task(function* () {
let result = yield promise_first_result("open a search"); let result = yield promise_first_result("open a search");
isnot(result, null, "Should have a result"); isnot(result, null, "Should have a result");
is(result.getAttribute("url"),
`moz-action:searchengine,{"engineName":"MozSearch","input":"open a search","searchQuery":"open a search"}`,
"Result should be a moz-action: for the correct search engine");
is(result.hasAttribute("image"), false, "Result shouldn't have an image attribute"); is(result.hasAttribute("image"), false, "Result shouldn't have an image attribute");
let tabPromise = promiseTabLoaded(gBrowser.selectedTab); let tabPromise = promiseTabLoaded(gBrowser.selectedTab);
EventUtils.synthesizeMouseAtCenter(result, {}); EventUtils.synthesizeMouseAtCenter(result, {});
yield tabPromise; yield tabPromise;
is(gBrowser.selectedBrowser.currentURI.spec, "http://example.com/?q=open+a+search"); is(gBrowser.selectedBrowser.currentURI.spec, "http://example.com/?q=open+a+search", "Correct URL should be loaded");
}); });

Просмотреть файл

@ -0,0 +1,59 @@
function repeat(limit, func) {
for (let i = 0; i < limit; i++) {
func(i);
}
}
function* promiseAutoComplete(inputText) {
gURLBar.focus();
gURLBar.value = inputText.slice(0, -1);
EventUtils.synthesizeKey(inputText.slice(-1), {});
yield promiseSearchComplete();
}
function is_selected(index) {
is(gURLBar.popup.richlistbox.selectedIndex, index, `Item ${index + 1} should be selected`);
}
add_task(function*() {
registerCleanupFunction(promiseClearHistory);
let visits = [];
repeat(10, i => {
visits.push({
uri: makeURI("http://example.com/autocomplete/?" + i),
});
});
yield PlacesTestUtils.addVisits(visits);
yield promiseAutoComplete("example.com/autocomplete");
let popup = gURLBar.popup;
let results = popup.richlistbox.children;
// 1 extra for the current search engine match
is(results.length, 11, "Should get 11 results");
is_selected(0);
info("Key Down to select the next item");
EventUtils.synthesizeKey("VK_DOWN", {});
is_selected(1);
info("Key Down 11 times should wrap around all the way around");
repeat(11, () => EventUtils.synthesizeKey("VK_DOWN", {}));
is_selected(1);
info("Key Up 11 times should wrap around the other way");
repeat(11, () => EventUtils.synthesizeKey("VK_UP", {}));
is_selected(1);
info("Page Up will go up the list, but not wrap");
EventUtils.synthesizeKey("VK_PAGE_UP", {})
is_selected(0);
info("Page Up again will wrap around to the end of the list");
EventUtils.synthesizeKey("VK_PAGE_UP", {})
is_selected(10);
EventUtils.synthesizeKey("VK_ESCAPE", {});
yield promisePopupHidden(gURLBar.popup);
});

Просмотреть файл

@ -35,7 +35,7 @@ add_task(function* test_switchtab_override() {
onSearchComplete.apply(gURLBar); onSearchComplete.apply(gURLBar);
deferred.resolve(); deferred.resolve();
} }
gURLBar.focus(); gURLBar.focus();
gURLBar.value = "dummy_pag"; gURLBar.value = "dummy_pag";
EventUtils.synthesizeKey("e" , {}); EventUtils.synthesizeKey("e" , {});
@ -43,7 +43,6 @@ add_task(function* test_switchtab_override() {
info("Select second autocomplete popup entry"); info("Select second autocomplete popup entry");
EventUtils.synthesizeKey("VK_DOWN" , {}); EventUtils.synthesizeKey("VK_DOWN" , {});
EventUtils.synthesizeKey("VK_DOWN" , {});
ok(/moz-action:switchtab/.test(gURLBar.value), "switch to tab entry found"); ok(/moz-action:switchtab/.test(gURLBar.value), "switch to tab entry found");
info("Override switch-to-tab"); info("Override switch-to-tab");
@ -61,6 +60,7 @@ add_task(function* test_switchtab_override() {
EventUtils.synthesizeKey("VK_SHIFT" , { type: "keydown" }); EventUtils.synthesizeKey("VK_SHIFT" , { type: "keydown" });
EventUtils.synthesizeKey("VK_RETURN" , { }); EventUtils.synthesizeKey("VK_RETURN" , { });
info(`gURLBar.value = ${gURLBar.value}`);
EventUtils.synthesizeKey("VK_SHIFT" , { type: "keyup" }); EventUtils.synthesizeKey("VK_SHIFT" , { type: "keyup" });
yield deferred.promise; yield deferred.promise;

Просмотреть файл

@ -21,26 +21,13 @@ add_task(function* test_switchtab_override_keynav() {
return promiseClearHistory(); return promiseClearHistory();
}); });
info("Wait for autocomplete")
let searchDeferred = Promise.defer();
let onSearchComplete = gURLBar.onSearchComplete;
registerCleanupFunction(() => {
gURLBar.onSearchComplete = onSearchComplete;
});
gURLBar.onSearchComplete = function () {
ok(gURLBar.popupOpen, "The autocomplete popup is correctly open");
onSearchComplete.apply(gURLBar);
searchDeferred.resolve();
}
gURLBar.focus(); gURLBar.focus();
gURLBar.value = "dummy_pag"; gURLBar.value = "dummy_pag";
EventUtils.synthesizeKey("e" , {}); EventUtils.synthesizeKey("e" , {});
yield searchDeferred.promise; yield promiseSearchComplete();
info("Select second autocomplete popup entry"); info("Select second autocomplete popup entry");
EventUtils.synthesizeKey("VK_DOWN" , {}); EventUtils.synthesizeKey("VK_DOWN" , {});
EventUtils.synthesizeKey("VK_DOWN" , {});
ok(/moz-action:switchtab/.test(gURLBar.value), "switch to tab entry found"); ok(/moz-action:switchtab/.test(gURLBar.value), "switch to tab entry found");
info("Shift+left on switch-to-tab entry"); info("Shift+left on switch-to-tab entry");

Просмотреть файл

@ -17,9 +17,8 @@ add_task(function*() {
if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete")) if (!Services.prefs.getBoolPref("browser.urlbar.unifiedcomplete"))
return; return;
let itemIds = [];
registerCleanupFunction(() => { registerCleanupFunction(() => {
itemIds.forEach(PlacesUtils.bookmarks.removeItem); PlacesUtils.bookmarks.removeFolderChildren(PlacesUtils.unfiledBookmarksFolderId);
}); });
let itemId = let itemId =
@ -28,7 +27,6 @@ add_task(function*() {
PlacesUtils.bookmarks.DEFAULT_INDEX, PlacesUtils.bookmarks.DEFAULT_INDEX,
"test"); "test");
PlacesUtils.bookmarks.setKeywordForBookmark(itemId, "keyword"); PlacesUtils.bookmarks.setKeywordForBookmark(itemId, "keyword");
itemIds.push(itemId);
// This item only needed so we can select the keyword item, select something // This item only needed so we can select the keyword item, select something
// else, then select the keyword item again. // else, then select the keyword item again.
@ -37,12 +35,10 @@ add_task(function*() {
NetUtil.newURI("http://example.com/keyword"), NetUtil.newURI("http://example.com/keyword"),
PlacesUtils.bookmarks.DEFAULT_INDEX, PlacesUtils.bookmarks.DEFAULT_INDEX,
"keyword abc"); "keyword abc");
itemIds.push(itemId);
yield promiseAutoComplete("keyword a"); yield promiseAutoComplete("keyword a");
// Select keyword item // First item should already be selected
EventUtils.synthesizeKey("VK_DOWN", {});
is_selected(0); is_selected(0);
// Select next one (important!) // Select next one (important!)
EventUtils.synthesizeKey("VK_DOWN", {}); EventUtils.synthesizeKey("VK_DOWN", {});

Просмотреть файл

@ -21,16 +21,15 @@ function test() {
function cycleTabs() { function cycleTabs() {
gBrowser.selectedTab = fullURLTab; gBrowser.selectedTab = fullURLTab;
is(gURLBar.value, testURL, 'gURLBar.value should be testURL after switching back to fullURLTab'); is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after switching back to fullURLTab');
gBrowser.selectedTab = partialURLTab; gBrowser.selectedTab = partialURLTab;
is(gURLBar.value, testPartialURL, 'gURLBar.value should be testPartialURL after switching back to partialURLTab'); is(gURLBar.textValue, testPartialURL, 'gURLBar.textValue should be testPartialURL after switching back to partialURLTab');
gBrowser.selectedTab = deletedURLTab; gBrowser.selectedTab = deletedURLTab;
is(gURLBar.value, '', 'gURLBar.value should be "" after switching back to deletedURLTab'); is(gURLBar.textValue, '', 'gURLBar.textValue should be "" after switching back to deletedURLTab');
gBrowser.selectedTab = fullURLTab; gBrowser.selectedTab = fullURLTab;
is(gURLBar.value, testURL, 'gURLBar.value should be testURL after switching back to fullURLTab'); is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after switching back to fullURLTab');
} }
// function borrowed from browser_bug386835.js // function borrowed from browser_bug386835.js
@ -59,13 +58,13 @@ function test() {
function prepareDeletedURLTab(cb) { function prepareDeletedURLTab(cb) {
gBrowser.selectedTab = deletedURLTab; gBrowser.selectedTab = deletedURLTab;
is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to 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 // simulate the user removing the whole url from the location bar
gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", true); gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", true);
urlbarBackspace(function () { urlbarBackspace(function () {
is(gURLBar.value, "", 'gURLBar.value should be "" (just set)'); is(gURLBar.textValue, "", 'gURLBar.textValue should be "" (just set)');
if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll")) if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll"))
gPrefService.clearUserPref("browser.urlbar.clickSelectsAll"); gPrefService.clearUserPref("browser.urlbar.clickSelectsAll");
cb(); cb();
@ -74,13 +73,13 @@ function test() {
function prepareFullURLTab(cb) { function prepareFullURLTab(cb) {
gBrowser.selectedTab = fullURLTab; gBrowser.selectedTab = fullURLTab;
is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to fullURLTab'); is(gURLBar.textValue, testURL, 'gURLBar.textValue should be testURL after initial switch to fullURLTab');
cb(); cb();
} }
function preparePartialURLTab(cb) { function preparePartialURLTab(cb) {
gBrowser.selectedTab = partialURLTab; gBrowser.selectedTab = partialURLTab;
is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to 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 // simulate the user removing part of the url from the location bar
gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", false); gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", false);
@ -91,7 +90,7 @@ function test() {
if (deleted < charsToDelete) { if (deleted < charsToDelete) {
urlbarBackspace(arguments.callee); urlbarBackspace(arguments.callee);
} else { } else {
is(gURLBar.value, testPartialURL, "gURLBar.value should be testPartialURL (just set)"); is(gURLBar.textValue, testPartialURL, "gURLBar.textValue should be testPartialURL (just set)");
if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll")) if (gPrefService.prefHasUserValue("browser.urlbar.clickSelectsAll"))
gPrefService.clearUserPref("browser.urlbar.clickSelectsAll"); gPrefService.clearUserPref("browser.urlbar.clickSelectsAll");
cb(); cb();

Просмотреть файл

@ -31,8 +31,8 @@ let tests = [
setup: function() { setup: function() {
gURLBar.value = testActionURL; gURLBar.value = testActionURL;
gURLBar.valueIsTyped = true; gURLBar.valueIsTyped = true;
is(gURLBar._value, testActionURL, "gURLBar starts with the correct real value"); is(gURLBar.value, testActionURL, "gURLBar starts with the correct real value");
is(gURLBar.value, testURL, "gURLBar starts with the correct display value"); is(gURLBar.textValue, testURL, "gURLBar starts with the correct display value");
// Focus the urlbar so we can select it all & copy // Focus the urlbar so we can select it all & copy
gURLBar.focus(); gURLBar.focus();
@ -40,7 +40,7 @@ let tests = [
goDoCommand("cmd_copy"); goDoCommand("cmd_copy");
}, },
success: function() { success: function() {
is(gURLBar._value, testActionURL, "gURLBar.value didn't change when copying"); is(gURLBar.value, testActionURL, "gURLBar.value didn't change when copying");
} }
}, },
{ {
@ -52,7 +52,7 @@ let tests = [
goDoCommand("cmd_copy"); goDoCommand("cmd_copy");
}, },
success: function() { success: function() {
is(gURLBar._value, testActionURL, "gURLBar.value didn't change when copying"); is(gURLBar.value, testActionURL, "gURLBar.value didn't change when copying");
} }
}, },
{ {
@ -74,8 +74,8 @@ let tests = [
gURLBar.value = testActionURL; gURLBar.value = testActionURL;
gURLBar.valueIsTyped = true; gURLBar.valueIsTyped = true;
// Sanity check that we have the right value // Sanity check that we have the right value
is(gURLBar._value, testActionURL, "gURLBar starts with the correct real value"); is(gURLBar.value, testActionURL, "gURLBar starts with the correct real value");
is(gURLBar.value, testURL, "gURLBar starts with the correct display value"); is(gURLBar.textValue, testURL, "gURLBar starts with the correct display value");
// Now just select part of the value & cut that. // Now just select part of the value & cut that.
gURLBar.selectionStart = testURL.length - 10; gURLBar.selectionStart = testURL.length - 10;

Просмотреть файл

@ -45,10 +45,12 @@ function testNext() {
gURLBar.addEventListener("focus", function onFocus() { gURLBar.addEventListener("focus", function onFocus() {
gURLBar.removeEventListener("focus", onFocus); gURLBar.removeEventListener("focus", onFocus);
gURLBar.inputField.value = inputValue.slice(0, -1);
EventUtils.synthesizeKey(inputValue.slice(-1) , {});
EventUtils.synthesizeKey("VK_RETURN", { shiftKey: true }); EventUtils.synthesizeKey("VK_RETURN", { shiftKey: true });
}); });
gBrowser.selectedBrowser.focus(); gBrowser.selectedBrowser.focus();
gURLBar.inputField.value = inputValue;
gURLBar.focus(); gURLBar.focus();
} }

Просмотреть файл

@ -37,10 +37,10 @@ function runShiftLeftClickTest() {
addPageShowListener(aWindow.gBrowser.selectedBrowser, function() { addPageShowListener(aWindow.gBrowser.selectedBrowser, function() {
executeSoon(function () { executeSoon(function () {
info("URL should be loaded in a new window"); info("URL should be loaded in a new window");
is(gURLBar.value, "", "Urlbar reverted to original value"); is(gURLBar.value, "", "Urlbar reverted to original value");
is(gFocusManager.focusedElement, null, "There should be no focused element"); is(gFocusManager.focusedElement, null, "There should be no focused element");
is(gFocusManager.focusedWindow, aWindow.gBrowser.contentWindow, "Content window should be focused"); is(gFocusManager.focusedWindow, aWindow.gBrowser.contentWindow, "Content window should be focused");
is(aWindow.gURLBar.value, TEST_VALUE, "New URL is loaded in new window"); is(aWindow.gURLBar.textValue, TEST_VALUE, "New URL is loaded in new window");
aWindow.close(); aWindow.close();
@ -61,7 +61,7 @@ function runNextTest() {
finish(); finish();
return; return;
} }
info("Running test: " + test.desc); info("Running test: " + test.desc);
// Tab will be blank if test.startValue is null // Tab will be blank if test.startValue is null
let tab = gBrowser.selectedTab = gBrowser.addTab(test.startValue); let tab = gBrowser.selectedTab = gBrowser.addTab(test.startValue);
@ -106,7 +106,7 @@ let gTests = [
is(gURLBar.value, "", "Urlbar reverted to original value"); is(gURLBar.value, "", "Urlbar reverted to original value");
ok(!gURLBar.focused, "Urlbar is no longer focused after urlbar command"); ok(!gURLBar.focused, "Urlbar is no longer focused after urlbar command");
is(gBrowser.selectedTab, aTab, "Focus did not change to the new tab"); is(gBrowser.selectedTab, aTab, "Focus did not change to the new tab");
// Select the new background tab // Select the new background tab
gBrowser.selectedTab = gBrowser.selectedTab.nextSibling; gBrowser.selectedTab = gBrowser.selectedTab.nextSibling;
is(gURLBar.value, TEST_VALUE, "New URL is loaded in new tab"); is(gURLBar.value, TEST_VALUE, "New URL is loaded in new tab");
@ -143,7 +143,7 @@ function triggerCommand(aClick, aEvent) {
if (aClick) { if (aClick) {
is(gURLBar.getAttribute("pageproxystate"), "invalid", is(gURLBar.getAttribute("pageproxystate"), "invalid",
"page proxy state must be invalid for go button to be visible"); "page proxy state must be invalid for go button to be visible");
EventUtils.synthesizeMouseAtCenter(gGoButton, aEvent); EventUtils.synthesizeMouseAtCenter(gGoButton, aEvent);
} }
else else
EventUtils.synthesizeKey("VK_RETURN", aEvent); EventUtils.synthesizeKey("VK_RETURN", aEvent);

Просмотреть файл

@ -41,7 +41,7 @@ function testNext() {
gURLBar.focus(); gURLBar.focus();
paste(inputValue, function() { paste(inputValue, function() {
is(gURLBar.value, expectedURL, "entering '" + inputValue + "' strips relevant bits."); is(gURLBar.textValue, expectedURL, "entering '" + inputValue + "' strips relevant bits.");
setTimeout(testNext, 0); setTimeout(testNext, 0);
}); });

Просмотреть файл

@ -27,7 +27,7 @@ function test() {
}; };
let history = Cc["@mozilla.org/browser/history;1"] let history = Cc["@mozilla.org/browser/history;1"]
.getService(Ci.mozIAsyncHistory); .getService(Ci.mozIAsyncHistory);
history.updatePlaces({ uri: NetUtil.newURI("http://www.autofilltrimurl.com/") history.updatePlaces({ uri: NetUtil.newURI("http://www.autofilltrimurl.com/whatever")
, visits: [ { transitionType: Ci.nsINavHistoryService.TRANSITION_TYPED , visits: [ { transitionType: Ci.nsINavHistoryService.TRANSITION_TYPED
, visitDate: Date.now() * 1000 , visitDate: Date.now() * 1000
} ] } ]
@ -44,7 +44,8 @@ function continue_test() {
EventUtils.synthesizeKey(aTyped.substr(-1), {}); EventUtils.synthesizeKey(aTyped.substr(-1), {});
waitForSearchComplete(function () { waitForSearchComplete(function () {
is(gURLBar.value, aExpected, "trim was applied correctly"); info(`Got value: ${gURLBar.value}`);
is(gURLBar.value, aExpected, "Autofilled value is as expected");
aCallback(); aCallback();
}); });
} }
@ -53,9 +54,9 @@ function continue_test() {
test_autoFill("http://au", "http://autofilltrimurl.com/", function () { test_autoFill("http://au", "http://autofilltrimurl.com/", function () {
test_autoFill("http://www.autofilltrimurl.com", "http://www.autofilltrimurl.com/", function () { test_autoFill("http://www.autofilltrimurl.com", "http://www.autofilltrimurl.com/", function () {
// Now ensure selecting from the popup correctly trims. // Now ensure selecting from the popup correctly trims.
is(gURLBar.controller.matchCount, 1, "Found the expected number of matches"); is(gURLBar.controller.matchCount, 2, "Found the expected number of matches");
EventUtils.synthesizeKey("VK_DOWN", {}); EventUtils.synthesizeKey("VK_DOWN", {});
is(gURLBar.value, "www.autofilltrimurl.com", "trim was applied correctly"); is(gURLBar.textValue, "www.autofilltrimurl.com/whatever", "trim was applied correctly");
gURLBar.closePopup(); gURLBar.closePopup();
waitForClearHistory(finish); waitForClearHistory(finish);
}); });

Просмотреть файл

@ -156,7 +156,7 @@ function runTest(test, cb) {
function doCheck() { function doCheck() {
if (test.setURL || test.loadURL) { if (test.setURL || test.loadURL) {
gURLBar.valueIsTyped = !!test.setURL; gURLBar.valueIsTyped = !!test.setURL;
is(gURLBar.value, test.expectedURL, "url bar value set"); is(gURLBar.textValue, test.expectedURL, "url bar value set");
} }
testCopy(test.copyVal, test.copyExpected, cb); testCopy(test.copyVal, test.copyExpected, cb);
@ -180,7 +180,7 @@ function testCopy(copyVal, targetValue, cb) {
let endBracket = copyVal.indexOf(">"); let endBracket = copyVal.indexOf(">");
if (startBracket == -1 || endBracket == -1 || if (startBracket == -1 || endBracket == -1 ||
startBracket > endBracket || startBracket > endBracket ||
copyVal.replace("<", "").replace(">", "") != gURLBar.value) { copyVal.replace("<", "").replace(">", "") != gURLBar.textValue) {
ok(false, "invalid copyVal: " + copyVal); ok(false, "invalid copyVal: " + copyVal);
} }
gURLBar.selectionStart = startBracket; gURLBar.selectionStart = startBracket;

Просмотреть файл

@ -51,12 +51,12 @@ let gTests = [
] ]
function checkCurrent(aTab) { function checkCurrent(aTab) {
is(gURLBar.value, TEST_VALUE, "Urlbar should preserve the value on return keypress"); is(gURLBar.textValue, TEST_VALUE, "Urlbar should preserve the value on return keypress");
is(gBrowser.selectedTab, aTab, "New URL was loaded in the current tab"); is(gBrowser.selectedTab, aTab, "New URL was loaded in the current tab");
} }
function checkNewTab(aTab) { function checkNewTab(aTab) {
is(gURLBar.value, TEST_VALUE, "Urlbar should preserve the value on return keypress"); is(gURLBar.textValue, TEST_VALUE, "Urlbar should preserve the value on return keypress");
isnot(gBrowser.selectedTab, aTab, "New URL was loaded in a new tab"); isnot(gBrowser.selectedTab, aTab, "New URL was loaded in a new tab");
} }

Просмотреть файл

@ -11,23 +11,23 @@ function test() {
function onload() { function onload() {
gBrowser.selectedBrowser.removeEventListener("load", onload, true); gBrowser.selectedBrowser.removeEventListener("load", onload, true);
is(gURLBar.value, gURLBar.trimValue(goodURL), "location bar reflects loaded page"); is(gURLBar.textValue, gURLBar.trimValue(goodURL), "location bar reflects loaded page");
typeAndSubmit(badURL); typeAndSubmit(badURL);
is(gURLBar.value, gURLBar.trimValue(badURL), "location bar reflects loading page"); is(gURLBar.textValue, gURLBar.trimValue(badURL), "location bar reflects loading page");
gBrowser.contentWindow.stop(); gBrowser.contentWindow.stop();
is(gURLBar.value, gURLBar.trimValue(goodURL), "location bar reflects loaded page after stop()"); is(gURLBar.textValue, gURLBar.trimValue(goodURL), "location bar reflects loaded page after stop()");
gBrowser.removeCurrentTab(); gBrowser.removeCurrentTab();
gBrowser.selectedTab = gBrowser.addTab("about:blank"); gBrowser.selectedTab = gBrowser.addTab("about:blank");
is(gURLBar.value, "", "location bar is empty"); is(gURLBar.textValue, "", "location bar is empty");
typeAndSubmit(badURL); typeAndSubmit(badURL);
is(gURLBar.value, gURLBar.trimValue(badURL), "location bar reflects loading page"); is(gURLBar.textValue, gURLBar.trimValue(badURL), "location bar reflects loading page");
gBrowser.contentWindow.stop(); gBrowser.contentWindow.stop();
is(gURLBar.value, gURLBar.trimValue(badURL), "location bar reflects stopped page in an empty tab"); is(gURLBar.textValue, gURLBar.trimValue(badURL), "location bar reflects stopped page in an empty tab");
gBrowser.removeCurrentTab(); gBrowser.removeCurrentTab();
finish(); finish();

Просмотреть файл

@ -5,7 +5,7 @@
function testVal(originalValue, targetValue) { function testVal(originalValue, targetValue) {
gURLBar.value = originalValue; gURLBar.value = originalValue;
gURLBar.valueIsTyped = false; gURLBar.valueIsTyped = false;
is(gURLBar.value, targetValue || originalValue, "url bar value set"); is(gURLBar.textValue, targetValue || originalValue, "url bar value set");
} }
function test() { function test() {
@ -96,7 +96,7 @@ function test() {
function testCopy(originalValue, targetValue, cb) { function testCopy(originalValue, targetValue, cb) {
waitForClipboard(targetValue, function () { waitForClipboard(targetValue, function () {
is(gURLBar.value, originalValue, "url bar copy value set"); is(gURLBar.textValue, originalValue, "url bar copy value set");
gURLBar.focus(); gURLBar.focus();
gURLBar.select(); gURLBar.select();

Просмотреть файл

@ -6,6 +6,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm"); "resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm"); "resource://gre/modules/PlacesUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
"resource://testing-common/PlacesTestUtils.jsm");
function closeAllNotifications () { function closeAllNotifications () {
let notificationBox = document.getElementById("global-notificationbox"); let notificationBox = document.getElementById("global-notificationbox");

Просмотреть файл

@ -193,16 +193,16 @@ function test() {
is(browser.userTypedValue, null, "userTypedValue is empty to start"); is(browser.userTypedValue, null, "userTypedValue is empty to start");
is(browser.userTypedClear, 0, "userTypedClear is 0 to start"); is(browser.userTypedClear, 0, "userTypedClear is 0 to start");
gURLBar.value = "example.org"; let inputText = "example.org";
let event = document.createEvent("Events"); gURLBar.focus();
event.initEvent("input", true, false); gURLBar.value = inputText.slice(0, -1);
gURLBar.dispatchEvent(event); EventUtils.synthesizeKey(inputText.slice(-1) , {});
executeSoon(function () { executeSoon(function () {
is(browser.userTypedValue, "example.org", is(browser.userTypedValue, "example.org",
"userTypedValue was set when changing gURLBar.value"); "userTypedValue was set when changing URLBar value");
is(browser.userTypedClear, 0, is(browser.userTypedClear, 0,
"userTypedClear was not changed when changing gURLBar.value"); "userTypedClear was not changed when changing URLBar value");
// Now make sure ss gets these values too // Now make sure ss gets these values too
let newState = JSON.parse(ss.getBrowserState()); let newState = JSON.parse(ss.getBrowserState());
@ -235,7 +235,7 @@ function test() {
"userTypedValue was null after loading a URI"); "userTypedValue was null after loading a URI");
is(browser.userTypedClear, 0, is(browser.userTypedClear, 0,
"userTypeClear reset to 0"); "userTypeClear reset to 0");
is(gURLBar.value, gURLBar.trimValue("http://example.com/"), is(gURLBar.textValue, gURLBar.trimValue("http://example.com/"),
"Address bar's value set after loading URI"); "Address bar's value set after loading URI");
runNextTest(); runNextTest();
}); });

Просмотреть файл

@ -0,0 +1,76 @@
"use strict";
this.EXPORTED_SYMBOLS = [
"PlacesTestUtils",
];
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm");
this.PlacesTestUtils = Object.freeze({
/**
* Asynchronously adds visits to a page.
*
* @param aPlaceInfo
* Can be an nsIURI, in such a case a single LINK visit will be added.
* Otherwise can be an object describing the visit to add, or an array
* of these objects:
* { uri: nsIURI of the page,
* [optional] transition: one of the TRANSITION_* from nsINavHistoryService,
* [optional] title: title of the page,
* [optional] visitDate: visit date in microseconds from the epoch
* [optional] referrer: nsIURI of the referrer for this visit
* }
*
* @return {Promise}
* @resolves When all visits have been added successfully.
* @rejects JavaScript exception.
*/
addVisits(placeInfo) {
return new Promise((resolve, reject) => {
let places = [];
if (placeInfo instanceof Ci.nsIURI) {
places.push({ uri: placeInfo });
}
else if (Array.isArray(placeInfo)) {
places = places.concat(placeInfo);
} else {
places.push(placeInfo)
}
// Create mozIVisitInfo for each entry.
let now = Date.now();
for (let place of places) {
if (typeof place.title != "string") {
place.title = "test visit for " + place.uri.spec;
}
place.visits = [{
transitionType: place.transition === undefined ? Ci.nsINavHistoryService.TRANSITION_LINK
: place.transition,
visitDate: place.visitDate || (now++) * 1000,
referrerURI: place.referrer
}];
}
PlacesUtils.asyncHistory.updatePlaces(
places,
{
handleError: function AAV_handleError(resultCode, placeInfo) {
let ex = new Components.Exception("Unexpected error in adding visits.",
resultCode);
reject(ex);
},
handleResult: function () {},
handleCompletion: function UP_handleCompletion() {
resolve();
}
}
);
});
},
});

Просмотреть файл

@ -6,6 +6,10 @@
TEST_DIRS += ['cpp'] TEST_DIRS += ['cpp']
TESTING_JS_MODULES += [
'PlacesTestUtils.jsm',
]
XPCSHELL_TESTS_MANIFESTS += [ XPCSHELL_TESTS_MANIFESTS += [
'autocomplete/xpcshell.ini', 'autocomplete/xpcshell.ini',
'bookmarks/xpcshell.ini', 'bookmarks/xpcshell.ini',

Просмотреть файл

@ -1129,7 +1129,7 @@ extends="chrome://global/content/bindings/popup.xml#popup">
// Process maxRows per chunk to improve performance and user experience // Process maxRows per chunk to improve performance and user experience
for (let i = 0; i < this.maxRows; i++) { for (let i = 0; i < this.maxRows; i++) {
if (this._currentIndex >= matchCount) if (this._currentIndex >= matchCount)
return; break;
var item; var item;
@ -1185,8 +1185,14 @@ extends="chrome://global/content/bindings/popup.xml#popup">
this._currentIndex++; this._currentIndex++;
} }
// yield after each batch of items so that typing the url bar is responsive if (typeof this.onResultsAdded == "function")
setTimeout(function (self) { self._appendCurrentResult(); }, 0, this); this.onResultsAdded();
if (this._currentIndex < matchCount) {
// yield after each batch of items so that typing the url bar is
// responsive
setTimeout(function (self) { self._appendCurrentResult(); }, 0, this);
}
]]> ]]>
</body> </body>
</method> </method>