Commit 4acfc82e authored by James Hawkins's avatar James Hawkins Committed by Commit Bot

OS Settings: Convert SearchPage and GoogleAssistantPage to Polymer 3.

R=khorimoto@chromium.org

Bug: 1045266
Test: OSSettingsSearchPage*, OSSettingsGoogleAssistantPage*
Change-Id: Iec88c92e6902bf844e4f46dec5316dc4308a9570
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2456848
Commit-Queue: James Hawkins <jhawkins@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814829}
parent 0b087e51
......@@ -475,6 +475,7 @@ group("polymer3_elements") {
"../about_page:modulize",
"../prefs:modulize",
"../prefs:prefs_module",
"../search_engines_page:modulize",
"../settings_page:settings_animated_pages_module",
"../settings_page:settings_section_module",
"../settings_page:settings_subpage_module",
......
<link rel="import" href="../router.html">
<link rel="import" href="../setting_id_param_util.html">
<link rel="import" href="chrome://resources/html/load_time_data.html">
<link rel="import" href="chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.html">
<script src="chrome://os-settings/constants/setting.mojom-lite.js"></script>
<script src="deep_linking_behavior.js"></script>
\ No newline at end of file
......@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//chrome/browser/resources/settings/chromeos/os_settings.gni")
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
......@@ -30,14 +31,13 @@ js_library("google_assistant_page") {
]
}
# TODO: Uncomment as the Polymer3 migration makes progress.
#js_type_check("closure_compile_module") {
# is_polymer3 = true
# deps = [
# ":google_assistant_browser_proxy.m",
# ":google_assistant_page.m"
# ]
#}
js_type_check("closure_compile_module") {
is_polymer3 = true
deps = [
":google_assistant_browser_proxy.m",
":google_assistant_page.m"
]
}
js_library("google_assistant_browser_proxy.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/google_assistant_page/google_assistant_browser_proxy.m.js" ]
......@@ -50,7 +50,23 @@ js_library("google_assistant_browser_proxy.m") {
js_library("google_assistant_page.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/google_assistant_page/google_assistant_page.m.js" ]
deps = [
# TODO: Fill those in.
":google_assistant_browser_proxy.m",
"//chrome/browser/resources/settings:router.m",
"//chrome/browser/resources/settings/chromeos:deep_linking_behavior.m",
"//chrome/browser/resources/settings/chromeos:metrics_recorder.m",
"//chrome/browser/resources/settings/chromeos:os_route.m",
"//chrome/browser/resources/settings/controls:controlled_button.m",
"//chrome/browser/resources/settings/controls:settings_toggle_button.m",
"//chrome/browser/resources/settings/prefs:prefs.m",
"//chrome/browser/resources/settings/prefs:prefs_behavior.m",
"//chrome/browser/resources/settings/prefs:pref_util.m",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/cr_elements/cr_link_row:cr_link_row.m",
"//ui/webui/resources/cr_elements/policy:cr_policy_pref_indicator.m",
"//ui/webui/resources/js:cr.m",
"//ui/webui/resources/js:i18n_behavior.m",
"//ui/webui/resources/js:load_time_data.m",
"//ui/webui/resources/js:web_ui_listener_behavior.m",
]
extra_deps = [ ":google_assistant_page_module" ]
}
......@@ -68,10 +84,13 @@ polymer_modulizer("google_assistant_page") {
js_file = "google_assistant_page.js"
html_file = "google_assistant_page.html"
html_type = "dom-module"
auto_imports = os_settings_auto_imports
namespace_rewrites = os_settings_namespace_rewrites
}
import("//ui/webui/resources/tools/js_modulizer.gni")
js_modulizer("modulize") {
input_files = [ "google_assistant_browser_proxy.js" ]
namespace_rewrites = os_settings_namespace_rewrites
}
......@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// #import {addSingletonGetter} from 'chrome://resources/js/cr.m.js';
/**
* @fileoverview A helper object used from the google assistant section
* to interact with the browser.
......@@ -9,7 +11,7 @@
cr.define('settings', function() {
/** @interface */
class GoogleAssistantBrowserProxy {
/* #export */ class GoogleAssistantBrowserProxy {
/** Launches into the Google Assistant app settings. */
showGoogleAssistantSettings() {}
......@@ -21,7 +23,7 @@ cr.define('settings', function() {
}
/** @implements {settings.GoogleAssistantBrowserProxy} */
class GoogleAssistantBrowserProxyImpl {
/* #export */ class GoogleAssistantBrowserProxyImpl {
/** @override */
showGoogleAssistantSettings() {
chrome.send('showGoogleAssistantSettings');
......
<link rel="import" href="chrome://resources/html/polymer.html">
<link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
<link rel="import" href="chrome://resources/cr_elements/md_select_css.html">
<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html">
<link rel="import" href="chrome://resources/html/cr.html">
<link rel="import" href="chrome://resources/html/i18n_behavior.html">
<link rel="import" href="chrome://resources/html/load_time_data.html">
<link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
<link rel="import" href="chrome://resources/cr_elements/md_select_css.html">
<link rel="import" href="google_assistant_browser_proxy.html">
<link rel="import" href="../../controls/controlled_button.html">
<link rel="import" href="../../controls/settings_toggle_button.html">
<link rel="import" href="../../i18n_setup.html">
<link rel="import" href="../../prefs/prefs.html">
<link rel="import" href="../../prefs/prefs_behavior.html">
<link rel="import" href="../../settings_shared_css.html">
<link rel="import" href="../../prefs/pref_util.html">
<link rel="import" href="../../router.html">
<link rel="import" href="../../settings_shared_css.html">
<link rel="import" href="../deep_linking_behavior.html">
<link rel="import" href="../metrics_recorder.html">
<link rel="import" href="../os_route.html">
<link rel="import" href="../../router.html">
<link rel="import" href="google_assistant_browser_proxy.html">
<dom-module id="settings-google-assistant-page">
<template>
......
......@@ -6,7 +6,7 @@
* The types of Hotword enable status without Dsp support.
* @enum {number}
*/
const DspHotwordState = {
/* #export */ const DspHotwordState = {
DEFAULT_ON: 0,
ALWAYS_ON: 1,
OFF: 2,
......@@ -19,7 +19,7 @@ const DspHotwordState = {
* chromeos/services/assistant/public/cpp/assistant_prefs.h
* @enum {number}
*/
const ConsentStatus = {
/* #export */ const ConsentStatus = {
// The status is unknown.
kUnknown: 0,
......@@ -42,8 +42,11 @@ Polymer({
is: 'settings-google-assistant-page',
behaviors: [
DeepLinkingBehavior, I18nBehavior, PrefsBehavior,
settings.RouteObserverBehavior, WebUIListenerBehavior
DeepLinkingBehavior,
I18nBehavior,
PrefsBehavior,
settings.RouteObserverBehavior,
WebUIListenerBehavior
],
properties: {
......
......@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//chrome/browser/resources/settings/chromeos/os_settings.gni")
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
......@@ -21,18 +22,33 @@ js_library("os_search_page") {
]
}
# TODO: Uncomment as the Polymer3 migration makes progress.
#js_type_check("closure_compile_module") {
# is_polymer3 = true
# deps = [
# ":os_search_page.m"
# ]
#}
js_type_check("closure_compile_module") {
is_polymer3 = true
deps = [
":os_search_page.m"
]
}
js_library("os_search_page.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.m.js" ]
deps = [
# TODO: Fill those in.
"//chrome/browser/resources/settings:router.m",
"//chrome/browser/resources/settings/chromeos:deep_linking_behavior.m",
"//chrome/browser/resources/settings/chromeos:os_route.m",
"//chrome/browser/resources/settings/chromeos/google_assistant_page:google_assistant_page.m",
"//chrome/browser/resources/settings/controls:extension_controlled_indicator.m",
"//chrome/browser/resources/settings/search_engines_page:search_engines_browser_proxy.m",
"//chrome/browser/resources/settings/settings_page:settings_animated_pages.m",
"//chrome/browser/resources/settings/settings_page:settings_subpage.m",
"//third_party/polymer/v3_0/components-chromium/iron-icon:iron-icon",
"//third_party/polymer/v3_0/components-chromium/paper-tooltip:paper-tooltip",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/cr_elements/cr_link_row:cr_link_row.m",
"//ui/webui/resources/cr_elements/policy:cr_policy_pref_indicator.m",
"//ui/webui/resources/js:assert.m",
"//ui/webui/resources/js:cr.m",
"//ui/webui/resources/js:i18n_behavior.m",
"//ui/webui/resources/js:load_time_data.m",
]
extra_deps = [ ":os_search_page_module" ]
}
......@@ -47,4 +63,6 @@ polymer_modulizer("os_search_page") {
js_file = "os_search_page.js"
html_file = "os_search_page.html"
html_type = "dom-module"
auto_imports = os_settings_auto_imports
namespace_rewrites = os_settings_namespace_rewrites
}
......@@ -7,20 +7,21 @@
<link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
<link rel="import" href="chrome://resources/html/assert.html">
<link rel="import" href="chrome://resources/html/cr.html">
<link rel="import" href="chrome://resources/html/i18n_behavior.html">
<link rel="import" href="chrome://resources/html/load_time_data.html">
<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-tooltip/paper-tooltip.html">
<link rel="import" href="../../controls/extension_controlled_indicator.html">
<link rel="import" href="../google_assistant_page/google_assistant_page.html">
<link rel="import" href="../../i18n_setup.html">
<link rel="import" href="../deep_linking_behavior.html">
<link rel="import" href="../os_route.html">
<link rel="import" href="../../router.html">
<link rel="import" href="../../search_engines_page/search_engines_browser_proxy.html">
<link rel="import" href="../../settings_page/settings_animated_pages.html">
<link rel="import" href="../../settings_page/settings_subpage.html">
<link rel="import" href="../../settings_shared_css.html">
<link rel="import" href="../../settings_vars_css.html">
<link rel="import" href="../deep_linking_behavior.html">
<link rel="import" href="../google_assistant_page/google_assistant_page.html">
<link rel="import" href="../os_route.html">
<dom-module id="os-settings-search-page">
<template>
......
......@@ -22,6 +22,7 @@ os_settings_namespace_rewrites = settings_namespace_rewrites +
"nearby_share.getContactManager|getContactManager",
"nearby_share.observeContactManager|observeContactManager",
"parental_controls.ParentalControlsBrowserProxy|ParentalControlsBrowserProxy",
"search_settings.createSampleSearchEngine|createSampleSearchEngine",
"settings.AccountManagerBrowserProxy|AccountManagerBrowserProxy",
"settings.AmbientModeBrowserProxy|AmbientModeBrowserProxy",
"settings.CellularSetupSettingsDelegate|CellularSetupSettingsDelegate",
......@@ -33,6 +34,8 @@ os_settings_namespace_rewrites = settings_namespace_rewrites +
"settings.FingerprintResultType|FingerprintResultType",
"settings.FingerprintScan|FingerprintScan",
"settings.FingerprintSetupStep|FingerprintSetupStep",
"settings.GoogleAssistantBrowserProxy|GoogleAssistantBrowserProxy",
"settings.GoogleAssistantBrowserProxyImpl|GoogleAssistantBrowserProxyImpl",
"settings.InternetPageBrowserProxy|InternetPageBrowserProxy",
"settings.input_method_util.generateOptions|generateOptions",
"settings.input_method_util.getFirstPartyInputMethodEngineId|getFirstPartyInputMethodEngineId",
......@@ -100,6 +103,7 @@ os_settings_auto_imports = settings_auto_imports +
"chrome/browser/resources/settings/chromeos/internet_page/cellular_setup_settings_delegate.html|CellularSetupSettingsDelegate",
"chrome/browser/resources/settings/chromeos/internet_page/internet_page_browser_proxy.html|InternetPageBrowserProxy,InternetPageBrowserProxyImpl",
"chrome/browser/resources/settings/chromeos/deep_linking_behavior.html|DeepLinkingBehavior",
"chrome/browser/resources/settings/chromeos/google_assistant_page/google_assistant_browser_proxy.html|GoogleAssistantBrowserProxy,GoogleAssistantBrowserProxyImpl",
"chrome/browser/resources/settings/chromeos/metrics_recorder.html|recordSettingChange",
"chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.html|MultiDeviceBrowserProxy,MultiDeviceBrowserProxyImpl",
"chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.html|MultiDeviceSettingsMode,MultiDeviceFeature,MultiDeviceFeatureState,MultiDevicePageContentData,SmartLockSignInEnabledState",
......@@ -130,6 +134,7 @@ os_settings_auto_imports = settings_auto_imports +
"chrome/browser/resources/settings/people_page/sync_browser_proxy.html|SyncBrowserProxyImpl,SyncBrowserProxy,StatusAction,SyncStatus",
"chrome/browser/resources/settings/route.html|routes",
"chrome/browser/resources/settings/router.html|Router,Route,RouteObserverBehavior",
"chrome/browser/resources/settings/search_engines_page/search_engines_browser_proxy.html|SearchEngine,SearchEnginesBrowserProxy,SearchEnginesBrowserProxyImpl",
"ui/webui/resources/html/assert.html|assert,assertNotReached",
"ui/webui/resources/html/cr.html|sendWithPromise,removeWebUIListener,addWebUIListener,WebUIListener",
"ui/webui/resources/html/icon.html|getImage",
......
......@@ -3,6 +3,7 @@
// found in the LICENSE file.
import './ambient_mode_page/ambient_mode_page.m.js';
import './google_assistant_page/google_assistant_page.m.js';
import './localized_link/localized_link.m.js';
import './bluetooth_page/bluetooth_page.m.js';
import './bluetooth_page/bluetooth_subpage.m.js';
......@@ -31,6 +32,7 @@ import './os_about_page/os_about_page.m.js';
import './os_about_page/channel_switcher_dialog.m.js';
import './os_about_page/detailed_build_info.m.js';
import './os_about_page/update_warning_dialog.m.js';
import './os_search_page/os_search_page.m.js';
export {AboutPageBrowserProxyImpl, BrowserChannel, UpdateStatus} from '../about_page/about_page_browser_proxy.m.js';
export {LifetimeBrowserProxy, LifetimeBrowserProxyImpl} from '../lifetime_browser_proxy.m.js';
......@@ -40,12 +42,16 @@ export {ProfileInfoBrowserProxy, ProfileInfoBrowserProxyImpl} from '../people_pa
export {PageStatus, StoredAccount, SyncBrowserProxy, SyncBrowserProxyImpl, SyncStatus} from '../people_page/sync_browser_proxy.m.js';
export {CrSettingsPrefs} from '../prefs/prefs_types.m.js';
export {Route, Router} from '../router.m.js';
export {SearchEnginesBrowserProxy, SearchEnginesBrowserProxyImpl} from '../search_engines_page/search_engines_browser_proxy.m.js';
export {SearchEnginesInfo, SearchEngine} from '../search_engines_page/search_engines_browser_proxy.m.js';
export {getContactManager, observeContactManager, setContactManagerForTesting} from '../shared/nearby_contact_manager.m.js';
export {getNearbyShareSettings, observeNearbyShareSettings, setNearbyShareSettingsForTesting} from '../shared/nearby_share_settings.m.js';
export {NearbySettings, NearbyShareSettingsBehavior} from '../shared/nearby_share_settings_behavior.m.js';
export {AmbientModeBrowserProxyImpl} from './ambient_mode_page/ambient_mode_browser_proxy.m.js';
export {AmbientModeTemperatureUnit, AmbientModeTopicSource} from './ambient_mode_page/constants.m.js';
export {bluetoothApis} from './bluetooth_page/bluetooth_page.m.js';
export {ConsentStatus, DspHotwordState} from './google_assistant_page/google_assistant_page.m.js';
export {GoogleAssistantBrowserProxyImpl} from './google_assistant_page/google_assistant_browser_proxy.m.js';
export {InternetPageBrowserProxy, InternetPageBrowserProxyImpl} from './internet_page/internet_page_browser_proxy.m.js';
export {MultiDeviceBrowserProxy, MultiDeviceBrowserProxyImpl} from './multidevice_page/multidevice_browser_proxy.m.js';
export {MultiDeviceFeature, MultiDeviceFeatureState, MultiDevicePageContentData, MultiDeviceSettingsMode, SmartLockSignInEnabledState} from './multidevice_page/multidevice_constants.m.js';
......
......@@ -137,6 +137,16 @@
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_GOOGLE_ASSISTANT_BROWSER_PROXY_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/chromeos/google_assistant_page/google_assistant_browser_proxy.m.js"
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_GOOGLE_ASSISTANT_PAGE_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/chromeos/google_assistant_page/google_assistant_page.m.js"
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_SETTINGS_RADIO_GROUP_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/controls/settings_radio_group.m.js"
use_base_dir="false"
......@@ -532,6 +542,16 @@
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_SEARCH_ENGINES_BROWSER_PROXY_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/search_engines_page/search_engines_browser_proxy.m.js"
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_OS_SEARCH_PAGE_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.m.js"
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_OS_SETTINGS_PAGE_MAIN_PAGE_BEHAVIOR_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/chromeos/os_settings_page/main_page_behavior.m.js"
use_base_dir="false"
......
......@@ -288,6 +288,7 @@ if (include_js_tests) {
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_bluetooth.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_receive_manager.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_quick_unlock_private.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/google_assistant_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/input_method_options_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/input_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_config_test.m.js",
......@@ -307,14 +308,15 @@ if (include_js_tests) {
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/network_summary_item_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/network_summary_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_edit_dictionary_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_files_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_languages_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_languages_page_v2_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_reset_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_people_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_privacy_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_printing_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_search_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/smb_shares_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/os_files_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/parental_controls_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/people_page_account_manager_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/people_page_change_picture_test.m.js",
......
......@@ -41,6 +41,7 @@ js_modulizer("modulize") {
"fake_receive_manager.js",
"fake_settings_search_handler.js",
"fake_user_action_recorder.js",
"google_assistant_page_test.js",
"input_method_options_page_test.js",
"input_page_test.js",
"internet_config_test.js",
......@@ -66,6 +67,7 @@ js_modulizer("modulize") {
"os_printing_page_tests.js",
"os_people_page_test.js",
"os_privacy_page_test.js",
"os_search_page_test.js",
"smb_shares_page_tests.js",
"os_files_page_test.js",
"parental_controls_page_test.js",
......
......@@ -2,6 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import 'chrome://os-settings/chromeos/os_settings.js';
// #import {ConsentStatus, DspHotwordState} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {CrSettingsPrefs} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {GoogleAssistantBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {Router, routes} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {TestBrowserProxy} from '../../test_browser_proxy.m.js';
// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {getDeepActiveElement} from 'chrome://resources/js/util.m.js';
// #import {waitAfterNextRender} from 'chrome://test/test_util.m.js';
// clang-format on
/**
* @implements {settings.GoogleAssistantBrowserProxy}
*/
......
......@@ -2,16 +2,125 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('os_settings_search_page', function() {
// clang-format off
// #import 'chrome://os-settings/chromeos/os_settings.js';
// #import {ConsentStatus, DspHotwordState} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {CrSettingsPrefs} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {GoogleAssistantBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {Router, routes} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {SearchEnginesBrowserProxy, SearchEnginesBrowserProxyImpl} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {SearchEnginesInfo, SearchEngine} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {TestBrowserProxy} from '../../test_browser_proxy.m.js';
// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {getDeepActiveElement} from 'chrome://resources/js/util.m.js';
// #import {waitAfterNextRender} from 'chrome://test/test_util.m.js';
// clang-format on
suite('OSSearchPageTests', function() {
/** @type {?SettingsSearchPageElement} */
let page = null;
let browserProxy = null;
/**
* A test version of SearchEnginesBrowserProxy. Provides helper methods
* for allowing tests to know when a method was called, as well as
* specifying mock responses.
*
* @implements {settings.SearchEnginesBrowserProxy}
*/
class TestSearchEnginesBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'getSearchEnginesList',
'removeSearchEngine',
'searchEngineEditCancelled',
'searchEngineEditCompleted',
'searchEngineEditStarted',
'setDefaultSearchEngine',
'validateSearchEngineInput',
]);
/** @private {!SearchEnginesInfo} */
this.searchEnginesInfo_ = {defaults: [], others: [], extensions: []};
}
/** @override */
setDefaultSearchEngine(modelIndex) {
this.methodCalled('setDefaultSearchEngine', modelIndex);
}
/** @override */
removeSearchEngine(modelIndex) {
this.methodCalled('removeSearchEngine', modelIndex);
}
/** @override */
searchEngineEditStarted(modelIndex) {
this.methodCalled('searchEngineEditStarted', modelIndex);
}
/** @override */
searchEngineEditCancelled() {
this.methodCalled('searchEngineEditCancelled');
}
/** @override */
searchEngineEditCompleted(searchEngine, keyword, queryUrl) {
this.methodCalled('searchEngineEditCompleted');
}
/** @override */
getSearchEnginesList() {
this.methodCalled('getSearchEnginesList');
return Promise.resolve(this.searchEnginesInfo_);
}
/** @override */
validateSearchEngineInput(fieldName, fieldValue) {
this.methodCalled('validateSearchEngineInput');
return Promise.resolve(true);
}
/**
* Sets the response to be returned by |getSearchEnginesList|.
* @param {!SearchEnginesInfo} searchEnginesInfo
*/
setSearchEnginesInfo(searchEnginesInfo) {
this.searchEnginesInfo_ = searchEnginesInfo;
}
}
function createSampleSearchEngine(
canBeDefault, canBeEdited, canBeRemoved) {
return {
canBeDefault: canBeDefault,
canBeEdited: canBeEdited,
canBeRemoved: canBeRemoved,
default: false,
displayName: 'Google',
iconURL: 'http://www.google.com/favicon.ico',
id: 0,
isOmniboxExtension: false,
keyword: 'google.com',
modelIndex: 0,
name: 'Google',
url: 'https://search.foo.com/search?p=%s',
urlLocked: false,
};
}
function generateSearchEngineInfo() {
const searchEngines0 =
settings_search.createSampleSearchEngine(true, false, false);
createSampleSearchEngine(true, false, false);
searchEngines0.default = true;
const searchEngines1 =
settings_search.createSampleSearchEngine(true, false, false);
createSampleSearchEngine(true, false, false);
searchEngines1.default = false;
const searchEngines2 =
settings_search.createSampleSearchEngine(true, false, false);
createSampleSearchEngine(true, false, false);
searchEngines2.default = false;
return {
......@@ -21,119 +130,112 @@ cr.define('os_settings_search_page', function() {
};
}
suite('OSSearchPageTests', function() {
/** @type {?SettingsSearchPageElement} */
let page = null;
let browserProxy = null;
setup(function() {
browserProxy = new settings_search.TestSearchEnginesBrowserProxy();
browserProxy.setSearchEnginesInfo(generateSearchEngineInfo());
settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy;
PolymerTest.clearBody();
page = document.createElement('os-settings-search-page');
page.prefs = {
default_search_provider_data: {
template_url_data: {},
},
};
document.body.appendChild(page);
});
setup(function() {
browserProxy = new TestSearchEnginesBrowserProxy();
browserProxy.setSearchEnginesInfo(generateSearchEngineInfo());
settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy;
PolymerTest.clearBody();
page = document.createElement('os-settings-search-page');
page.prefs = {
default_search_provider_data: {
template_url_data: {},
},
};
document.body.appendChild(page);
});
teardown(function() {
page.remove();
settings.Router.getInstance().resetRouteForTesting();
});
teardown(function() {
page.remove();
settings.Router.getInstance().resetRouteForTesting();
});
// Tests that the page is querying and displaying search engine info on
// startup.
test('Initialization', async () => {
const selectElement = page.$$('select');
assertTrue(!!selectElement);
assertTrue(!!page.$$('#help-icon'));
await browserProxy.whenCalled('getSearchEnginesList');
Polymer.dom.flush();
assertEquals(0, selectElement.selectedIndex);
// Simulate a user initiated change of the default search engine.
selectElement.selectedIndex = 1;
selectElement.dispatchEvent(new CustomEvent('change'));
await browserProxy.whenCalled('setDefaultSearchEngine');
assertEquals(1, selectElement.selectedIndex);
// Simulate a change that happened in browser settings.
const searchEnginesInfo = generateSearchEngineInfo();
searchEnginesInfo.defaults[0].default = false;
searchEnginesInfo.defaults[1].default = false;
searchEnginesInfo.defaults[2].default = true;
browserProxy.resetResolver('setDefaultSearchEngine');
cr.webUIListenerCallback('search-engines-changed', searchEnginesInfo);
Polymer.dom.flush();
assertEquals(2, selectElement.selectedIndex);
browserProxy.whenCalled('setDefaultSearchEngine').then(function() {
// Since the change happened in a different tab, there should be
// no new call to |setDefaultSearchEngine|.
assertNotReached('Should not call setDefaultSearchEngine again');
});
// Tests that the page is querying and displaying search engine info on
// startup.
test('Initialization', async () => {
const selectElement = page.$$('select');
assertTrue(!!selectElement);
assertTrue(!!page.$$('#help-icon'));
await browserProxy.whenCalled('getSearchEnginesList');
Polymer.dom.flush();
assertEquals(0, selectElement.selectedIndex);
// Simulate a user initiated change of the default search engine.
selectElement.selectedIndex = 1;
selectElement.dispatchEvent(new CustomEvent('change'));
await browserProxy.whenCalled('setDefaultSearchEngine');
assertEquals(1, selectElement.selectedIndex);
// Simulate a change that happened in browser settings.
const searchEnginesInfo = generateSearchEngineInfo();
searchEnginesInfo.defaults[0].default = false;
searchEnginesInfo.defaults[1].default = false;
searchEnginesInfo.defaults[2].default = true;
browserProxy.resetResolver('setDefaultSearchEngine');
cr.webUIListenerCallback('search-engines-changed', searchEnginesInfo);
Polymer.dom.flush();
assertEquals(2, selectElement.selectedIndex);
browserProxy.whenCalled('setDefaultSearchEngine').then(function() {
// Since the change happened in a different tab, there should be
// no new call to |setDefaultSearchEngine|.
assertNotReached('Should not call setDefaultSearchEngine again');
});
});
test('ControlledByExtension', async () => {
await browserProxy.whenCalled('getSearchEnginesList');
const selectElement = page.$$('select');
assertFalse(selectElement.disabled);
assertFalse(!!page.$$('extension-controlled-indicator'));
page.set('prefs.default_search_provider_data.template_url_data', {
controlledBy: chrome.settingsPrivate.ControlledBy.EXTENSION,
controlledByName: 'fake extension name',
enforcement: chrome.settingsPrivate.Enforcement.ENFORCED,
extensionId: 'fake extension id',
extensionCanBeDisabled: true,
value: {},
});
Polymer.dom.flush();
assertTrue(selectElement.disabled);
assertTrue(!!page.$$('extension-controlled-indicator'));
assertFalse(!!page.$$('cr-policy-pref-indicator'));
test('ControlledByExtension', async () => {
await browserProxy.whenCalled('getSearchEnginesList');
const selectElement = page.$$('select');
assertFalse(selectElement.disabled);
assertFalse(!!page.$$('extension-controlled-indicator'));
page.set('prefs.default_search_provider_data.template_url_data', {
controlledBy: chrome.settingsPrivate.ControlledBy.EXTENSION,
controlledByName: 'fake extension name',
enforcement: chrome.settingsPrivate.Enforcement.ENFORCED,
extensionId: 'fake extension id',
extensionCanBeDisabled: true,
value: {},
});
Polymer.dom.flush();
assertTrue(selectElement.disabled);
assertTrue(!!page.$$('extension-controlled-indicator'));
assertFalse(!!page.$$('cr-policy-pref-indicator'));
});
test('ControlledByPolicy', async () => {
await browserProxy.whenCalled('getSearchEnginesList');
const selectElement = page.$$('select');
assertFalse(selectElement.disabled);
assertFalse(!!page.$$('extension-controlled-indicator'));
page.set('prefs.default_search_provider_data.template_url_data', {
controlledBy: chrome.settingsPrivate.ControlledBy.USER_POLICY,
enforcement: chrome.settingsPrivate.Enforcement.ENFORCED,
value: {},
});
Polymer.dom.flush();
assertTrue(selectElement.disabled);
assertFalse(!!page.$$('extension-controlled-indicator'));
assertTrue(!!page.$$('cr-policy-pref-indicator'));
test('ControlledByPolicy', async () => {
await browserProxy.whenCalled('getSearchEnginesList');
const selectElement = page.$$('select');
assertFalse(selectElement.disabled);
assertFalse(!!page.$$('extension-controlled-indicator'));
page.set('prefs.default_search_provider_data.template_url_data', {
controlledBy: chrome.settingsPrivate.ControlledBy.USER_POLICY,
enforcement: chrome.settingsPrivate.Enforcement.ENFORCED,
value: {},
});
Polymer.dom.flush();
assertTrue(selectElement.disabled);
assertFalse(!!page.$$('extension-controlled-indicator'));
assertTrue(!!page.$$('cr-policy-pref-indicator'));
});
test('Deep link to preferred search engine', async () => {
loadTimeData.overrideValues({isDeepLinkingEnabled: true});
assertTrue(loadTimeData.getBoolean('isDeepLinkingEnabled'));
test('Deep link to preferred search engine', async () => {
loadTimeData.overrideValues({isDeepLinkingEnabled: true});
assertTrue(loadTimeData.getBoolean('isDeepLinkingEnabled'));
const params = new URLSearchParams;
params.append('settingId', '600');
settings.Router.getInstance().navigateTo(
settings.routes.OS_SEARCH, params);
const params = new URLSearchParams;
params.append('settingId', '600');
settings.Router.getInstance().navigateTo(
settings.routes.OS_SEARCH, params);
const deepLinkElement = page.$$('select');
await test_util.waitAfterNextRender(deepLinkElement);
assertEquals(
deepLinkElement, getDeepActiveElement(),
'Preferred search dropdown should be focused for settingId=600.');
});
const deepLinkElement = page.$$('select');
await test_util.waitAfterNextRender(deepLinkElement);
assertEquals(
deepLinkElement, getDeepActiveElement(),
'Preferred search dropdown should be focused for settingId=600.');
});
});
......@@ -705,7 +705,7 @@ var OSSettingsGoogleAssistantPageTest = class extends OSSettingsBrowserTest {
/** @override */
get browsePreload() {
return super.browsePreload +
'google_assistant_page/google_assistant_page.html';
'chromeos/google_assistant_page/google_assistant_page.html';
}
/** @override */
......@@ -719,6 +719,7 @@ var OSSettingsGoogleAssistantPageTest = class extends OSSettingsBrowserTest {
get extraLibraries() {
return super.extraLibraries.concat([
'//ui/webui/resources/js/promise_resolver.js',
'//ui/webui/resources/js/util.js',
BROWSER_SETTINGS_PATH + '../test_browser_proxy.js',
BROWSER_SETTINGS_PATH + '../test_util.js',
'google_assistant_page_test.js',
......@@ -1875,7 +1876,7 @@ TEST_F('OSSettingsResetPageTest', 'AllJsTests', () => {
// Test fixture for the "Search and assistant" page.
// eslint-disable-next-line no-var
var OSSettingsSearchPageTest = class extends OSSettingsBrowserTest {
var OSSettingsOsSearchPageTest = class extends OSSettingsBrowserTest {
/** @override */
get browsePreload() {
return super.browsePreload + 'chromeos/os_search_page/os_search_page.html';
......@@ -1892,7 +1893,7 @@ var OSSettingsSearchPageTest = class extends OSSettingsBrowserTest {
}
};
TEST_F('OSSettingsSearchPageTest', 'AllJsTests', () => {
TEST_F('OSSettingsOsSearchPageTest', 'AllJsTests', () => {
mocha.run();
});
......
......@@ -95,6 +95,7 @@ TEST_F('OSSettingsNearbyShareSubPageV3Test', 'All', () => mocha.run());
['BluetoothPage', 'bluetooth_page_tests.m.js'],
['CellularSetupDialog', 'cellular_setup_dialog_test.m.js'],
['DateTimePage', 'date_time_page_tests.m.js'],
['GoogleAssistantPage', 'google_assistant_page_test.m.js'],
['InputMethodOptionPage', 'input_method_options_page_test.m.js'],
['InternetConfig', 'internet_config_test.m.js'],
['InternetDetailPage', 'internet_detail_page_tests.m.js'],
......@@ -112,6 +113,7 @@ TEST_F('OSSettingsNearbyShareSubPageV3Test', 'All', () => mocha.run());
['NetworkSummaryItem', 'network_summary_item_test.m.js'],
['OsEditDictionaryPage', 'os_edit_dictionary_page_test.m.js'],
['OsLanguagesPage', 'os_languages_page_tests.m.js'],
['OsSearchPage', 'os_search_page_test.m.js'],
['NearbyShareReceiveDialog', 'nearby_share_receive_dialog_tests.m.js'],
['ParentalControlsPage', 'parental_controls_page_test.m.js'],
['PeoplePage', 'os_people_page_test.m.js'],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment