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

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: 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 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());
263 261
264 std::unique_ptr<translate::TranslatePrefs> translate_prefs = 262 std::unique_ptr<translate::TranslatePrefs> translate_prefs =
265 ChromeTranslateClient::CreateTranslatePrefs( 263 ChromeTranslateClient::CreateTranslatePrefs(
266 chrome_details_.GetProfile()->GetPrefs()); 264 chrome_details_.GetProfile()->GetPrefs());
267 translate_prefs->UpdateLanguageList(parameters->language_codes); 265
266 std::vector<std::string> languages;
267 translate_prefs->GetLanguageList(&languages);
268
269 if (std::find(languages.begin(), languages.end(),
270 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.
271 languages.push_back(parameters->language_code);
272 translate_prefs->UpdateLanguageList(languages);
273 }
268 274
269 return RespondNow(NoArguments()); 275 return RespondNow(NoArguments());
270 } 276 }
277
278 LanguageSettingsPrivateDisableLanguageFunction::
279 LanguageSettingsPrivateDisableLanguageFunction()
280 : chrome_details_(this) {}
281
282 LanguageSettingsPrivateDisableLanguageFunction::
283 ~LanguageSettingsPrivateDisableLanguageFunction() {}
284
285 ExtensionFunction::ResponseAction
286 LanguageSettingsPrivateDisableLanguageFunction::Run() {
287 std::unique_ptr<language_settings_private::DisableLanguage::Params>
288 parameters =
289 language_settings_private::DisableLanguage::Params::Create(*args_);
290 EXTENSION_FUNCTION_VALIDATE(parameters.get());
291
292 std::unique_ptr<translate::TranslatePrefs> translate_prefs =
293 ChromeTranslateClient::CreateTranslatePrefs(
294 chrome_details_.GetProfile()->GetPrefs());
295
296 std::vector<std::string> languages;
297 translate_prefs->GetLanguageList(&languages);
298
299 auto it =
300 std::find(languages.begin(), languages.end(), parameters->language_code);
301 if (it != languages.end()) {
stevenjb 2016/08/22 17:03:49 ditto.
michaelpg 2016/08/22 18:24:46 Done.
302 languages.erase(it);
303 translate_prefs->UpdateLanguageList(languages);
304 }
305
306 return RespondNow(NoArguments());
307 }
271 308
272 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction:: 309 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction::
273 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() { 310 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() {
274 } 311 }
275 312
276 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction:: 313 LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction::
277 ~LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() { 314 ~LanguageSettingsPrivateGetSpellcheckDictionaryStatusesFunction() {
278 } 315 }
279 316
280 ExtensionFunction::ResponseAction 317 ExtensionFunction::ResponseAction
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 input_method_list.end(), input_method_id); 602 input_method_list.end(), input_method_id);
566 if (pos != input_method_list.end()) { 603 if (pos != input_method_list.end()) {
567 input_method_list.erase(pos); 604 input_method_list.erase(pos);
568 prefs->SetString(pref_name, base::JoinString(input_method_list, ",")); 605 prefs->SetString(pref_name, base::JoinString(input_method_list, ","));
569 } 606 }
570 #endif 607 #endif
571 return RespondNow(NoArguments()); 608 return RespondNow(NoArguments());
572 } 609 }
573 610
574 } // namespace extensions 611 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698