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

Unified Diff: chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc

Issue 2261903002: Fix race condition in MD Settings Languages page causing inconsistent settings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format Created 4 years, 4 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/extensions/api/language_settings_private/language_settings_private_api.cc
diff --git a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
index efc2f1ff66bc86a58ef29f16cf8c01cf78a62947..1216d880bc0ea90a57b01dedefe23cb06d958f5a 100644
--- a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
+++ b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
@@ -245,26 +245,63 @@ LanguageSettingsPrivateGetLanguageListFunction::Run() {
return RespondNow(OneArgument(std::move(language_list)));
}
-LanguageSettingsPrivateSetLanguageListFunction::
- LanguageSettingsPrivateSetLanguageListFunction()
- : chrome_details_(this) {
-}
+LanguageSettingsPrivateEnableLanguageFunction::
+ LanguageSettingsPrivateEnableLanguageFunction()
+ : chrome_details_(this) {}
+
+LanguageSettingsPrivateEnableLanguageFunction::
+ ~LanguageSettingsPrivateEnableLanguageFunction() {}
+
+ExtensionFunction::ResponseAction
+LanguageSettingsPrivateEnableLanguageFunction::Run() {
+ std::unique_ptr<language_settings_private::EnableLanguage::Params>
+ parameters =
+ language_settings_private::EnableLanguage::Params::Create(*args_);
+ EXTENSION_FUNCTION_VALIDATE(parameters.get());
+
+ std::unique_ptr<translate::TranslatePrefs> translate_prefs =
+ ChromeTranslateClient::CreateTranslatePrefs(
+ chrome_details_.GetProfile()->GetPrefs());
+
+ std::vector<std::string> languages;
+ translate_prefs->GetLanguageList(&languages);
+
+ if (std::find(languages.begin(), languages.end(),
+ parameters->language_code) == languages.end()) {
stevenjb 2016/08/22 17:03:50 We should invert this and set a 'Language already
michaelpg 2016/08/22 18:24:46 Done.
+ languages.push_back(parameters->language_code);
+ translate_prefs->UpdateLanguageList(languages);
+ }
-LanguageSettingsPrivateSetLanguageListFunction::
- ~LanguageSettingsPrivateSetLanguageListFunction() {
+ return RespondNow(NoArguments());
}
+LanguageSettingsPrivateDisableLanguageFunction::
+ LanguageSettingsPrivateDisableLanguageFunction()
+ : chrome_details_(this) {}
+
+LanguageSettingsPrivateDisableLanguageFunction::
+ ~LanguageSettingsPrivateDisableLanguageFunction() {}
+
ExtensionFunction::ResponseAction
-LanguageSettingsPrivateSetLanguageListFunction::Run() {
- std::unique_ptr<language_settings_private::SetLanguageList::Params>
+LanguageSettingsPrivateDisableLanguageFunction::Run() {
+ std::unique_ptr<language_settings_private::DisableLanguage::Params>
parameters =
- language_settings_private::SetLanguageList::Params::Create(*args_);
+ language_settings_private::DisableLanguage::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(parameters.get());
std::unique_ptr<translate::TranslatePrefs> translate_prefs =
ChromeTranslateClient::CreateTranslatePrefs(
chrome_details_.GetProfile()->GetPrefs());
- translate_prefs->UpdateLanguageList(parameters->language_codes);
+
+ std::vector<std::string> languages;
+ translate_prefs->GetLanguageList(&languages);
+
+ auto it =
+ std::find(languages.begin(), languages.end(), parameters->language_code);
+ if (it != languages.end()) {
stevenjb 2016/08/22 17:03:49 ditto.
michaelpg 2016/08/22 18:24:46 Done.
+ languages.erase(it);
+ translate_prefs->UpdateLanguageList(languages);
+ }
return RespondNow(NoArguments());
}

Powered by Google App Engine
This is Rietveld 408576698