blob: 31c6d5105db077c7a3d169edb6d9fd4753c897c0 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview A helper object used from the "Manage search engines" section
* to interact with the browser.
*/
/**
* @typedef {{canBeDefault: boolean,
* canBeEdited: boolean,
* canBeRemoved: boolean,
* default: boolean,
* displayName: string,
* extension: ({id: string,
* name: string,
* canBeDisabled: boolean,
* icon: string}|undefined),
* iconURL: (string|undefined),
* isOmniboxExtension: boolean,
* keyword: string,
* modelIndex: number,
* name: string,
* url: string,
* urlLocked: boolean}}
* @see chrome/browser/ui/webui/settings/search_engine_manager_handler.cc
*/
let SearchEngine;
/**
* @typedef {{
* defaults: !Array<!SearchEngine>,
* others: !Array<!SearchEngine>,
* extensions: !Array<!SearchEngine>
* }}
*/
let SearchEnginesInfo;
cr.define('settings', function() {
/** @interface */
class SearchEnginesBrowserProxy {
/** @param {number} modelIndex */
setDefaultSearchEngine(modelIndex) {}
/** @param {number} modelIndex */
removeSearchEngine(modelIndex) {}
/** @param {number} modelIndex */
searchEngineEditStarted(modelIndex) {}
searchEngineEditCancelled() {}
/**
* @param {string} searchEngine
* @param {string} keyword
* @param {string} queryUrl
*/
searchEngineEditCompleted(searchEngine, keyword, queryUrl) {}
/** @return {!Promise<!SearchEnginesInfo>} */
getSearchEnginesList() {}
/**
* @param {string} fieldName
* @param {string} fieldValue
* @return {!Promise<boolean>}
*/
validateSearchEngineInput(fieldName, fieldValue) {}
turnOnGoogleAssistant() {}
}
/**
* @implements {settings.SearchEnginesBrowserProxy}
*/
class SearchEnginesBrowserProxyImpl {
/** @override */
setDefaultSearchEngine(modelIndex) {
chrome.send('setDefaultSearchEngine', [modelIndex]);
}
/** @override */
removeSearchEngine(modelIndex) {
chrome.send('removeSearchEngine', [modelIndex]);
}
/** @override */
searchEngineEditStarted(modelIndex) {
chrome.send('searchEngineEditStarted', [modelIndex]);
}
/** @override */
searchEngineEditCancelled() {
chrome.send('searchEngineEditCancelled');
}
/** @override */
searchEngineEditCompleted(searchEngine, keyword, queryUrl) {
chrome.send('searchEngineEditCompleted', [
searchEngine,
keyword,
queryUrl,
]);
}
/** @override */
getSearchEnginesList() {
return cr.sendWithPromise('getSearchEnginesList');
}
/** @override */
validateSearchEngineInput(fieldName, fieldValue) {
return cr.sendWithPromise(
'validateSearchEngineInput', fieldName, fieldValue);
}
/** @override */
turnOnGoogleAssistant() {
chrome.send('turnOnGoogleAssistant');
}
}
// The singleton instance_ is replaced with a test version of this wrapper
// during testing.
cr.addSingletonGetter(SearchEnginesBrowserProxyImpl);
return {
SearchEnginesBrowserProxy: SearchEnginesBrowserProxy,
SearchEnginesBrowserProxyImpl: SearchEnginesBrowserProxyImpl,
};
});