86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
/* 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/. */
|
|
|
|
/**
|
|
* This module exports a provider that offers restrict keywords for search mode.
|
|
*/
|
|
|
|
import {
|
|
UrlbarProvider,
|
|
UrlbarUtils,
|
|
} from "resource:///modules/UrlbarUtils.sys.mjs";
|
|
|
|
const lazy = {};
|
|
|
|
ChromeUtils.defineESModuleGetters(lazy, {
|
|
UrlbarPrefs: "resource:///modules/UrlbarPrefs.sys.mjs",
|
|
UrlbarResult: "resource:///modules/UrlbarResult.sys.mjs",
|
|
UrlbarTokenizer: "resource:///modules/UrlbarTokenizer.sys.mjs",
|
|
});
|
|
|
|
const RESTRICT_KEYWORDS_FEATURE_GATE = "searchRestrictKeywords.featureGate";
|
|
|
|
/**
|
|
* Class used to create the provider.
|
|
*/
|
|
class ProviderRestrictKeywords extends UrlbarProvider {
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
get name() {
|
|
return "RestrictKeywords";
|
|
}
|
|
|
|
/**
|
|
* @returns {Values<typeof UrlbarUtils.PROVIDER_TYPE>}
|
|
*/
|
|
get type() {
|
|
return UrlbarUtils.PROVIDER_TYPE.HEURISTIC;
|
|
}
|
|
|
|
getPriority() {
|
|
return 1;
|
|
}
|
|
|
|
async isActive(queryContext) {
|
|
if (!lazy.UrlbarPrefs.getScotchBonnetPref(RESTRICT_KEYWORDS_FEATURE_GATE)) {
|
|
return false;
|
|
}
|
|
|
|
return !queryContext.searchMode && queryContext.trimmedSearchString == "@";
|
|
}
|
|
|
|
async startQuery(queryContext, addCallback) {
|
|
let instance = this.queryInstance;
|
|
let tokenToKeyword = await lazy.UrlbarTokenizer.getL10nRestrictKeywords();
|
|
|
|
if (instance != this.queryInstance) {
|
|
return;
|
|
}
|
|
|
|
for (const [token, l10nRestrictKeywords] of tokenToKeyword.entries()) {
|
|
let icon = UrlbarUtils.LOCAL_SEARCH_MODES.find(
|
|
mode => mode.restrict == token
|
|
)?.icon;
|
|
|
|
let result = new lazy.UrlbarResult(
|
|
UrlbarUtils.RESULT_TYPE.RESTRICT,
|
|
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
|
|
...lazy.UrlbarResult.payloadAndSimpleHighlights(queryContext.tokens, {
|
|
icon,
|
|
keyword: token,
|
|
l10nRestrictKeywords: [
|
|
l10nRestrictKeywords,
|
|
UrlbarUtils.HIGHLIGHT.TYPED,
|
|
],
|
|
providesSearchMode: true,
|
|
})
|
|
);
|
|
addCallback(this, result);
|
|
}
|
|
}
|
|
}
|
|
|
|
export var UrlbarProviderRestrictKeywords = new ProviderRestrictKeywords();
|