Commit a3109a20 authored by My Nguyen's avatar My Nguyen Committed by Commit Bot

[OsSettingsLanguages] Add Restart for ChangeDeviceLanguageDialog

Make the button actually confirm and restart.
Spec: http://go/cros-lang-settings-ux-slide#slide=15

Bug: 1113439
Change-Id: I4d728f8d2e237ceb15139493fadeaf4b7f0b83f1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2379405
Commit-Queue: My Nguyen <myy@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarRegan Hsu <hsuregan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#802992}
parent 34817d28
...@@ -35,6 +35,7 @@ import './os_files_page/smb_shares_page.m.js'; ...@@ -35,6 +35,7 @@ import './os_files_page/smb_shares_page.m.js';
export {SmbBrowserProxyImpl, SmbMountResult} from 'chrome://resources/cr_components/chromeos/smb_shares/smb_browser_proxy.m.js'; export {SmbBrowserProxyImpl, SmbMountResult} from 'chrome://resources/cr_components/chromeos/smb_shares/smb_browser_proxy.m.js';
export {LanguagesBrowserProxy, LanguagesBrowserProxyImpl} from '../languages_page/languages_browser_proxy.m.js'; export {LanguagesBrowserProxy, LanguagesBrowserProxyImpl} from '../languages_page/languages_browser_proxy.m.js';
export {LifetimeBrowserProxyImpl} from '../lifetime_browser_proxy.m.js';
export {TimeZoneAutoDetectMethod} from './date_time_page/date_time_types.m.js'; export {TimeZoneAutoDetectMethod} from './date_time_page/date_time_types.m.js';
export {TimeZoneBrowserProxyImpl} from './date_time_page/timezone_browser_proxy.m.js'; export {TimeZoneBrowserProxyImpl} from './date_time_page/timezone_browser_proxy.m.js';
export {LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './os_languages_page/languages_metrics_proxy.m.js'; export {LanguagesMetricsProxy, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from './os_languages_page/languages_metrics_proxy.m.js';
......
...@@ -27,6 +27,7 @@ js_type_check("closure_compile") { ...@@ -27,6 +27,7 @@ js_type_check("closure_compile") {
js_library("change_device_language_dialog") { js_library("change_device_language_dialog") {
deps = [ deps = [
"../..:lifetime_browser_proxy",
"../../languages_page:languages", "../../languages_page:languages",
"//ui/webui/resources/cr_elements:cr_scrollable_behavior", "//ui/webui/resources/cr_elements:cr_scrollable_behavior",
"//ui/webui/resources/cr_elements/cr_search_field:cr_search_field", "//ui/webui/resources/cr_elements/cr_search_field:cr_search_field",
...@@ -165,6 +166,7 @@ js_type_check("closure_compile_module") { ...@@ -165,6 +166,7 @@ js_type_check("closure_compile_module") {
js_library("change_device_language_dialog.m") { js_library("change_device_language_dialog.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.m.js" ] sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_languages_page/change_device_language_dialog.m.js" ]
deps = [ deps = [
"../..:lifetime_browser_proxy.m",
"../../languages_page:languages.m", "../../languages_page:languages.m",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/cr_elements:cr_scrollable_behavior.m", "//ui/webui/resources/cr_elements:cr_scrollable_behavior.m",
......
...@@ -9,8 +9,11 @@ ...@@ -9,8 +9,11 @@
<link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
<link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-ripple/paper-ripple.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-ripple/paper-ripple.html">
<link rel="import" href="languages_metrics_proxy.html">
<link rel="import" href="../localized_link/localized_link.html"> <link rel="import" href="../localized_link/localized_link.html">
<link rel="import" href="../metrics_recorder.html">
<link rel="import" href="../../languages_page/languages.html"> <link rel="import" href="../../languages_page/languages.html">
<link rel="import" href="../../lifetime_browser_proxy.html">
<link rel="import" href="../../settings_shared_css.html"> <link rel="import" href="../../settings_shared_css.html">
<dom-module id="os-settings-change-device-language-dialog"> <dom-module id="os-settings-change-device-language-dialog">
......
...@@ -101,13 +101,16 @@ Polymer({ ...@@ -101,13 +101,16 @@ Polymer({
}, },
/** /**
* Sets device language. * Sets device language and restarts device.
* @private * @private
*/ */
onActionButtonTap_() { onActionButtonTap_() {
assert(this.selectedLanguage_); assert(this.selectedLanguage_);
this.languageHelper.setProspectiveUILanguage(this.selectedLanguage_.code); this.languageHelper.setProspectiveUILanguage(this.selectedLanguage_.code);
this.$.dialog.close(); settings.recordSettingChange();
settings.LanguagesMetricsProxyImpl.getInstance().recordInteraction(
settings.LanguagesPageInteraction.RESTART);
settings.LifetimeBrowserProxyImpl.getInstance().signOutAndRestart();
}, },
/** /**
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
// clang-format off // clang-format off
// #import {LanguagesBrowserProxyImpl, LanguagesMetricsProxyImpl, LanguagesPageInteraction} from 'chrome://os-settings/chromeos/lazy_load.js'; // #import {LanguagesBrowserProxyImpl, LanguagesMetricsProxyImpl, LanguagesPageInteraction, LifetimeBrowserProxyImpl} from 'chrome://os-settings/chromeos/lazy_load.js';
// #import {CrSettingsPrefs, Router} from 'chrome://os-settings/chromeos/os_settings.js'; // #import {CrSettingsPrefs, Router} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {assert} from 'chrome://resources/js/assert.m.js'; // #import {assert} from 'chrome://resources/js/assert.m.js';
// #import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js'; // #import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
// #import {FakeSettingsPrivate} from '../fake_settings_private.m.js'; // #import {FakeSettingsPrivate} from '../fake_settings_private.m.js';
// #import {TestLanguagesBrowserProxy} from './test_os_languages_browser_proxy.m.js'; // #import {TestLanguagesBrowserProxy} from './test_os_languages_browser_proxy.m.js';
// #import {TestLanguagesMetricsProxy} from './test_os_languages_metrics_proxy.m.js'; // #import {TestLanguagesMetricsProxy} from './test_os_languages_metrics_proxy.m.js';
// #import {TestLifetimeBrowserProxy} from './test_os_lifetime_browser_proxy.m.js';
// #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js'; // #import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
// #import {fakeDataBind} from '../../test_util.m.js'; // #import {fakeDataBind} from '../../test_util.m.js';
// clang-format on // clang-format on
...@@ -27,6 +28,8 @@ suite('languages page', () => { ...@@ -27,6 +28,8 @@ suite('languages page', () => {
let actionMenu; let actionMenu;
/** @type {!settings.LanguagesBrowserProxy} */ /** @type {!settings.LanguagesBrowserProxy} */
let browserProxy; let browserProxy;
/** @type {!settings.TestLifetimeBrowserProxy} */
let lifetimeProxy;
/** @type {!settings.LanguagesMetricsProxy} */ /** @type {!settings.LanguagesMetricsProxy} */
let metricsProxy; let metricsProxy;
...@@ -54,6 +57,9 @@ suite('languages page', () => { ...@@ -54,6 +57,9 @@ suite('languages page', () => {
browserProxy = new settings.TestLanguagesBrowserProxy(); browserProxy = new settings.TestLanguagesBrowserProxy();
settings.LanguagesBrowserProxyImpl.instance_ = browserProxy; settings.LanguagesBrowserProxyImpl.instance_ = browserProxy;
lifetimeProxy = new settings.TestLifetimeBrowserProxy();
settings.LifetimeBrowserProxyImpl.instance_ = lifetimeProxy;
// Sets up test metrics proxy. // Sets up test metrics proxy.
metricsProxy = new settings.TestLanguagesMetricsProxy(); metricsProxy = new settings.TestLanguagesMetricsProxy();
settings.LanguagesMetricsProxyImpl.instance_ = metricsProxy; settings.LanguagesMetricsProxyImpl.instance_ = metricsProxy;
...@@ -255,7 +261,7 @@ suite('languages page', () => { ...@@ -255,7 +261,7 @@ suite('languages page', () => {
assertTrue(actionButton.disabled); assertTrue(actionButton.disabled);
}); });
test('sets device language', async () => { test('sets device language and restarts device', async () => {
// selects a language // selects a language
dialogItems[0].click(); // en-CA dialogItems[0].click(); // en-CA
assertFalse(actionButton.disabled); assertFalse(actionButton.disabled);
...@@ -263,6 +269,10 @@ suite('languages page', () => { ...@@ -263,6 +269,10 @@ suite('languages page', () => {
actionButton.click(); actionButton.click();
assertEquals( assertEquals(
'en-CA', await browserProxy.whenCalled('setProspectiveUILanguage')); 'en-CA', await browserProxy.whenCalled('setProspectiveUILanguage'));
assertEquals(
settings.LanguagesPageInteraction.RESTART,
await metricsProxy.whenCalled('recordInteraction'));
await lifetimeProxy.whenCalled('signOutAndRestart');
}); });
// Test that searching languages works whether the displayed or native // Test that searching languages works whether the displayed or native
......
...@@ -1542,6 +1542,7 @@ var OSSettingsLanguagesPageV2Test = class extends OSSettingsBrowserTest { ...@@ -1542,6 +1542,7 @@ var OSSettingsLanguagesPageV2Test = class extends OSSettingsBrowserTest {
'os_languages_page_v2_tests.js', 'os_languages_page_v2_tests.js',
'test_os_languages_browser_proxy.js', 'test_os_languages_browser_proxy.js',
'test_os_languages_metrics_proxy.js', 'test_os_languages_metrics_proxy.js',
'test_os_lifetime_browser_proxy.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