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

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: Nit fixes. 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 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
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
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
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
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