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

Side by Side 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: update histograms 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/language_settings_private/language_setti ngs_private_api.h" 5 #include "chrome/browser/extensions/api/language_settings_private/language_setti ngs_private_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 if (spellcheck_language_set.count(pair.first) > 0) 238 if (spellcheck_language_set.count(pair.first) > 0)
239 language.supports_spellcheck.reset(new bool(true)); 239 language.supports_spellcheck.reset(new bool(true));
240 if (translate_language_set.count(pair.first) > 0) 240 if (translate_language_set.count(pair.first) > 0)
241 language.supports_translate.reset(new bool(true)); 241 language.supports_translate.reset(new bool(true));
242 242
243 language_list->Append(language.ToValue()); 243 language_list->Append(language.ToValue());
244 } 244 }
245 return RespondNow(OneArgument(std::move(language_list))); 245 return RespondNow(OneArgument(std::move(language_list)));
246 } 246 }
247 247
248 LanguageSettingsPrivateSetLanguageListFunction:: 248 LanguageSettingsPrivateEnableLanguageFunction::
249 LanguageSettingsPrivateSetLanguageListFunction() 249 LanguageSettingsPrivateEnableLanguageFunction()
250 : chrome_details_(this) { 250 : chrome_details_(this) {}
251 }
252 251
253 LanguageSettingsPrivateSetLanguageListFunction:: 252 LanguageSettingsPrivateEnableLanguageFunction::
254 ~LanguageSettingsPrivateSetLanguageListFunction() { 253 ~LanguageSettingsPrivateEnableLanguageFunction() {}
255 }
256 254
257 ExtensionFunction::ResponseAction 255 ExtensionFunction::ResponseAction
258 LanguageSettingsPrivateSetLanguageListFunction::Run() { 256 LanguageSettingsPrivateEnableLanguageFunction::Run() {
259 std::unique_ptr<language_settings_private::SetLanguageList::Params> 257 std::unique_ptr<language_settings_private::EnableLanguage::Params>
260 parameters = 258 parameters =
261 language_settings_private::SetLanguageList::Params::Create(*args_); 259 language_settings_private::EnableLanguage::Params::Create(*args_);
262 EXTENSION_FUNCTION_VALIDATE(parameters.get()); 260 EXTENSION_FUNCTION_VALIDATE(parameters.get());
261 const std::string& language_code = parameters->language_code;
263 262
264 std::unique_ptr<translate::TranslatePrefs> translate_prefs = 263 std::unique_ptr<translate::TranslatePrefs> translate_prefs =
265 ChromeTranslateClient::CreateTranslatePrefs( 264 ChromeTranslateClient::CreateTranslatePrefs(
266 chrome_details_.GetProfile()->GetPrefs()); 265 chrome_details_.GetProfile()->GetPrefs());
267 translate_prefs->UpdateLanguageList(parameters->language_codes); 266
267 std::vector<std::string> languages;
268 translate_prefs->GetLanguageList(&languages);
269
270 if (std::find(languages.begin(), languages.end(), language_code) !=
271 languages.end()) {
272 LOG(ERROR) << "Language " << language_code << " already enabled";
273 return RespondNow(NoArguments());
274 }
275
276 languages.push_back(parameters->language_code);
277 translate_prefs->UpdateLanguageList(languages);
268 278
269 return RespondNow(NoArguments()); 279 return RespondNow(NoArguments());
270 } 280 }
281
282 LanguageSettingsPrivateDisableLanguageFunction::
283 LanguageSettingsPrivateDisableLanguageFunction()
284 : chrome_details_(this) {}
285
286 LanguageSettingsPrivateDisableLanguageFunction::
287 ~LanguageSettingsPrivateDisableLanguageFunction() {}
288
289 ExtensionFunction::ResponseAction
290 LanguageSettingsPrivateDisableLanguageFunction::Run() {
291 std::unique_ptr<language_settings_private::DisableLanguage::Params>
292 parameters =
293 language_settings_private::DisableLanguage::Params::Create(*args_);
294 EXTENSION_FUNCTION_VALIDATE(parameters.get());
295 const std::string& language_code = parameters->language_code;
296
297 std::unique_ptr<translate::TranslatePrefs> translate_prefs =
298 ChromeTranslateClient::CreateTranslatePrefs(
299 chrome_details_.GetProfile()->GetPrefs());
300
301 std::vector<std::string> languages;
302 translate_prefs->GetLanguageList(&languages);
303
304 auto it = std::find(languages.begin(), languages.end(), language_code);
305 if (it == languages.end()) {
306 LOG(ERROR) << "Language " << language_code << " not enabled";
307 return RespondNow(NoArguments());
308 }
309
310 languages.erase(it);
311 translate_prefs->UpdateLanguageList(languages);
312
313 return RespondNow(NoArguments());
314 }
271 315
272 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction:: 316 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction::
273 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() { 317 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() {
274 } 318 }
275 319
276 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction:: 320 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction::
277 ~LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() { 321 ~LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() {
278 } 322 }
279 323
280 ExtensionFunction::ResponseAction 324 ExtensionFunction::ResponseAction
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 input_method_list.end(), input_method_id); 609 input_method_list.end(), input_method_id);
566 if (pos != input_method_list.end()) { 610 if (pos != input_method_list.end()) {
567 input_method_list.erase(pos); 611 input_method_list.erase(pos);
568 prefs->SetString(pref_name, base::JoinString(input_method_list, ",")); 612 prefs->SetString(pref_name, base::JoinString(input_method_list, ","));
569 } 613 }
570 #endif 614 #endif
571 return RespondNow(NoArguments()); 615 return RespondNow(NoArguments());
572 } 616 }
573 617
574 } // namespace extensions 618 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698