OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/oobe_ui.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
6 | 6 |
7 #include <string> | |
8 | |
9 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
10 #include "base/command_line.h" | 8 #include "base/command_line.h" |
11 #include "base/logging.h" | 9 #include "base/logging.h" |
12 #include "base/memory/ref_counted_memory.h" | 10 #include "base/memory/ref_counted_memory.h" |
13 #include "base/values.h" | 11 #include "base/values.h" |
14 #include "chrome/browser/browser_about_handler.h" | 12 #include "chrome/browser/browser_about_handler.h" |
15 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" | 13 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" |
16 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen_actor.h" | 14 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen_actor.h" |
17 #include "chrome/browser/chromeos/login/login_display_host_impl.h" | 15 #include "chrome/browser/chromeos/login/login_display_host_impl.h" |
18 #include "chrome/browser/chromeos/login/screen_locker.h" | 16 #include "chrome/browser/chromeos/login/screen_locker.h" |
(...skipping 28 matching lines...) Expand all Loading... | |
47 #include "content/public/browser/web_ui.h" | 45 #include "content/public/browser/web_ui.h" |
48 #include "content/public/browser/web_ui_data_source.h" | 46 #include "content/public/browser/web_ui_data_source.h" |
49 #include "grit/browser_resources.h" | 47 #include "grit/browser_resources.h" |
50 #include "ui/base/resource/resource_bundle.h" | 48 #include "ui/base/resource/resource_bundle.h" |
51 #include "ui/webui/web_ui_util.h" | 49 #include "ui/webui/web_ui_util.h" |
52 | 50 |
53 namespace chromeos { | 51 namespace chromeos { |
54 | 52 |
55 namespace { | 53 namespace { |
56 | 54 |
57 // Path for a stripped down login page that does not have OOBE elements. | 55 const char kOobeDisplay[] = "oobe"; |
Nikita (slow)
2013/07/31 13:27:51
nit: I think short comment may be added here that
dzhioev (left Google)
2013/08/01 13:38:09
Done.
| |
58 const char kLoginPath[] = "login#login"; | 56 const char kLoginDisplay[] = "login"; |
57 const char kLockDisplay[] = "lock"; | |
58 const char kUserAddingDisplay[] = "user-adding"; | |
59 | |
60 const char* kKnownDisplayTypes[] = { | |
61 kOobeDisplay, | |
62 kLoginDisplay, | |
63 kLockDisplay, | |
64 kUserAddingDisplay | |
65 }; | |
59 | 66 |
60 const char kStringsJSPath[] = "strings.js"; | 67 const char kStringsJSPath[] = "strings.js"; |
61 const char kLoginJSPath[] = "login.js"; | 68 const char kLoginJSPath[] = "login.js"; |
62 const char kOobeJSPath[] = "oobe.js"; | 69 const char kOobeJSPath[] = "oobe.js"; |
63 const char kKeyboardUtilsJSPath[] = "keyboard_utils.js"; | 70 const char kKeyboardUtilsJSPath[] = "keyboard_utils.js"; |
64 const char kDemoUserLoginJSPath[] = "demo_user_login.js"; | 71 const char kDemoUserLoginJSPath[] = "demo_user_login.js"; |
65 | 72 |
66 // Paths for deferred resource loading. | 73 // Paths for deferred resource loading. |
67 const char kEnrollmentHTMLPath[] = "enrollment.html"; | 74 const char kEnrollmentHTMLPath[] = "enrollment.html"; |
68 const char kEnrollmentCSSPath[] = "enrollment.css"; | 75 const char kEnrollmentCSSPath[] = "enrollment.css"; |
(...skipping 10 matching lines...) Expand all Loading... | |
79 new base::RefCountedBytes(); | 86 new base::RefCountedBytes(); |
80 callback.Run(empty_bytes.get()); | 87 callback.Run(empty_bytes.get()); |
81 return true; | 88 return true; |
82 } | 89 } |
83 | 90 |
84 return false; | 91 return false; |
85 } | 92 } |
86 | 93 |
87 // Creates a WebUIDataSource for chrome://oobe | 94 // Creates a WebUIDataSource for chrome://oobe |
88 content::WebUIDataSource* CreateOobeUIDataSource( | 95 content::WebUIDataSource* CreateOobeUIDataSource( |
89 const base::DictionaryValue& localized_strings) { | 96 const base::DictionaryValue& localized_strings, |
97 const std::string& display_type) { | |
90 content::WebUIDataSource* source = | 98 content::WebUIDataSource* source = |
91 content::WebUIDataSource::Create(chrome::kChromeUIOobeHost); | 99 content::WebUIDataSource::Create(chrome::kChromeUIOobeHost); |
92 source->SetUseJsonJSFormatV2(); | 100 source->SetUseJsonJSFormatV2(); |
93 source->AddLocalizedStrings(localized_strings); | 101 source->AddLocalizedStrings(localized_strings); |
94 source->SetJsonPath(kStringsJSPath); | 102 source->SetJsonPath(kStringsJSPath); |
95 | 103 |
96 if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) { | 104 if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) { |
97 source->SetDefaultResource(IDR_DEMO_USER_LOGIN_HTML); | 105 source->SetDefaultResource(IDR_DEMO_USER_LOGIN_HTML); |
98 source->AddResourcePath(kDemoUserLoginJSPath, | 106 source->AddResourcePath(kDemoUserLoginJSPath, IDR_DEMO_USER_LOGIN_JS); |
99 IDR_DEMO_USER_LOGIN_JS); | |
100 return source; | 107 return source; |
101 } | 108 } |
102 | 109 if (display_type == kOobeDisplay) { |
103 source->SetDefaultResource(IDR_OOBE_HTML); | 110 source->SetDefaultResource(IDR_OOBE_HTML); |
104 source->AddResourcePath(kOobeJSPath, | 111 source->AddResourcePath(kOobeJSPath, IDR_OOBE_JS); |
105 IDR_OOBE_JS); | 112 } else { |
106 source->AddResourcePath(kLoginPath, | 113 source->SetDefaultResource(IDR_LOGIN_HTML); |
107 IDR_LOGIN_HTML); | 114 source->AddResourcePath(kLoginJSPath, IDR_LOGIN_JS); |
108 source->AddResourcePath(kLoginJSPath, | 115 } |
109 IDR_LOGIN_JS); | 116 source->AddResourcePath(kKeyboardUtilsJSPath, IDR_KEYBOARD_UTILS_JS); |
110 source->AddResourcePath(kKeyboardUtilsJSPath, | |
111 IDR_KEYBOARD_UTILS_JS); | |
112 source->OverrideContentSecurityPolicyFrameSrc( | 117 source->OverrideContentSecurityPolicyFrameSrc( |
113 "frame-src chrome://terms/ " | 118 "frame-src chrome://terms/ " |
114 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/;"); | 119 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/;"); |
115 | 120 |
116 // Serve deferred resources. | 121 // Serve deferred resources. |
117 source->AddResourcePath(kEnrollmentHTMLPath, | 122 source->AddResourcePath(kEnrollmentHTMLPath, IDR_OOBE_ENROLLMENT_HTML); |
118 IDR_OOBE_ENROLLMENT_HTML); | 123 source->AddResourcePath(kEnrollmentCSSPath, IDR_OOBE_ENROLLMENT_CSS); |
119 source->AddResourcePath(kEnrollmentCSSPath, | 124 source->AddResourcePath(kEnrollmentJSPath, IDR_OOBE_ENROLLMENT_JS); |
120 IDR_OOBE_ENROLLMENT_CSS); | |
121 source->AddResourcePath(kEnrollmentJSPath, | |
122 IDR_OOBE_ENROLLMENT_JS); | |
123 | 125 |
124 return source; | 126 return source; |
125 } | 127 } |
126 | 128 |
129 std::string GetDisplayType(const GURL& url) { | |
130 std::string path = url.path().size() ? url.path().substr(1) : ""; | |
131 if (std::find(kKnownDisplayTypes, | |
132 kKnownDisplayTypes + arraysize(kKnownDisplayTypes), | |
133 path) == kKnownDisplayTypes + arraysize(kKnownDisplayTypes)) { | |
134 LOG(ERROR) << "Unknown display type '" << path << "'. Setting default."; | |
135 return kLoginDisplay; | |
136 } | |
137 return path; | |
138 } | |
139 | |
127 } // namespace | 140 } // namespace |
128 | 141 |
129 // static | 142 // static |
130 const char OobeUI::kScreenOobeNetwork[] = "connect"; | 143 const char OobeUI::kScreenOobeNetwork[] = "connect"; |
131 const char OobeUI::kScreenOobeEula[] = "eula"; | 144 const char OobeUI::kScreenOobeEula[] = "eula"; |
132 const char OobeUI::kScreenOobeUpdate[] = "update"; | 145 const char OobeUI::kScreenOobeUpdate[] = "update"; |
133 const char OobeUI::kScreenOobeEnrollment[] = "oauth-enrollment"; | 146 const char OobeUI::kScreenOobeEnrollment[] = "oauth-enrollment"; |
134 const char OobeUI::kScreenGaiaSignin[] = "gaia-signin"; | 147 const char OobeUI::kScreenGaiaSignin[] = "gaia-signin"; |
135 const char OobeUI::kScreenAccountPicker[] = "account-picker"; | 148 const char OobeUI::kScreenAccountPicker[] = "account-picker"; |
136 const char OobeUI::kScreenKioskAutolaunch[] = "autolaunch"; | 149 const char OobeUI::kScreenKioskAutolaunch[] = "autolaunch"; |
137 const char OobeUI::kScreenKioskEnable[] = "kiosk-enable"; | 150 const char OobeUI::kScreenKioskEnable[] = "kiosk-enable"; |
138 const char OobeUI::kScreenErrorMessage[] = "error-message"; | 151 const char OobeUI::kScreenErrorMessage[] = "error-message"; |
139 const char OobeUI::kScreenUserImagePicker[] = "user-image"; | 152 const char OobeUI::kScreenUserImagePicker[] = "user-image"; |
140 const char OobeUI::kScreenTpmError[] = "tpm-error-message"; | 153 const char OobeUI::kScreenTpmError[] = "tpm-error-message"; |
141 const char OobeUI::kScreenPasswordChanged[] = "password-changed"; | 154 const char OobeUI::kScreenPasswordChanged[] = "password-changed"; |
142 const char OobeUI::kScreenManagedUserCreationFlow[] | 155 const char OobeUI::kScreenManagedUserCreationFlow[] |
143 = "managed-user-creation"; | 156 = "managed-user-creation"; |
144 const char OobeUI::kScreenTermsOfService[] = "terms-of-service"; | 157 const char OobeUI::kScreenTermsOfService[] = "terms-of-service"; |
145 const char OobeUI::kScreenWrongHWID[] = "wrong-hwid"; | 158 const char OobeUI::kScreenWrongHWID[] = "wrong-hwid"; |
146 | 159 |
147 OobeUI::OobeUI(content::WebUI* web_ui) | 160 OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url) |
148 : WebUIController(web_ui), | 161 : WebUIController(web_ui), |
162 core_handler_(NULL), | |
149 update_screen_handler_(NULL), | 163 update_screen_handler_(NULL), |
150 network_screen_actor_(NULL), | 164 network_screen_actor_(NULL), |
151 eula_screen_actor_(NULL), | 165 eula_screen_actor_(NULL), |
152 reset_screen_actor_(NULL), | 166 reset_screen_actor_(NULL), |
153 autolaunch_screen_actor_(NULL), | 167 autolaunch_screen_actor_(NULL), |
154 kiosk_enable_screen_actor_(NULL), | 168 kiosk_enable_screen_actor_(NULL), |
155 wrong_hwid_screen_actor_(NULL), | 169 wrong_hwid_screen_actor_(NULL), |
156 locally_managed_user_creation_screen_actor_(NULL), | 170 locally_managed_user_creation_screen_actor_(NULL), |
157 error_screen_handler_(NULL), | 171 error_screen_handler_(NULL), |
158 signin_screen_handler_(NULL), | 172 signin_screen_handler_(NULL), |
159 terms_of_service_screen_actor_(NULL), | 173 terms_of_service_screen_actor_(NULL), |
160 user_image_screen_actor_(NULL), | 174 user_image_screen_actor_(NULL), |
161 kiosk_app_menu_handler_(NULL), | 175 kiosk_app_menu_handler_(NULL), |
162 current_screen_(SCREEN_UNKNOWN), | 176 current_screen_(SCREEN_UNKNOWN), |
163 ready_(false) { | 177 ready_(false) { |
178 display_type_ = GetDisplayType(url); | |
164 InitializeScreenMaps(); | 179 InitializeScreenMaps(); |
165 | 180 |
166 network_state_informer_ = new NetworkStateInformer(); | 181 network_state_informer_ = new NetworkStateInformer(); |
167 network_state_informer_->Init(); | 182 network_state_informer_->Init(); |
168 | 183 |
169 core_handler_ = new CoreOobeHandler(this); | 184 core_handler_ = new CoreOobeHandler(this); |
170 AddScreenHandler(core_handler_); | 185 AddScreenHandler(core_handler_); |
171 core_handler_->SetDelegate(this); | 186 core_handler_->SetDelegate(this); |
172 | 187 |
173 AddScreenHandler(new NetworkDropdownHandler); | 188 AddScreenHandler(new NetworkDropdownHandler); |
174 | 189 |
175 update_screen_handler_ = new UpdateScreenHandler(); | 190 update_screen_handler_ = new UpdateScreenHandler(); |
176 AddScreenHandler(update_screen_handler_); | 191 AddScreenHandler(update_screen_handler_); |
177 | 192 |
178 NetworkScreenHandler* network_screen_handler = new NetworkScreenHandler(); | 193 if (display_type_ == kOobeDisplay) { |
179 network_screen_actor_ = network_screen_handler; | 194 NetworkScreenHandler* network_screen_handler = new NetworkScreenHandler(); |
180 AddScreenHandler(network_screen_handler); | 195 network_screen_actor_ = network_screen_handler; |
196 AddScreenHandler(network_screen_handler); | |
197 } | |
181 | 198 |
182 EulaScreenHandler* eula_screen_handler = new EulaScreenHandler(); | 199 EulaScreenHandler* eula_screen_handler = new EulaScreenHandler(); |
183 eula_screen_actor_ = eula_screen_handler; | 200 eula_screen_actor_ = eula_screen_handler; |
184 AddScreenHandler(eula_screen_handler); | 201 AddScreenHandler(eula_screen_handler); |
185 | 202 |
186 ResetScreenHandler* reset_screen_handler = new ResetScreenHandler(); | 203 ResetScreenHandler* reset_screen_handler = new ResetScreenHandler(); |
187 reset_screen_actor_ = reset_screen_handler; | 204 reset_screen_actor_ = reset_screen_handler; |
188 AddScreenHandler(reset_screen_handler); | 205 AddScreenHandler(reset_screen_handler); |
189 | 206 |
190 KioskAutolaunchScreenHandler* autolaunch_screen_handler = | 207 KioskAutolaunchScreenHandler* autolaunch_screen_handler = |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
243 ThemeSource* theme = new ThemeSource(profile); | 260 ThemeSource* theme = new ThemeSource(profile); |
244 content::URLDataSource::Add(profile, theme); | 261 content::URLDataSource::Add(profile, theme); |
245 | 262 |
246 // Set up the chrome://terms/ data source, for EULA content. | 263 // Set up the chrome://terms/ data source, for EULA content. |
247 AboutUIHTMLSource* about_source = | 264 AboutUIHTMLSource* about_source = |
248 new AboutUIHTMLSource(chrome::kChromeUITermsHost, profile); | 265 new AboutUIHTMLSource(chrome::kChromeUITermsHost, profile); |
249 content::URLDataSource::Add(profile, about_source); | 266 content::URLDataSource::Add(profile, about_source); |
250 | 267 |
251 // Set up the chrome://oobe/ source. | 268 // Set up the chrome://oobe/ source. |
252 content::WebUIDataSource::Add(profile, | 269 content::WebUIDataSource::Add(profile, |
253 CreateOobeUIDataSource(localized_strings)); | 270 CreateOobeUIDataSource(localized_strings, |
271 display_type_)); | |
254 | 272 |
255 // Set up the chrome://userimage/ source. | 273 // Set up the chrome://userimage/ source. |
256 options::UserImageSource* user_image_source = | 274 options::UserImageSource* user_image_source = |
257 new options::UserImageSource(); | 275 new options::UserImageSource(); |
258 content::URLDataSource::Add(profile, user_image_source); | 276 content::URLDataSource::Add(profile, user_image_source); |
259 } | 277 } |
260 | 278 |
261 OobeUI::~OobeUI() { | 279 OobeUI::~OobeUI() { |
262 core_handler_->SetDelegate(NULL); | 280 core_handler_->SetDelegate(NULL); |
263 } | 281 } |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
426 void OobeUI::OnCurrentScreenChanged(const std::string& screen) { | 444 void OobeUI::OnCurrentScreenChanged(const std::string& screen) { |
427 if (screen_ids_.count(screen)) { | 445 if (screen_ids_.count(screen)) { |
428 current_screen_ = screen_ids_[screen]; | 446 current_screen_ = screen_ids_[screen]; |
429 } else { | 447 } else { |
430 NOTREACHED() << "Screen should be registered in InitializeScreenMaps()"; | 448 NOTREACHED() << "Screen should be registered in InitializeScreenMaps()"; |
431 current_screen_ = SCREEN_UNKNOWN; | 449 current_screen_ = SCREEN_UNKNOWN; |
432 } | 450 } |
433 } | 451 } |
434 | 452 |
435 } // namespace chromeos | 453 } // namespace chromeos |
OLD | NEW |