mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Back out 471f236c32cb bug 959594 for bustage on a CLOSED TREE.
This commit is contained in:
parent
025b14f5f5
commit
e510953036
@ -347,7 +347,6 @@ pref("browser.urlbar.match.url", "@");
|
||||
pref("browser.urlbar.suggest.history", true);
|
||||
pref("browser.urlbar.suggest.bookmark", true);
|
||||
pref("browser.urlbar.suggest.openpage", true);
|
||||
pref("browser.urlbar.suggest.searches", true);
|
||||
|
||||
// Restrictions to current suggestions can also be applied (intersection).
|
||||
// Typed suggestion works only if history is set to true.
|
||||
|
@ -7189,18 +7189,15 @@ let gPrivateBrowsingUI = {
|
||||
}
|
||||
}
|
||||
|
||||
if (gURLBar) {
|
||||
let value = gURLBar.getAttribute("autocompletesearchparam") || "";
|
||||
if (!PrivateBrowsingUtils.permanentPrivateBrowsing &&
|
||||
!value.includes("disable-private-actions")) {
|
||||
if (gURLBar &&
|
||||
!PrivateBrowsingUtils.permanentPrivateBrowsing) {
|
||||
// Disable switch to tab autocompletion for private windows.
|
||||
// We leave it enabled for permanent private browsing mode though.
|
||||
value += " disable-private-actions";
|
||||
let value = gURLBar.getAttribute("autocompletesearchparam") || "";
|
||||
if (!value.includes("disable-private-actions")) {
|
||||
gURLBar.setAttribute("autocompletesearchparam",
|
||||
value + " disable-private-actions");
|
||||
}
|
||||
if (!value.includes("private-window")) {
|
||||
value += " private-window";
|
||||
}
|
||||
gURLBar.setAttribute("autocompletesearchparam", value);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -327,7 +327,3 @@ user_pref("dom.serviceWorkers.periodic-updates.enabled", false);
|
||||
|
||||
// Enable speech synth test service, and disable built in platform services.
|
||||
user_pref("media.webspeech.synth.test", true);
|
||||
|
||||
// Turn off search suggestions in the location bar so as not to trigger network
|
||||
// connections.
|
||||
user_pref("browser.urlbar.suggest.searches", false);
|
||||
|
@ -17,9 +17,6 @@ Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "SearchSuggestionController",
|
||||
"resource://gre/modules/SearchSuggestionController.jsm");
|
||||
|
||||
const SEARCH_ENGINE_TOPIC = "browser-search-engine-modified";
|
||||
|
||||
const SearchAutocompleteProviderInternal = {
|
||||
@ -113,65 +110,10 @@ const SearchAutocompleteProviderInternal = {
|
||||
}
|
||||
},
|
||||
|
||||
getSuggestionController(searchToken, inPrivateContext, maxResults) {
|
||||
let engine = Services.search.currentEngine;
|
||||
if (!engine) {
|
||||
return null;
|
||||
}
|
||||
return new SearchSuggestionControllerWrapper(engine, searchToken,
|
||||
inPrivateContext, maxResults);
|
||||
},
|
||||
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
|
||||
Ci.nsISupportsWeakReference]),
|
||||
}
|
||||
|
||||
function SearchSuggestionControllerWrapper(engine, searchToken,
|
||||
inPrivateContext, maxResults) {
|
||||
this._controller = new SearchSuggestionController();
|
||||
this._controller.maxLocalResults = 0;
|
||||
this._controller.maxRemoteResults = maxResults;
|
||||
let promise = this._controller.fetch(searchToken, inPrivateContext, engine);
|
||||
this._suggestions = [];
|
||||
this._promise = promise.then(results => {
|
||||
this._suggestions = (results ? results.remote : null) || [];
|
||||
}).catch(err => {
|
||||
// fetch() rejects its promise if there's a pending request.
|
||||
});
|
||||
}
|
||||
|
||||
SearchSuggestionControllerWrapper.prototype = {
|
||||
|
||||
/**
|
||||
* Resolved when all suggestions have been fetched.
|
||||
*/
|
||||
get fetchCompletePromise() {
|
||||
return this._promise;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns one suggestion, if any are available. The returned value is an
|
||||
* array [match, suggestion]. If none are available, returns [null, null].
|
||||
* Note that there are two reasons that suggestions might not be available:
|
||||
* all suggestions may have been fetched and consumed, or the fetch may not
|
||||
* have completed yet.
|
||||
*
|
||||
* @return An array [match, suggestion].
|
||||
*/
|
||||
consume() {
|
||||
return !this._suggestions.length ? [null, null] :
|
||||
[SearchAutocompleteProviderInternal.defaultMatch,
|
||||
this._suggestions.shift()];
|
||||
},
|
||||
|
||||
/**
|
||||
* Stops the fetch.
|
||||
*/
|
||||
stop() {
|
||||
this._controller.stop();
|
||||
},
|
||||
};
|
||||
|
||||
let gInitializationPromise = null;
|
||||
|
||||
this.PlacesSearchAutocompleteProvider = Object.freeze({
|
||||
@ -272,12 +214,4 @@ this.PlacesSearchAutocompleteProvider = Object.freeze({
|
||||
terms: parseUrlResult.terms,
|
||||
};
|
||||
},
|
||||
|
||||
getSuggestionController(searchToken, inPrivateContext, maxResults) {
|
||||
if (!SearchAutocompleteProviderInternal.initialized) {
|
||||
throw new Error("The component has not been initialized.");
|
||||
}
|
||||
return SearchAutocompleteProviderInternal.getSuggestionController(
|
||||
searchToken, inPrivateContext, maxResults);
|
||||
},
|
||||
});
|
||||
|
@ -35,7 +35,6 @@ const PREF_SUGGEST_HISTORY = [ "suggest.history", true ];
|
||||
const PREF_SUGGEST_BOOKMARK = [ "suggest.bookmark", true ];
|
||||
const PREF_SUGGEST_OPENPAGE = [ "suggest.openpage", true ];
|
||||
const PREF_SUGGEST_HISTORY_ONLYTYPED = [ "suggest.history.onlyTyped", false ];
|
||||
const PREF_SUGGEST_SEARCHES = [ "suggest.searches", true ];
|
||||
|
||||
// Match type constants.
|
||||
// These indicate what type of search function we should be using.
|
||||
@ -66,13 +65,6 @@ const TELEMETRY_6_FIRST_RESULTS = "PLACES_AUTOCOMPLETE_6_FIRST_RESULTS_TIME_MS";
|
||||
// The default frecency value used when inserting matches with unknown frecency.
|
||||
const FRECENCY_DEFAULT = 1000;
|
||||
|
||||
// Search suggestion results are mixed in with all other results after they
|
||||
// become available, but they're only inserted once every N results whose
|
||||
// frecencies are less than FRECENCY_DEFAULT. In other words, for every N
|
||||
// results that fall below that frecency threshold, one search suggestion is
|
||||
// inserted. This value = N.
|
||||
const SEARCH_SUGGESTION_INSERT_INTERVAL = 2;
|
||||
|
||||
// A regex that matches "single word" hostnames for whitelisting purposes.
|
||||
// The hostname will already have been checked for general validity, so we
|
||||
// don't need to be exhaustive here, so allow dashes anywhere.
|
||||
@ -352,15 +344,10 @@ XPCOMUtils.defineLazyGetter(this, "SwitchToTabStorage", () => Object.seal({
|
||||
*/
|
||||
XPCOMUtils.defineLazyGetter(this, "Prefs", () => {
|
||||
let prefs = new Preferences(PREF_BRANCH);
|
||||
let types = ["History", "Bookmark", "Openpage", "Typed", "Searches"];
|
||||
let types = ["History", "Bookmark", "Openpage", "Typed"];
|
||||
|
||||
function syncEnabledPref(init = false) {
|
||||
let suggestPrefs = [
|
||||
PREF_SUGGEST_HISTORY,
|
||||
PREF_SUGGEST_BOOKMARK,
|
||||
PREF_SUGGEST_OPENPAGE,
|
||||
PREF_SUGGEST_SEARCHES,
|
||||
];
|
||||
let suggestPrefs = [PREF_SUGGEST_HISTORY, PREF_SUGGEST_BOOKMARK, PREF_SUGGEST_OPENPAGE];
|
||||
|
||||
if (init) {
|
||||
// Make sure to initialize the properties when first called with init = true.
|
||||
@ -369,7 +356,6 @@ XPCOMUtils.defineLazyGetter(this, "Prefs", () => {
|
||||
store.suggestBookmark = prefs.get(...PREF_SUGGEST_BOOKMARK);
|
||||
store.suggestOpenpage = prefs.get(...PREF_SUGGEST_OPENPAGE);
|
||||
store.suggestTyped = prefs.get(...PREF_SUGGEST_HISTORY_ONLYTYPED);
|
||||
store.suggestSearches = prefs.get(...PREF_SUGGEST_SEARCHES);
|
||||
}
|
||||
|
||||
if (store.enabled) {
|
||||
@ -409,7 +395,6 @@ XPCOMUtils.defineLazyGetter(this, "Prefs", () => {
|
||||
store.suggestBookmark = prefs.get(...PREF_SUGGEST_BOOKMARK);
|
||||
store.suggestOpenpage = prefs.get(...PREF_SUGGEST_OPENPAGE);
|
||||
store.suggestTyped = prefs.get(...PREF_SUGGEST_HISTORY_ONLYTYPED);
|
||||
store.suggestSearches = prefs.get(...PREF_SUGGEST_SEARCHES);
|
||||
|
||||
// If history is not set, onlyTyped value should be ignored.
|
||||
if (!store.suggestHistory) {
|
||||
@ -581,7 +566,6 @@ function Search(searchString, searchParam, autocompleteListener,
|
||||
let params = new Set(searchParam.split(" "));
|
||||
this._enableActions = params.has("enable-actions");
|
||||
this._disablePrivateActions = params.has("disable-private-actions");
|
||||
this._inPrivateWindow = params.has("private-window");
|
||||
|
||||
this._searchTokens =
|
||||
this.filterTokens(getUnfilteredSearchTokens(this._searchString));
|
||||
@ -615,8 +599,6 @@ function Search(searchString, searchParam, autocompleteListener,
|
||||
// These are used to avoid adding duplicate entries to the results.
|
||||
this._usedURLs = new Set();
|
||||
this._usedPlaceIds = new Set();
|
||||
|
||||
this._searchSuggestionInsertCounter = 0;
|
||||
}
|
||||
|
||||
Search.prototype = {
|
||||
@ -722,10 +704,6 @@ Search.prototype = {
|
||||
this._sleepDeferred.resolve();
|
||||
this._sleepDeferred = null;
|
||||
}
|
||||
if (this._searchSuggestionController) {
|
||||
this._searchSuggestionController.stop();
|
||||
this._searchSuggestionController = null;
|
||||
}
|
||||
this.pending = false;
|
||||
},
|
||||
|
||||
@ -828,22 +806,7 @@ Search.prototype = {
|
||||
// IMPORTANT: No other first result heuristics should run after
|
||||
// _matchHeuristicFallback().
|
||||
|
||||
yield this._sleep(Math.round(Prefs.delay / 2));
|
||||
if (!this.pending)
|
||||
return;
|
||||
|
||||
// Start fetching search suggestions a little earlier than Prefs.delay since
|
||||
// they're remote and will probably take longer to arrive.
|
||||
if (this.hasBehavior("searches")) {
|
||||
this._searchSuggestionController =
|
||||
PlacesSearchAutocompleteProvider.getSuggestionController(
|
||||
this._originalSearchString,
|
||||
this._inPrivateWindow,
|
||||
Prefs.maxRichResults
|
||||
);
|
||||
}
|
||||
|
||||
yield this._sleep(Math.round(Prefs.delay / 2));
|
||||
yield this._sleep(Prefs.delay);
|
||||
if (!this.pending)
|
||||
return;
|
||||
|
||||
@ -874,13 +837,6 @@ Search.prototype = {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If we still don't have enough results, fill the remaining space with
|
||||
// search suggestions.
|
||||
if (this._searchSuggestionController && this.pending) {
|
||||
yield this._searchSuggestionController.fetchCompletePromise;
|
||||
while (this.pending && this._maybeAddSearchSuggestionMatch());
|
||||
}
|
||||
}),
|
||||
|
||||
_matchKnownUrl: function* (conn, queries) {
|
||||
@ -1174,43 +1130,12 @@ Search.prototype = {
|
||||
parseResult.engineName;
|
||||
},
|
||||
|
||||
_maybeAddSearchSuggestionMatch() {
|
||||
if (this._searchSuggestionController) {
|
||||
let [match, suggestion] = this._searchSuggestionController.consume();
|
||||
if (suggestion) {
|
||||
this._addSearchEngineMatch(match, this._originalSearchString,
|
||||
suggestion);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
_addMatch: function (match) {
|
||||
// A search could be canceled between a query start and its completion,
|
||||
// in such a case ensure we won't notify any result for it.
|
||||
if (!this.pending)
|
||||
return;
|
||||
|
||||
// Mix in search suggestions. Insert one suggestion every N non-suggestion
|
||||
// matches that fall below the default frecency, and start inserting them as
|
||||
// soon as they become available. N = SEARCH_SUGGESTION_INSERT_INTERVAL.
|
||||
if (match.frecency < FRECENCY_DEFAULT) {
|
||||
if (this._searchSuggestionInsertCounter %
|
||||
SEARCH_SUGGESTION_INSERT_INTERVAL == 0) {
|
||||
// Search engine matches are created with FRECENCY_DEFAULT, so there's
|
||||
// no danger of infinite indirect recursion.
|
||||
if (this._maybeAddSearchSuggestionMatch()) {
|
||||
if (!this.pending) {
|
||||
return;
|
||||
}
|
||||
this._searchSuggestionInsertCounter++;
|
||||
}
|
||||
} else {
|
||||
this._searchSuggestionInsertCounter++;
|
||||
}
|
||||
}
|
||||
|
||||
let notifyResults = false;
|
||||
|
||||
// Must check both id and url, cause keywords dinamically modify the url.
|
||||
|
@ -13,7 +13,7 @@ interface nsIURI;
|
||||
* search provider as well as methods to track opened pages for AutoComplete
|
||||
* purposes.
|
||||
*/
|
||||
[scriptable, uuid(61b6348a-09e1-4810-8057-f8cb3cec6ef8)]
|
||||
[scriptable, uuid(6e252399-77f9-4f11-98cc-6fa9fab96f92)]
|
||||
interface mozIPlacesAutoComplete : nsISupports
|
||||
{
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@ -102,11 +102,6 @@ interface mozIPlacesAutoComplete : nsISupports
|
||||
*/
|
||||
const long BEHAVIOR_RESTRICT = 1 << 8;
|
||||
|
||||
/**
|
||||
* Include search suggestions from the currently selected search provider.
|
||||
*/
|
||||
const long BEHAVIOR_SEARCHES = 1 << 9;
|
||||
|
||||
/**
|
||||
* Mark a page as being currently open.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user