diff options
Diffstat (limited to 'chromium/chrome/browser/ui/webui/settings/chromeos/languages_section.cc')
-rw-r--r-- | chromium/chrome/browser/ui/webui/settings/chromeos/languages_section.cc | 158 |
1 files changed, 131 insertions, 27 deletions
diff --git a/chromium/chrome/browser/ui/webui/settings/chromeos/languages_section.cc b/chromium/chrome/browser/ui/webui/settings/chromeos/languages_section.cc index 49c7f9129b0..162e26a16e9 100644 --- a/chromium/chrome/browser/ui/webui/settings/chromeos/languages_section.cc +++ b/chromium/chrome/browser/ui/webui/settings/chromeos/languages_section.cc @@ -17,6 +17,7 @@ #include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_pref_names.h" #include "components/prefs/pref_service.h" +#include "components/spellcheck/browser/pref_names.h" #include "content/public/browser/web_ui_data_source.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/webui/web_ui_util.h" @@ -65,12 +66,12 @@ const std::vector<SearchConcept>& GetLanguagesPageSearchConceptsV2() { mojom::SearchResultDefaultRank::kMedium, mojom::SearchResultType::kSubpage, {.subpage = mojom::Subpage::kLanguages}}, - {IDS_OS_SETTINGS_TAG_LANGUAGES_CHANGE_SYSTEM_LANGUAGE, + {IDS_OS_SETTINGS_TAG_LANGUAGES_CHANGE_DEVICE_LANGUAGE, mojom::kLanguagesSubpagePath, mojom::SearchResultIcon::kGlobe, mojom::SearchResultDefaultRank::kMedium, mojom::SearchResultType::kSetting, - {.setting = mojom::Setting::kChangeSystemLanguage}}, + {.setting = mojom::Setting::kChangeDeviceLanguage}}, {IDS_OS_SETTINGS_TAG_LANGUAGES_INPUT_ADD_LANGUAGE, mojom::kLanguagesSubpagePath, mojom::SearchResultIcon::kGlobe, @@ -119,6 +120,18 @@ const std::vector<SearchConcept>& GetInputPageSearchConceptsV2() { return *tags; } +const std::vector<SearchConcept>& GetEditDictionarySearchConceptsV2() { + static const base::NoDestructor<std::vector<SearchConcept>> tags({ + {IDS_OS_SETTINGS_TAG_LANGUAGES_EDIT_DICTIONARY, + mojom::kEditDictionarySubpagePath, + mojom::SearchResultIcon::kGlobe, + mojom::SearchResultDefaultRank::kMedium, + mojom::SearchResultType::kSubpage, + {.subpage = mojom::Subpage::kEditDictionary}}, + }); + return *tags; +} + bool IsLanguageSettingsV2Enabled() { return base::FeatureList::IsEnabled( ::chromeos::features::kLanguageSettingsUpdate); @@ -246,21 +259,31 @@ void AddInputMethodOptionsStrings(content::WebUIDataSource* html_source) { void AddLanguagesPageStringsV2(content::WebUIDataSource* html_source) { static constexpr webui::LocalizedString kLocalizedStrings[] = { - {"systemLanguageTitle", IDS_OS_SETTINGS_LANGUAGES_SYSTEM_LANGUAGE_TITLE}, - {"systemLanguageDescription", - IDS_OS_SETTINGS_LANGUAGES_SYSTEM_LANGUAGE_DESCRIPTION}, - {"changeSystemLanguageLabel", - IDS_OS_SETTINGS_LANGUAGES_CHANGE_SYSTEM_LANGUAGE_BUTTON_LABEL}, - {"changeSystemLanguageButtonDescription", - IDS_OS_SETTINGS_LANGUAGES_CHANGE_SYSTEM_LANGUAGE_BUTTON_DESCRIPTION}, + {"deviceLanguageTitle", IDS_OS_SETTINGS_LANGUAGES_DEVICE_LANGUAGE_TITLE}, + {"changeDeviceLanguageLabel", + IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_BUTTON_LABEL}, + {"changeDeviceLanguageButtonDescription", + IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_BUTTON_DESCRIPTION}, {"languagesPreferenceTitle", IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_TITLE}, {"languagesPreferenceDescription", IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_DESCRIPTION}, + {"translateTargetLabel", + IDS_OS_SETTINGS_LANGUAGES_TRANSLATE_TARGET_LABEL}, + {"offerToTranslateThisLanguage", + IDS_OS_SETTINGS_LANGUAGES_OFFER_TO_TRANSLATE_THIS_LANGUAGE}, {"offerTranslationLabel", IDS_OS_SETTINGS_LANGUAGES_OFFER_TRANSLATION_LABEL}, {"offerTranslationSublabel", IDS_OS_SETTINGS_LANGUAGES_OFFER_TRANSLATION_SUBLABEL}, + {"changeDeviceLanguageDialogTitle", + IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_DIALOG_TITLE}, + {"selectedDeviceLanguageInstruction", + IDS_OS_SETTINGS_LANGUAGES_SELECTED_DEVICE_LANGUAGE_INSTRUCTION}, + {"notSelectedDeviceLanguageInstruction", + IDS_OS_SETTINGS_LANGUAGES_NOT_SELECTED_DEVICE_LANGUAGE_INSTRUCTION}, + {"changeDeviceLanguageConfirmButtonLabel", + IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_CONFIRM_BUTTON_LABEL}, }; AddLocalizedStringsBulk(html_source, kLocalizedStrings); @@ -269,6 +292,11 @@ void AddLanguagesPageStringsV2(content::WebUIDataSource* html_source) { l10n_util::GetStringFUTF16( IDS_OS_SETTINGS_LANGUAGES_LANGUAGES_PREFERENCE_DESCRIPTION, base::ASCIIToUTF16(chrome::kLanguageSettingsLearnMoreUrl))); + html_source->AddString( + "changeDeviceLanguageDialogDescription", + l10n_util::GetStringFUTF16( + IDS_OS_SETTINGS_LANGUAGES_CHANGE_DEVICE_LANGUAGE_DIALOG_DESCRIPTION, + base::ASCIIToUTF16(chrome::kLanguageSettingsLearnMoreUrl))); } void AddInputPageStringsV2(content::WebUIDataSource* html_source) { @@ -277,9 +305,42 @@ void AddInputPageStringsV2(content::WebUIDataSource* html_source) { IDS_OS_SETTINGS_LANGUAGES_INPUT_METHOD_LIST_TITLE}, {"openOptionsPage", IDS_OS_SETTINGS_LANGUAGES_OPEN_OPTIONS_PAGE_LABEL}, {"addInputMethodLabel", IDS_OS_SETTINGS_LANGUAGES_ADD_INPUT_METHOD_LABEL}, + {"removeInputMethodTooltip", + IDS_OS_SETTINGS_LANGUAGES_REMOVE_INPUT_METHOD_TOOLTIP}, + {"suggestedInputMethodsLabel", + IDS_OS_SETTINGS_LANGUAGES_SUGGESTED_INPUT_METHODS_LABEL}, + {"allInputMethodsLabel", + IDS_OS_SETTINGS_LANGUAGES_ALL_INPUT_METHODS_LABEL}, + {"searchInputMethodsLabel", + IDS_OS_SETTINGS_LANGUAGES_SEARCH_INPUT_METHODS_LABEL}, + {"inputMethodNotAllowed", + IDS_OS_SETTINGS_LANGUAGES_INPUT_METHOD_NOT_ALLOWED}, {"spellCheckTitle", IDS_OS_SETTINGS_LANGUAGES_SPELL_CHECK_TITLE}, - {"spellCheckDisabledReason", - IDS_OS_SETTINGS_LANGUAGES_SPELL_CHECK_DISABLED_REASON}, + {"spellCheckEnhancedLabel", + IDS_OS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_LABEL}, + {"spellCheckLanguagesListTitle", + IDS_OS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_TITLE}, + {"spellCheckLanguagesListDescription", + IDS_OS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_DESCRIPTION}, + {"languagesDictionaryDownloadError", + IDS_OS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED}, + {"languagesDictionaryDownloadRetryLabel", + IDS_OS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_RETRY_LABEL}, + {"languagesDictionaryDownloadRetryDescription", + IDS_OS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_RETRY_DESCRIPTION}, + {"editDictionaryLabel", IDS_OS_SETTINGS_LANGUAGES_EDIT_DICTIONARY_LABEL}, + {"editDictionaryDescription", + IDS_OS_SETTINGS_LANGUAGES_EDIT_DICTIONARY_DESCRIPTION}, + {"addDictionaryWordButtonLabel", + IDS_OS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_BUTTON_LABEL}, + {"addDictionaryWordDuplicateError", + IDS_OS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_DUPLICATE_ERROR}, + {"addDictionaryWordLengthError", + IDS_OS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_LENGTH_ERROR}, + {"deleteDictionaryWordTooltip", + IDS_OS_SETTINGS_LANGUAGES_DELETE_DICTIONARY_WORD_TOOLTIP}, + {"noDictionaryWordsLabel", + IDS_OS_SETTINGS_LANGUAGES_NO_DICTIONARY_WORDS_LABEL}, }; AddLocalizedStringsBulk(html_source, kLocalizedStrings); } @@ -287,12 +348,21 @@ void AddInputPageStringsV2(content::WebUIDataSource* html_source) { } // namespace LanguagesSection::LanguagesSection(Profile* profile, - SearchTagRegistry* search_tag_registry) - : OsSettingsSection(profile, search_tag_registry) { + SearchTagRegistry* search_tag_registry, + PrefService* pref_service) + : OsSettingsSection(profile, search_tag_registry), + pref_service_(pref_service) { SearchTagRegistry::ScopedTagUpdater updater = registry()->StartUpdate(); if (IsLanguageSettingsV2Enabled()) { + pref_change_registrar_.Init(pref_service_); + pref_change_registrar_.Add( + spellcheck::prefs::kSpellCheckEnable, + base::BindRepeating(&LanguagesSection::UpdateSpellCheckSearchTags, + base::Unretained(this))); + updater.AddSearchTags(GetLanguagesPageSearchConceptsV2()); updater.AddSearchTags(GetInputPageSearchConceptsV2()); + UpdateSpellCheckSearchTags(); } else { updater.AddSearchTags(GetLanguagesSearchConceptsV1()); } @@ -380,11 +450,10 @@ std::string LanguagesSection::GetSectionPath() const { return mojom::kLanguagesAndInputSectionPath; } -bool LanguagesSection::IsEmojiSuggestionAllowed() const { - return base::FeatureList::IsEnabled( - ::chromeos::features::kEmojiSuggestAddition) && - profile()->GetPrefs()->GetBoolean( - ::chromeos::prefs::kEmojiSuggestionEnterpriseAllowed); +bool LanguagesSection::LogMetric(mojom::Setting setting, + base::Value& value) const { + // Unimplemented. + return false; } void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { @@ -394,7 +463,7 @@ void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { mojom::Subpage::kLanguages, mojom::SearchResultIcon::kGlobe, mojom::SearchResultDefaultRank::kMedium, mojom::kLanguagesSubpagePath); static constexpr mojom::Setting kLanguagesPageSettings[] = { - mojom::Setting::kChangeSystemLanguage, + mojom::Setting::kChangeDeviceLanguage, mojom::Setting::kOfferTranslation, }; RegisterNestedSettingBulk(mojom::Subpage::kLanguages, kLanguagesPageSettings, @@ -412,6 +481,13 @@ void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { RegisterNestedSettingBulk(mojom::Subpage::kInput, kInputPageSettings, generator); + // Edit dictionary. + generator->RegisterNestedSubpage( + IDS_OS_SETTINGS_LANGUAGES_EDIT_DICTIONARY_LABEL, + mojom::Subpage::kEditDictionary, mojom::Subpage::kInput, + mojom::SearchResultIcon::kGlobe, mojom::SearchResultDefaultRank::kMedium, + mojom::kEditDictionarySubpagePath); + // Languages and input details. generator->RegisterTopLevelSubpage( IDS_OS_SETTINGS_LANGUAGES_AND_INPUT_PAGE_TITLE, @@ -425,6 +501,14 @@ void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { mojom::Subpage::kLanguages); generator->RegisterNestedSetting(mojom::Setting::kShowInputOptionsInShelf, mojom::Subpage::kInput); + + // Input method options. + generator->RegisterNestedSubpage( + IDS_SETTINGS_LANGUAGES_INPUT_METHOD_OPTIONS_TITLE, + mojom::Subpage::kInputMethodOptions, mojom::Subpage::kInput, + mojom::SearchResultIcon::kGlobe, + mojom::SearchResultDefaultRank::kMedium, + mojom::kInputMethodOptionsSubpagePath); } else { static constexpr mojom::Setting kLanguagesAndInputDetailsSettings[] = { mojom::Setting::kAddLanguage, @@ -432,6 +516,15 @@ void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { }; RegisterNestedSettingBulk(mojom::Subpage::kLanguagesAndInputDetails, kLanguagesAndInputDetailsSettings, generator); + + // Input method options. + generator->RegisterNestedSubpage( + IDS_SETTINGS_LANGUAGES_INPUT_METHOD_OPTIONS_TITLE, + mojom::Subpage::kInputMethodOptions, + mojom::Subpage::kLanguagesAndInputDetails, + mojom::SearchResultIcon::kGlobe, + mojom::SearchResultDefaultRank::kMedium, + mojom::kInputMethodOptionsSubpagePath); } // Manage input methods. @@ -442,14 +535,6 @@ void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { mojom::SearchResultIcon::kGlobe, mojom::SearchResultDefaultRank::kMedium, mojom::kManageInputMethodsSubpagePath); - // Input method options. - generator->RegisterNestedSubpage( - IDS_SETTINGS_LANGUAGES_INPUT_METHOD_OPTIONS_TITLE, - mojom::Subpage::kInputMethodOptions, - mojom::Subpage::kLanguagesAndInputDetails, - mojom::SearchResultIcon::kGlobe, mojom::SearchResultDefaultRank::kMedium, - mojom::kInputMethodOptionsSubpagePath); - // Smart inputs. generator->RegisterTopLevelSubpage( IDS_SETTINGS_SUGGESTIONS_TITLE, mojom::Subpage::kSmartInputs, @@ -463,5 +548,24 @@ void LanguagesSection::RegisterHierarchy(HierarchyGenerator* generator) const { kSmartInputsFeaturesSettings, generator); } +bool LanguagesSection::IsEmojiSuggestionAllowed() const { + return base::FeatureList::IsEnabled( + ::chromeos::features::kEmojiSuggestAddition) && + pref_service_->GetBoolean( + ::chromeos::prefs::kEmojiSuggestionEnterpriseAllowed); +} + +bool LanguagesSection::IsSpellCheckEnabled() const { + return pref_service_->GetBoolean(spellcheck::prefs::kSpellCheckEnable); +} + +void LanguagesSection::UpdateSpellCheckSearchTags() { + SearchTagRegistry::ScopedTagUpdater updater = registry()->StartUpdate(); + updater.RemoveSearchTags(GetEditDictionarySearchConceptsV2()); + if (IsSpellCheckEnabled()) { + updater.AddSearchTags(GetEditDictionarySearchConceptsV2()); + } +} + } // namespace settings } // namespace chromeos |