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 = |