Chromium Code Reviews| Index: chrome/browser/spellchecker/spellcheck_service.cc |
| diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc |
| index 68d72e8f245022a79bb13335cd07614646e8aed0..b766b24e6795cf28218898526333b681fd5c5683 100644 |
| --- a/chrome/browser/spellchecker/spellcheck_service.cc |
| +++ b/chrome/browser/spellchecker/spellcheck_service.cc |
| @@ -4,6 +4,8 @@ |
| #include "chrome/browser/spellchecker/spellcheck_service.h" |
| +#include <algorithm> |
| + |
| #include "base/logging.h" |
| #include "base/strings/string_split.h" |
| #include "base/supports_user_data.h" |
| @@ -76,7 +78,6 @@ SpellcheckService::SpellcheckService(content::BrowserContext* context) |
| } |
| single_dictionary_pref.SetValue(""); |
| - |
| #endif // defined(USE_BROWSER_SPELLCHECKER) |
| std::string language_code; |
| @@ -96,7 +97,10 @@ SpellcheckService::SpellcheckService(content::BrowserContext* context) |
| prefs::kSpellCheckUseSpellingService, |
| base::Bind(&SpellcheckService::OnUseSpellingServiceChanged, |
| base::Unretained(this))); |
| - |
| + pref_change_registrar_.Add( |
| + prefs::kAcceptLanguages, |
| + base::Bind(&SpellcheckService::OnAcceptLanguagesChanged, |
| + base::Unretained(this))); |
| pref_change_registrar_.Add( |
| prefs::kEnableContinuousSpellcheck, |
| base::Bind(&SpellcheckService::InitForAllRenderers, |
| @@ -336,6 +340,31 @@ void SpellcheckService::OnUseSpellingServiceChanged() { |
| UpdateFeedbackSenderState(); |
| } |
| +void SpellcheckService::OnAcceptLanguagesChanged() { |
| + PrefService* prefs = user_prefs::UserPrefs::Get(context_); |
| + std::vector<std::string> accept_languages = |
| + base::SplitString(prefs->GetString(prefs::kAcceptLanguages), ",", |
|
groby-ooo-7-16
2016/02/09 02:51:33
Sigh. Why is this not a list? (Undirected grumblin
please use gerrit instead
2016/02/09 20:45:49
Acknowledged.
|
| + base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| + std::transform( |
| + accept_languages.begin(), accept_languages.end(), |
| + accept_languages.begin(), |
| + &chrome::spellcheck_common::GetCorrespondingSpellCheckLanguage); |
| + |
| + StringListPrefMember dictionaries_pref; |
| + dictionaries_pref.Init(prefs::kSpellCheckDictionaries, prefs); |
|
groby-ooo-7-16
2016/02/09 02:51:33
If dictionaries and accept_languages were ordered,
please use gerrit instead
2016/02/09 20:45:49
Right, we can't order them, because we want to pre
|
| + std::vector<std::string> dictionaries = dictionaries_pref.GetValue(); |
| + std::vector<std::string> filtered_dictionaries; |
| + |
| + for (const auto& dictionary : dictionaries) { |
| + if (std::find(accept_languages.begin(), accept_languages.end(), |
| + dictionary) != accept_languages.end()) { |
| + filtered_dictionaries.push_back(dictionary); |
| + } |
| + } |
| + |
| + dictionaries_pref.SetValue(filtered_dictionaries); |
| +} |
| + |
| void SpellcheckService::UpdateFeedbackSenderState() { |
| std::string feedback_language; |
| if (!hunspell_dictionaries_.empty()) |