Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Unified Diff: chrome/browser/spellchecker/spellcheck_service.cc

Issue 1673783003: [spellcheck] Don't spellcheck in removed language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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())

Powered by Google App Engine
This is Rietveld 408576698