blob: e502692c5cc61ffebb7958b8891a2e3b3d18dc76 [file] [log] [blame]
// Copyright 2019 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.
// The IME ID for the Accessibility Common extension used by Dictation.
/** @type {string} */
const ACCESSIBILITY_COMMON_IME_ID =
'_ext_ime_egfdjlfmgnehecnclamagfafdccgfndpdictation';
/**
* @fileoverview
* 'os-settings-languages-section' is the top-level settings section for
* languages.
*/
Polymer({
is: 'os-settings-languages-section',
behaviors: [
I18nBehavior,
],
properties: {
prefs: Object,
/** @type {!LanguagesModel|undefined} */
languages: {
type: Object,
notify: true,
},
/** @type {!LanguageHelper} */
languageHelper: Object,
/** @private {!Map<string, string>} */
focusConfig_: {
type: Object,
value() {
const map = new Map();
if (settings.routes.OS_LANGUAGES_SMART_INPUTS) {
map.set(
settings.routes.OS_LANGUAGES_SMART_INPUTS.path,
'#smartInputsSubpageTrigger');
}
return map;
},
},
/** @private */
inputPageTitle_: {
type: String,
value() {
const isUpdate2 =
loadTimeData.getBoolean('enableLanguageSettingsV2Update2');
return this.i18n(isUpdate2 ? 'inputPageTitleV2' : 'inputPageTitle');
},
},
/**
* This is enabled when any of the smart inputs features is allowed.
* @private
* */
smartInputsEnabled_: {
type: Boolean,
value() {
return loadTimeData.getBoolean('allowAssistivePersonalInfo') ||
loadTimeData.getBoolean('allowEmojiSuggestion') ||
loadTimeData.getBoolean('allowPredictiveWriting');
},
}
},
/** @private */
onLanguagesV2Click_() {
settings.Router.getInstance().navigateTo(
settings.routes.OS_LANGUAGES_LANGUAGES);
},
/** @private */
onInputClick_() {
settings.Router.getInstance().navigateTo(
settings.routes.OS_LANGUAGES_INPUT);
},
/** @private */
onSmartInputsClick_() {
settings.Router.getInstance().navigateTo(
settings.routes.OS_LANGUAGES_SMART_INPUTS);
},
/**
* @param {string|undefined} code The language code of the language.
* @param {!LanguageHelper} languageHelper The LanguageHelper object.
* @return {string} The display name of the language specified.
* @private
*/
getLanguageDisplayName_(code, languageHelper) {
if (!code) {
return '';
}
const language = languageHelper.getLanguage(code);
if (!language) {
return '';
}
return language.displayName;
},
/**
* @param {string} id The input method ID.
* @param {!LanguageHelper} languageHelper The LanguageHelper object.
* @return {string} The display name of the input method.
* @private
*/
getInputMethodDisplayName_(id, languageHelper) {
if (id === ACCESSIBILITY_COMMON_IME_ID) {
return '';
}
// LanguageHelper.getInputMethodDisplayName will throw an error if the ID
// isn't found, such as when using CrOS on Linux.
try {
return languageHelper.getInputMethodDisplayName(id);
} catch (_) {
return '';
}
},
});