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

Unified Diff: chrome/browser/ui/webui/chromeos/login/network_screen_handler.h

Issue 620563002: ChromeOS NetworkScreenHandler should not call CheckAndResolveLocale on UI thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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/ui/webui/chromeos/login/network_screen_handler.h
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h
index 58b2b6011765f54bae4f63e8e70e74ae98053e9a..d638c010166c452bea01b5a3c5e5656d25a6fd18 100644
--- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h
@@ -59,6 +59,12 @@ class NetworkScreenHandler : public NetworkScreenActor,
void ReloadLocalizedContent();
private:
+ struct LanguageSwitchResult {
+ std::string requested_locale;
+ std::string loaded_locale;
+ bool success;
+ };
+
// Handles moving off the screen.
void HandleOnExit();
@@ -84,6 +90,15 @@ class NetworkScreenHandler : public NetworkScreenActor,
// Returns available timezones. Caller gets the ownership.
static base::ListValue* GetTimezoneList();
+ // Starts resolving language list on BlockingPool.
+ void ScheduleResolveLanguageList();
+
+ // Callback for ScheduleResolveLanguageList().
+ void OnLanguageListResolved(
+ scoped_ptr<scoped_ptr<base::ListValue>> new_language_list,
+ scoped_ptr<std::string> new_language_list_locale,
+ scoped_ptr<std::string> new_selected_language);
+
NetworkScreenActor::Delegate* screen_;
CoreOobeActor* core_oobe_actor_;
@@ -100,6 +115,15 @@ class NetworkScreenHandler : public NetworkScreenActor,
// The exact language code selected by user in the menu.
std::string selected_language_code_;
+ // Creation of language list happens on Blocking Pool, so we cache resolved
+ // data.
+ std::string language_list_locale_;
+ scoped_ptr<base::ListValue> language_list_;
+
+ // "Selected language" should be calculated on Blocking Pool, so we need to
+ // remember results of language switching.
+ LanguageSwitchResult language_switch_result_;
dzhioev (left Google) 2014/10/01 15:08:08 No need to save this struct.
Alexander Alekseev 2014/10/02 13:12:07 Done.
+
base::WeakPtrFactory<NetworkScreenHandler> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(NetworkScreenHandler);

Powered by Google App Engine
This is Rietveld 408576698