OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/webui/chromeos/login/l10n_util.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 } | 363 } |
364 | 364 |
365 language_info->SetString("value", value); | 365 language_info->SetString("value", value); |
366 language_info->SetString("title", display_name); | 366 language_info->SetString("title", display_name); |
367 if (value == selected) | 367 if (value == selected) |
368 language_info->SetBoolean("selected", true); | 368 language_info->SetBoolean("selected", true); |
369 } | 369 } |
370 return languages_list.Pass(); | 370 return languages_list.Pass(); |
371 } | 371 } |
372 | 372 |
| 373 std::string FindMostRelevantLocale( |
| 374 const std::vector<std::string>& most_relevant_language_codes, |
| 375 const base::ListValue& available_locales, |
| 376 const std::string& fallback_locale) { |
| 377 for (std::vector<std::string>::const_iterator most_relevant_it = |
| 378 most_relevant_language_codes.begin(); |
| 379 most_relevant_it != most_relevant_language_codes.end(); |
| 380 ++most_relevant_it) { |
| 381 for (base::ListValue::const_iterator available_it = |
| 382 available_locales.begin(); |
| 383 available_it != available_locales.end(); ++available_it) { |
| 384 base::DictionaryValue* dict; |
| 385 std::string available_locale; |
| 386 if (!(*available_it)->GetAsDictionary(&dict) || |
| 387 !dict->GetString("value", &available_locale)) { |
| 388 NOTREACHED(); |
| 389 continue; |
| 390 } |
| 391 if (available_locale == *most_relevant_it) |
| 392 return *most_relevant_it; |
| 393 } |
| 394 } |
| 395 |
| 396 return fallback_locale; |
| 397 } |
| 398 |
373 scoped_ptr<base::ListValue> GetAcceptLanguageList() { | 399 scoped_ptr<base::ListValue> GetAcceptLanguageList() { |
374 // Collect the language codes from the supported accept-languages. | 400 // Collect the language codes from the supported accept-languages. |
375 const std::string app_locale = g_browser_process->GetApplicationLocale(); | 401 const std::string app_locale = g_browser_process->GetApplicationLocale(); |
376 std::vector<std::string> accept_language_codes; | 402 std::vector<std::string> accept_language_codes; |
377 l10n_util::GetAcceptLanguagesForLocale(app_locale, &accept_language_codes); | 403 l10n_util::GetAcceptLanguagesForLocale(app_locale, &accept_language_codes); |
378 return GetLanguageList( | 404 return GetLanguageList( |
379 *input_method::InputMethodManager::Get()->GetSupportedInputMethods(), | 405 *input_method::InputMethodManager::Get()->GetSupportedInputMethods(), |
380 accept_language_codes, | 406 accept_language_codes, |
381 StartupCustomizationDocument::GetInstance()->configured_locales(), | 407 StartupCustomizationDocument::GetInstance()->configured_locales(), |
382 false); | 408 false); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 worker_pool->GetNamedSequenceToken(kSequenceToken), | 483 worker_pool->GetNamedSequenceToken(kSequenceToken), |
458 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); | 484 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
459 | 485 |
460 // Resolve |locale| on a background thread, then continue on the current | 486 // Resolve |locale| on a background thread, then continue on the current |
461 // thread. | 487 // thread. |
462 std::string (*get_application_locale)(const std::string&, bool) = | 488 std::string (*get_application_locale)(const std::string&, bool) = |
463 &l10n_util::GetApplicationLocale; | 489 &l10n_util::GetApplicationLocale; |
464 base::PostTaskAndReplyWithResult( | 490 base::PostTaskAndReplyWithResult( |
465 background_task_runner, | 491 background_task_runner, |
466 FROM_HERE, | 492 FROM_HERE, |
467 base::Bind(get_application_locale, locale, false /* set_icu_locale*/ ), | 493 base::Bind(get_application_locale, locale, false /* set_icu_locale */), |
468 base::Bind(&GetKeyboardLayoutsForResolvedLocale, callback)); | 494 base::Bind(&GetKeyboardLayoutsForResolvedLocale, callback)); |
469 } | 495 } |
470 | 496 |
471 scoped_ptr<base::DictionaryValue> GetCurrentKeyboardLayout() { | 497 scoped_ptr<base::DictionaryValue> GetCurrentKeyboardLayout() { |
472 const input_method::InputMethodDescriptor current_input_method = | 498 const input_method::InputMethodDescriptor current_input_method = |
473 input_method::InputMethodManager::Get() | 499 input_method::InputMethodManager::Get() |
474 ->GetActiveIMEState() | 500 ->GetActiveIMEState() |
475 ->GetCurrentInputMethod(); | 501 ->GetCurrentInputMethod(); |
476 return CreateInputMethodsEntry(current_input_method, | 502 return CreateInputMethodsEntry(current_input_method, |
477 current_input_method.id()); | 503 current_input_method.id()); |
478 } | 504 } |
479 | 505 |
480 } // namespace chromeos | 506 } // namespace chromeos |
OLD | NEW |