зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1073846 - Wrong URL loads after autofill of a hostname that matches a search engine. r=mak
--HG-- extra : transplant_source : %ABR%7F%94S%92%FD%B5%0B%1D%2B%CBc%7D-%7B%F6%D0%0C%13
This commit is contained in:
Родитель
576f1a727b
Коммит
6ab3daf47c
|
@ -712,12 +712,8 @@ Search.prototype = {
|
|||
// with an alias - which works like a keyword.
|
||||
hasFirstResult = yield this._matchSearchEngineAlias();
|
||||
}
|
||||
let shouldAutofill = this._shouldAutofill;
|
||||
if (this.pending && !hasFirstResult && shouldAutofill) {
|
||||
// Or it may look like a URL we know about from search engines.
|
||||
hasFirstResult = yield this._matchSearchEngineUrl();
|
||||
}
|
||||
|
||||
let shouldAutofill = this._shouldAutofill;
|
||||
if (this.pending && !hasFirstResult && shouldAutofill) {
|
||||
// It may also look like a URL we know from the database.
|
||||
// Here we can only try to predict whether the URL autofill query is
|
||||
|
@ -726,6 +722,11 @@ Search.prototype = {
|
|||
hasFirstResult = yield this._matchKnownUrl(conn, queries);
|
||||
}
|
||||
|
||||
if (this.pending && !hasFirstResult && shouldAutofill) {
|
||||
// Or it may look like a URL we know about from search engines.
|
||||
hasFirstResult = yield this._matchSearchEngineUrl();
|
||||
}
|
||||
|
||||
if (this.pending && this._enableActions && !hasFirstResult) {
|
||||
// If we don't have a result that matches what we know about, then
|
||||
// we use a fallback for things we don't know about.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
|
||||
<ShortName>engine-rel-searchform.xml</ShortName>
|
||||
<Url type="text/html" method="GET" template="http://example.com/?search" rel="searchform"/>
|
||||
</SearchPlugin>
|
|
@ -1,6 +1,42 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
|
||||
function* addTestEngines(items) {
|
||||
let httpServer = new HttpServer();
|
||||
httpServer.start(-1);
|
||||
httpServer.registerDirectory("/", do_get_cwd());
|
||||
let gDataUrl = "http://localhost:" + httpServer.identity.primaryPort + "/data/";
|
||||
do_register_cleanup(() => httpServer.stop(() => {}));
|
||||
|
||||
let engines = [];
|
||||
|
||||
for (let item of items) {
|
||||
do_print("Adding engine: " + item);
|
||||
yield new Promise(resolve => {
|
||||
Services.obs.addObserver(function obs(subject, topic, data) {
|
||||
let engine = subject.QueryInterface(Ci.nsISearchEngine);
|
||||
do_print("Observed " + data + " for " + engine.name);
|
||||
if (data != "engine-added" || engine.name != item) {
|
||||
return;
|
||||
}
|
||||
|
||||
Services.obs.removeObserver(obs, "browser-search-engine-modified");
|
||||
engines.push(engine);
|
||||
resolve();
|
||||
}, "browser-search-engine-modified", false);
|
||||
|
||||
do_print("`Adding engine from URL: " + gDataUrl + item);
|
||||
Services.search.addEngine(gDataUrl + item,
|
||||
Ci.nsISearchEngine.DATA_XML, null, false);
|
||||
});
|
||||
}
|
||||
|
||||
return engines;
|
||||
}
|
||||
|
||||
|
||||
add_task(function* test_searchEngine_autoFill() {
|
||||
Services.search.addEngineWithDetails("MySearchEngine", "", "", "",
|
||||
"GET", "http://my.search.com/");
|
||||
|
@ -15,7 +51,7 @@ add_task(function* test_searchEngine_autoFill() {
|
|||
}
|
||||
yield promiseAddVisits(visits);
|
||||
addBookmark({ uri: uri, title: "Example bookmark" });
|
||||
Assert.ok(frecencyForUrl(uri) > 10000);
|
||||
ok(frecencyForUrl(uri) > 10000, "Adeded URI should have expected high frecency");
|
||||
|
||||
do_log_info("Check search domain is autoFilled even if there's an higher frecency match");
|
||||
yield check_autocomplete({
|
||||
|
@ -26,3 +62,23 @@ add_task(function* test_searchEngine_autoFill() {
|
|||
|
||||
yield cleanup();
|
||||
});
|
||||
|
||||
add_task(function* test_searchEngine_noautoFill() {
|
||||
let engineName = "engine-rel-searchform.xml";
|
||||
let [engine] = yield addTestEngines([engineName]);
|
||||
do_register_cleanup(() => Services.search.removeEngine(engine));
|
||||
equal(engine.searchForm, "http://example.com/?search");
|
||||
|
||||
Services.prefs.setBoolPref("browser.urlbar.autoFill.typed", false);
|
||||
yield promiseAddVisits(NetUtil.newURI("http://example.com/my/"));
|
||||
|
||||
do_print("Check search domain is not autoFilled if it matches a visited domain");
|
||||
yield check_autocomplete({
|
||||
search: "example",
|
||||
autofilled: "example.com/",
|
||||
completed: "example.com/"
|
||||
});
|
||||
|
||||
yield cleanup();
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
[DEFAULT]
|
||||
head = head_autocomplete.js
|
||||
tail =
|
||||
support-files =
|
||||
data/engine-rel-searchform.xml
|
||||
|
||||
|
||||
[test_416211.js]
|
||||
[test_416214.js]
|
||||
|
|
Загрузка…
Ссылка в новой задаче