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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/oobe_ui.cc

Issue 21004005: Made small refactoring of OobeUI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changed location of .oobe_completed. Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 // List of known types of OobeUI. Type added as path in chrome://oobe url, for
58 const char kLoginPath[] = "login#login"; 56 // example chrome://oobe/user-adding.
57 const char kOobeDisplay[] = "oobe";
58 const char kLoginDisplay[] = "login";
59 const char kLockDisplay[] = "lock";
60 const char kUserAddingDisplay[] = "user-adding";
61
62 const char* kKnownDisplayTypes[] = {
63 kOobeDisplay,
64 kLoginDisplay,
65 kLockDisplay,
66 kUserAddingDisplay
67 };
59 68
60 const char kStringsJSPath[] = "strings.js"; 69 const char kStringsJSPath[] = "strings.js";
61 const char kLoginJSPath[] = "login.js"; 70 const char kLoginJSPath[] = "login.js";
62 const char kOobeJSPath[] = "oobe.js"; 71 const char kOobeJSPath[] = "oobe.js";
63 const char kKeyboardUtilsJSPath[] = "keyboard_utils.js"; 72 const char kKeyboardUtilsJSPath[] = "keyboard_utils.js";
64 const char kDemoUserLoginJSPath[] = "demo_user_login.js"; 73 const char kDemoUserLoginJSPath[] = "demo_user_login.js";
65 74
66 // Paths for deferred resource loading. 75 // Paths for deferred resource loading.
67 const char kEnrollmentHTMLPath[] = "enrollment.html"; 76 const char kEnrollmentHTMLPath[] = "enrollment.html";
68 const char kEnrollmentCSSPath[] = "enrollment.css"; 77 const char kEnrollmentCSSPath[] = "enrollment.css";
(...skipping 10 matching lines...) Expand all
79 new base::RefCountedBytes(); 88 new base::RefCountedBytes();
80 callback.Run(empty_bytes.get()); 89 callback.Run(empty_bytes.get());
81 return true; 90 return true;
82 } 91 }
83 92
84 return false; 93 return false;
85 } 94 }
86 95
87 // Creates a WebUIDataSource for chrome://oobe 96 // Creates a WebUIDataSource for chrome://oobe
88 content::WebUIDataSource* CreateOobeUIDataSource( 97 content::WebUIDataSource* CreateOobeUIDataSource(
89 const base::DictionaryValue& localized_strings) { 98 const base::DictionaryValue& localized_strings,
99 const std::string& display_type) {
90 content::WebUIDataSource* source = 100 content::WebUIDataSource* source =
91 content::WebUIDataSource::Create(chrome::kChromeUIOobeHost); 101 content::WebUIDataSource::Create(chrome::kChromeUIOobeHost);
92 source->SetUseJsonJSFormatV2(); 102 source->SetUseJsonJSFormatV2();
93 source->AddLocalizedStrings(localized_strings); 103 source->AddLocalizedStrings(localized_strings);
94 source->SetJsonPath(kStringsJSPath); 104 source->SetJsonPath(kStringsJSPath);
95 105
96 if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) { 106 if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) {
97 source->SetDefaultResource(IDR_DEMO_USER_LOGIN_HTML); 107 source->SetDefaultResource(IDR_DEMO_USER_LOGIN_HTML);
98 source->AddResourcePath(kDemoUserLoginJSPath, 108 source->AddResourcePath(kDemoUserLoginJSPath, IDR_DEMO_USER_LOGIN_JS);
99 IDR_DEMO_USER_LOGIN_JS);
100 return source; 109 return source;
101 } 110 }
102 111 if (display_type == kOobeDisplay) {
103 source->SetDefaultResource(IDR_OOBE_HTML); 112 source->SetDefaultResource(IDR_OOBE_HTML);
104 source->AddResourcePath(kOobeJSPath, 113 source->AddResourcePath(kOobeJSPath, IDR_OOBE_JS);
105 IDR_OOBE_JS); 114 } else {
106 source->AddResourcePath(kLoginPath, 115 source->SetDefaultResource(IDR_LOGIN_HTML);
107 IDR_LOGIN_HTML); 116 source->AddResourcePath(kLoginJSPath, IDR_LOGIN_JS);
108 source->AddResourcePath(kLoginJSPath, 117 }
109 IDR_LOGIN_JS); 118 source->AddResourcePath(kKeyboardUtilsJSPath, IDR_KEYBOARD_UTILS_JS);
110 source->AddResourcePath(kKeyboardUtilsJSPath,
111 IDR_KEYBOARD_UTILS_JS);
112 source->OverrideContentSecurityPolicyFrameSrc( 119 source->OverrideContentSecurityPolicyFrameSrc(
113 "frame-src chrome://terms/ " 120 "frame-src chrome://terms/ "
114 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/;"); 121 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/;");
115 122
116 // Serve deferred resources. 123 // Serve deferred resources.
117 source->AddResourcePath(kEnrollmentHTMLPath, 124 source->AddResourcePath(kEnrollmentHTMLPath, IDR_OOBE_ENROLLMENT_HTML);
118 IDR_OOBE_ENROLLMENT_HTML); 125 source->AddResourcePath(kEnrollmentCSSPath, IDR_OOBE_ENROLLMENT_CSS);
119 source->AddResourcePath(kEnrollmentCSSPath, 126 source->AddResourcePath(kEnrollmentJSPath, IDR_OOBE_ENROLLMENT_JS);
120 IDR_OOBE_ENROLLMENT_CSS);
121 source->AddResourcePath(kEnrollmentJSPath,
122 IDR_OOBE_ENROLLMENT_JS);
123 127
124 return source; 128 return source;
125 } 129 }
126 130
131 std::string GetDisplayType(const GURL& url) {
132 std::string path = url.path().size() ? url.path().substr(1) : "";
133 if (std::find(kKnownDisplayTypes,
134 kKnownDisplayTypes + arraysize(kKnownDisplayTypes),
135 path) == kKnownDisplayTypes + arraysize(kKnownDisplayTypes)) {
136 LOG(ERROR) << "Unknown display type '" << path << "'. Setting default.";
137 return kLoginDisplay;
138 }
139 return path;
140 }
141
127 } // namespace 142 } // namespace
128 143
129 // static 144 // static
130 const char OobeUI::kScreenOobeNetwork[] = "connect"; 145 const char OobeUI::kScreenOobeNetwork[] = "connect";
131 const char OobeUI::kScreenOobeEula[] = "eula"; 146 const char OobeUI::kScreenOobeEula[] = "eula";
132 const char OobeUI::kScreenOobeUpdate[] = "update"; 147 const char OobeUI::kScreenOobeUpdate[] = "update";
133 const char OobeUI::kScreenOobeEnrollment[] = "oauth-enrollment"; 148 const char OobeUI::kScreenOobeEnrollment[] = "oauth-enrollment";
134 const char OobeUI::kScreenGaiaSignin[] = "gaia-signin"; 149 const char OobeUI::kScreenGaiaSignin[] = "gaia-signin";
135 const char OobeUI::kScreenAccountPicker[] = "account-picker"; 150 const char OobeUI::kScreenAccountPicker[] = "account-picker";
136 const char OobeUI::kScreenKioskAutolaunch[] = "autolaunch"; 151 const char OobeUI::kScreenKioskAutolaunch[] = "autolaunch";
137 const char OobeUI::kScreenKioskEnable[] = "kiosk-enable"; 152 const char OobeUI::kScreenKioskEnable[] = "kiosk-enable";
138 const char OobeUI::kScreenErrorMessage[] = "error-message"; 153 const char OobeUI::kScreenErrorMessage[] = "error-message";
139 const char OobeUI::kScreenUserImagePicker[] = "user-image"; 154 const char OobeUI::kScreenUserImagePicker[] = "user-image";
140 const char OobeUI::kScreenTpmError[] = "tpm-error-message"; 155 const char OobeUI::kScreenTpmError[] = "tpm-error-message";
141 const char OobeUI::kScreenPasswordChanged[] = "password-changed"; 156 const char OobeUI::kScreenPasswordChanged[] = "password-changed";
142 const char OobeUI::kScreenManagedUserCreationFlow[] 157 const char OobeUI::kScreenManagedUserCreationFlow[]
143 = "managed-user-creation"; 158 = "managed-user-creation";
144 const char OobeUI::kScreenTermsOfService[] = "terms-of-service"; 159 const char OobeUI::kScreenTermsOfService[] = "terms-of-service";
145 const char OobeUI::kScreenWrongHWID[] = "wrong-hwid"; 160 const char OobeUI::kScreenWrongHWID[] = "wrong-hwid";
146 161
147 OobeUI::OobeUI(content::WebUI* web_ui) 162 OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
148 : WebUIController(web_ui), 163 : WebUIController(web_ui),
149 core_handler_(NULL), 164 core_handler_(NULL),
150 network_dropdown_handler_(NULL), 165 network_dropdown_handler_(NULL),
151 update_screen_handler_(NULL), 166 update_screen_handler_(NULL),
152 network_screen_actor_(NULL), 167 network_screen_actor_(NULL),
153 eula_screen_actor_(NULL), 168 eula_screen_actor_(NULL),
154 reset_screen_actor_(NULL), 169 reset_screen_actor_(NULL),
155 autolaunch_screen_actor_(NULL), 170 autolaunch_screen_actor_(NULL),
156 kiosk_enable_screen_actor_(NULL), 171 kiosk_enable_screen_actor_(NULL),
157 wrong_hwid_screen_actor_(NULL), 172 wrong_hwid_screen_actor_(NULL),
158 locally_managed_user_creation_screen_actor_(NULL), 173 locally_managed_user_creation_screen_actor_(NULL),
159 error_screen_handler_(NULL), 174 error_screen_handler_(NULL),
160 signin_screen_handler_(NULL), 175 signin_screen_handler_(NULL),
161 terms_of_service_screen_actor_(NULL), 176 terms_of_service_screen_actor_(NULL),
162 user_image_screen_actor_(NULL), 177 user_image_screen_actor_(NULL),
163 kiosk_app_menu_handler_(NULL), 178 kiosk_app_menu_handler_(NULL),
164 current_screen_(SCREEN_UNKNOWN), 179 current_screen_(SCREEN_UNKNOWN),
165 ready_(false) { 180 ready_(false) {
181 display_type_ = GetDisplayType(url);
166 InitializeScreenMaps(); 182 InitializeScreenMaps();
167 183
168 network_state_informer_ = new NetworkStateInformer(); 184 network_state_informer_ = new NetworkStateInformer();
169 network_state_informer_->Init(); 185 network_state_informer_->Init();
170 186
171 core_handler_ = new CoreOobeHandler(this); 187 core_handler_ = new CoreOobeHandler(this);
172 AddScreenHandler(core_handler_); 188 AddScreenHandler(core_handler_);
173 core_handler_->SetDelegate(this); 189 core_handler_->SetDelegate(this);
174 190
175 network_dropdown_handler_ = new NetworkDropdownHandler(); 191 network_dropdown_handler_ = new NetworkDropdownHandler();
176 AddScreenHandler(network_dropdown_handler_); 192 AddScreenHandler(network_dropdown_handler_);
177 193
178 update_screen_handler_ = new UpdateScreenHandler(); 194 update_screen_handler_ = new UpdateScreenHandler();
179 AddScreenHandler(update_screen_handler_); 195 AddScreenHandler(update_screen_handler_);
180 network_dropdown_handler_->AddObserver(update_screen_handler_); 196 network_dropdown_handler_->AddObserver(update_screen_handler_);
181 197
182 NetworkScreenHandler* network_screen_handler = 198 if (display_type_ == kOobeDisplay) {
183 new NetworkScreenHandler(core_handler_); 199 NetworkScreenHandler* network_screen_handler =
184 network_screen_actor_ = network_screen_handler; 200 new NetworkScreenHandler(core_handler_);
185 AddScreenHandler(network_screen_handler); 201 network_screen_actor_ = network_screen_handler;
202 AddScreenHandler(network_screen_handler);
203 }
186 204
187 EulaScreenHandler* eula_screen_handler = new EulaScreenHandler(core_handler_); 205 EulaScreenHandler* eula_screen_handler = new EulaScreenHandler(core_handler_);
188 eula_screen_actor_ = eula_screen_handler; 206 eula_screen_actor_ = eula_screen_handler;
189 AddScreenHandler(eula_screen_handler); 207 AddScreenHandler(eula_screen_handler);
190 208
191 ResetScreenHandler* reset_screen_handler = new ResetScreenHandler(); 209 ResetScreenHandler* reset_screen_handler = new ResetScreenHandler();
192 reset_screen_actor_ = reset_screen_handler; 210 reset_screen_actor_ = reset_screen_handler;
193 AddScreenHandler(reset_screen_handler); 211 AddScreenHandler(reset_screen_handler);
194 212
195 KioskAutolaunchScreenHandler* autolaunch_screen_handler = 213 KioskAutolaunchScreenHandler* autolaunch_screen_handler =
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 ThemeSource* theme = new ThemeSource(profile); 267 ThemeSource* theme = new ThemeSource(profile);
250 content::URLDataSource::Add(profile, theme); 268 content::URLDataSource::Add(profile, theme);
251 269
252 // Set up the chrome://terms/ data source, for EULA content. 270 // Set up the chrome://terms/ data source, for EULA content.
253 AboutUIHTMLSource* about_source = 271 AboutUIHTMLSource* about_source =
254 new AboutUIHTMLSource(chrome::kChromeUITermsHost, profile); 272 new AboutUIHTMLSource(chrome::kChromeUITermsHost, profile);
255 content::URLDataSource::Add(profile, about_source); 273 content::URLDataSource::Add(profile, about_source);
256 274
257 // Set up the chrome://oobe/ source. 275 // Set up the chrome://oobe/ source.
258 content::WebUIDataSource::Add(profile, 276 content::WebUIDataSource::Add(profile,
259 CreateOobeUIDataSource(localized_strings)); 277 CreateOobeUIDataSource(localized_strings,
278 display_type_));
260 279
261 // Set up the chrome://userimage/ source. 280 // Set up the chrome://userimage/ source.
262 options::UserImageSource* user_image_source = 281 options::UserImageSource* user_image_source =
263 new options::UserImageSource(); 282 new options::UserImageSource();
264 content::URLDataSource::Add(profile, user_image_source); 283 content::URLDataSource::Add(profile, user_image_source);
265 } 284 }
266 285
267 OobeUI::~OobeUI() { 286 OobeUI::~OobeUI() {
268 core_handler_->SetDelegate(NULL); 287 core_handler_->SetDelegate(NULL);
269 network_dropdown_handler_->RemoveObserver(update_screen_handler_); 288 network_dropdown_handler_->RemoveObserver(update_screen_handler_);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 void OobeUI::OnCurrentScreenChanged(const std::string& screen) { 452 void OobeUI::OnCurrentScreenChanged(const std::string& screen) {
434 if (screen_ids_.count(screen)) { 453 if (screen_ids_.count(screen)) {
435 current_screen_ = screen_ids_[screen]; 454 current_screen_ = screen_ids_[screen];
436 } else { 455 } else {
437 NOTREACHED() << "Screen should be registered in InitializeScreenMaps()"; 456 NOTREACHED() << "Screen should be registered in InitializeScreenMaps()";
438 current_screen_ = SCREEN_UNKNOWN; 457 current_screen_ = SCREEN_UNKNOWN;
439 } 458 }
440 } 459 }
441 460
442 } // namespace chromeos 461 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/oobe_ui.h ('k') | chrome/test/data/chromeos/oobe_webui_browsertest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698