Chromium Code Reviews| Index: chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
| diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
| index 120986ec49051053a3f972fca5d59fddeb738a59..a25ef5333bdfc6374524f92d5b817f4837003b49 100644 |
| --- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
| +++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
| @@ -54,8 +54,17 @@ namespace chromeos { |
| namespace { |
| -// Path for a stripped down login page that does not have OOBE elements. |
| -const char kLoginPath[] = "login#login"; |
| +const char kOobeDisplay[] = "oobe"; |
| +const char kLoginDisplay[] = "login"; |
| +const char kLockDisplay[] = "lock"; |
| +const char kUserAddingDisplay[] = "user-adding"; |
| + |
| +const char* kKnownDisplayTypes[] = { |
| + kOobeDisplay, |
| + kLoginDisplay, |
| + kLockDisplay, |
| + kUserAddingDisplay |
| +}; |
| const char kStringsJSPath[] = "strings.js"; |
| const char kLoginJSPath[] = "login.js"; |
| @@ -86,7 +95,8 @@ bool HandleRequestCallback( |
| // Creates a WebUIDataSource for chrome://oobe |
| content::WebUIDataSource* CreateOobeUIDataSource( |
| - const base::DictionaryValue& localized_strings) { |
| + const base::DictionaryValue& localized_strings, |
| + const std::string& display_type) { |
| content::WebUIDataSource* source = |
| content::WebUIDataSource::Create(chrome::kChromeUIOobeHost); |
| source->SetUseJsonJSFormatV2(); |
| @@ -95,35 +105,40 @@ content::WebUIDataSource* CreateOobeUIDataSource( |
| if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) { |
| source->SetDefaultResource(IDR_DEMO_USER_LOGIN_HTML); |
| - source->AddResourcePath(kDemoUserLoginJSPath, |
| - IDR_DEMO_USER_LOGIN_JS); |
| + source->AddResourcePath(kDemoUserLoginJSPath, IDR_DEMO_USER_LOGIN_JS); |
| return source; |
| } |
| - |
| - source->SetDefaultResource(IDR_OOBE_HTML); |
| - source->AddResourcePath(kOobeJSPath, |
| - IDR_OOBE_JS); |
| - source->AddResourcePath(kLoginPath, |
| - IDR_LOGIN_HTML); |
| - source->AddResourcePath(kLoginJSPath, |
| - IDR_LOGIN_JS); |
| - source->AddResourcePath(kKeyboardUtilsJSPath, |
| - IDR_KEYBOARD_UTILS_JS); |
| + if (display_type == kOobeDisplay) { |
| + source->SetDefaultResource(IDR_OOBE_HTML); |
| + source->AddResourcePath(kOobeJSPath, IDR_OOBE_JS); |
| + } else { |
| + source->SetDefaultResource(IDR_LOGIN_HTML); |
| + source->AddResourcePath(kLoginJSPath, IDR_LOGIN_JS); |
| + } |
| + source->AddResourcePath(kKeyboardUtilsJSPath, IDR_KEYBOARD_UTILS_JS); |
| source->OverrideContentSecurityPolicyFrameSrc( |
| "frame-src chrome://terms/ " |
| "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/;"); |
| // Serve deferred resources. |
| - source->AddResourcePath(kEnrollmentHTMLPath, |
| - IDR_OOBE_ENROLLMENT_HTML); |
| - source->AddResourcePath(kEnrollmentCSSPath, |
| - IDR_OOBE_ENROLLMENT_CSS); |
| - source->AddResourcePath(kEnrollmentJSPath, |
| - IDR_OOBE_ENROLLMENT_JS); |
| + source->AddResourcePath(kEnrollmentHTMLPath, IDR_OOBE_ENROLLMENT_HTML); |
| + source->AddResourcePath(kEnrollmentCSSPath, IDR_OOBE_ENROLLMENT_CSS); |
| + source->AddResourcePath(kEnrollmentJSPath, IDR_OOBE_ENROLLMENT_JS); |
| return source; |
| } |
| +std::string GetDisplayType(const GURL& url) { |
| + std::string path = url.path().size() ? url.path().substr(1) : ""; |
| + if (std::find(kKnownDisplayTypes, |
| + kKnownDisplayTypes + arraysize(kKnownDisplayTypes), |
| + path) == kKnownDisplayTypes + arraysize(kKnownDisplayTypes)) { |
| + LOG(ERROR) << "Unknown display type '" + path + "'. Setting default."; |
|
ygorshenin1
2013/07/30 15:06:34
nit: if possible don't intermix IO operators with
dzhioev (left Google)
2013/07/30 16:18:55
Done.
|
| + return kLoginDisplay; |
| + } |
| + return path; |
| +} |
| + |
| } // namespace |
| // static |
| @@ -144,8 +159,9 @@ const char OobeUI::kScreenManagedUserCreationFlow[] |
| const char OobeUI::kScreenTermsOfService[] = "terms-of-service"; |
| const char OobeUI::kScreenWrongHWID[] = "wrong-hwid"; |
| -OobeUI::OobeUI(content::WebUI* web_ui) |
| +OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url) |
| : WebUIController(web_ui), |
| + core_handler_(NULL), |
| update_screen_handler_(NULL), |
| network_screen_actor_(NULL), |
| eula_screen_actor_(NULL), |
| @@ -161,6 +177,7 @@ OobeUI::OobeUI(content::WebUI* web_ui) |
| kiosk_app_menu_handler_(NULL), |
| current_screen_(SCREEN_UNKNOWN), |
| ready_(false) { |
| + display_type_ = GetDisplayType(url); |
| InitializeScreenMaps(); |
| network_state_informer_ = new NetworkStateInformer(); |
| @@ -175,9 +192,11 @@ OobeUI::OobeUI(content::WebUI* web_ui) |
| update_screen_handler_ = new UpdateScreenHandler(); |
| AddScreenHandler(update_screen_handler_); |
| - NetworkScreenHandler* network_screen_handler = new NetworkScreenHandler(); |
| - network_screen_actor_ = network_screen_handler; |
| - AddScreenHandler(network_screen_handler); |
| + if (display_type_ == kOobeDisplay) { |
| + NetworkScreenHandler* network_screen_handler = new NetworkScreenHandler(); |
| + network_screen_actor_ = network_screen_handler; |
| + AddScreenHandler(network_screen_handler); |
| + } |
| EulaScreenHandler* eula_screen_handler = new EulaScreenHandler(); |
| eula_screen_actor_ = eula_screen_handler; |
| @@ -250,7 +269,8 @@ OobeUI::OobeUI(content::WebUI* web_ui) |
| // Set up the chrome://oobe/ source. |
| content::WebUIDataSource::Add(profile, |
| - CreateOobeUIDataSource(localized_strings)); |
| + CreateOobeUIDataSource(localized_strings, |
| + display_type_)); |
| // Set up the chrome://userimage/ source. |
| options::UserImageSource* user_image_source = |