| Index: chrome/browser/ui/webui/chromeos/login/l10n_util.cc | 
| diff --git a/chrome/browser/ui/webui/chromeos/login/l10n_util.cc b/chrome/browser/ui/webui/chromeos/login/l10n_util.cc | 
| index 8373721721c2700b978bff049f37ef929a1b07fa..3b961134ff54b036f48208118fff72504ee55089 100644 | 
| --- a/chrome/browser/ui/webui/chromeos/login/l10n_util.cc | 
| +++ b/chrome/browser/ui/webui/chromeos/login/l10n_util.cc | 
| @@ -24,8 +24,9 @@ | 
| #include "base/strings/stringprintf.h" | 
| #include "base/strings/utf_string_conversions.h" | 
| #include "base/task_runner_util.h" | 
| -#include "base/threading/sequenced_worker_pool.h" | 
| -#include "base/threading/thread_task_runner_handle.h" | 
| +#include "base/task_scheduler/post_task.h" | 
| +#include "base/threading/sequenced_task_runner_handle.h" | 
| +#include "base/threading/thread_restrictions.h" | 
| #include "base/values.h" | 
| #include "chrome/browser/browser_process.h" | 
| #include "chrome/browser/chromeos/customization/customization_document.h" | 
| @@ -45,8 +46,6 @@ const char kMostRelevantLanguagesDivider[] = "MOST_RELEVANT_LANGUAGES_DIVIDER"; | 
|  | 
| namespace { | 
|  | 
| -const char kSequenceToken[] = "chromeos_login_l10n_util"; | 
| - | 
| std::unique_ptr<base::DictionaryValue> CreateInputMethodsEntry( | 
| const input_method::InputMethodDescriptor& method, | 
| const std::string selected) { | 
| @@ -346,12 +345,11 @@ std::string CalculateSelectedLanguage(const std::string& requested_locale, | 
| return loaded_locale; | 
| } | 
|  | 
| -void ResolveLanguageListOnBlockingPool( | 
| +void ResolveLanguageListInThreadPool( | 
| std::unique_ptr<chromeos::locale_util::LanguageSwitchResult> | 
| language_switch_result, | 
| const scoped_refptr<base::TaskRunner> task_runner, | 
| const UILanguageListResolvedCallback& resolved_callback) { | 
| -  // DCHECK(task_runner->RunsTasksInCurrentSequence()); | 
| base::ThreadRestrictions::AssertIOAllowed(); | 
|  | 
| std::string selected_language; | 
| @@ -428,10 +426,11 @@ void ResolveUILanguageList( | 
| const UILanguageListResolvedCallback& callback) { | 
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
|  | 
| -  content::BrowserThread::GetBlockingPool()->PostTask( | 
| -      FROM_HERE, base::Bind(&ResolveLanguageListOnBlockingPool, | 
| -                            base::Passed(&language_switch_result), | 
| -                            base::ThreadTaskRunnerHandle::Get(), callback)); | 
| +  base::PostTaskWithTraits( | 
| +      FROM_HERE, {base::MayBlock()}, | 
| +      base::BindOnce(&ResolveLanguageListInThreadPool, | 
| +                     base::Passed(&language_switch_result), | 
| +                     base::SequencedTaskRunnerHandle::Get(), callback)); | 
| } | 
|  | 
| std::unique_ptr<base::ListValue> GetMinimalUILanguageList() { | 
| @@ -578,21 +577,16 @@ std::unique_ptr<base::ListValue> GetAndActivateLoginKeyboardLayouts( | 
| void GetKeyboardLayoutsForLocale( | 
| const GetKeyboardLayoutsForLocaleCallback& callback, | 
| const std::string& locale) { | 
| -  base::SequencedWorkerPool* worker_pool = | 
| -      content::BrowserThread::GetBlockingPool(); | 
| -  scoped_refptr<base::SequencedTaskRunner> background_task_runner = | 
| -      worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( | 
| -          worker_pool->GetNamedSequenceToken(kSequenceToken), | 
| -          base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); | 
| - | 
| // Resolve |locale| on a background thread, then continue on the current | 
| // thread. | 
| std::string (*get_application_locale)(const std::string&, bool) = | 
| &l10n_util::GetApplicationLocale; | 
| -  base::PostTaskAndReplyWithResult( | 
| -      background_task_runner.get(), FROM_HERE, | 
| -      base::Bind(get_application_locale, locale, false /* set_icu_locale */), | 
| -      base::Bind(&GetKeyboardLayoutsForResolvedLocale, locale, callback)); | 
| +  base::PostTaskWithTraitsAndReplyWithResult( | 
| +      FROM_HERE, | 
| +      {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, | 
| +      base::BindOnce(get_application_locale, locale, | 
| +                     false /* set_icu_locale */), | 
| +      base::BindOnce(&GetKeyboardLayoutsForResolvedLocale, locale, callback)); | 
| } | 
|  | 
| std::unique_ptr<base::DictionaryValue> GetCurrentKeyboardLayout() { | 
|  |