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

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

Issue 9546013: Move IsRunningOnChromeOS to base/chromeos (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: chromeos_version,sync,cleanup Created 8 years, 9 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
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame.cc ('k') | chrome/browser/ui/webui/flags_ui.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/register_page_ui.h" 5 #include "chrome/browser/ui/webui/chromeos/register_page_ui.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
11 #include "base/chromeos/chromeos_version.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
12 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
13 #include "base/string_piece.h" 14 #include "base/string_piece.h"
14 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
15 #include "base/values.h" 16 #include "base/values.h"
16 #include "chrome/browser/browser_process.h" 17 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/chromeos/cros/cros_library.h" 18 #include "chrome/browser/chromeos/cros/cros_library.h"
18 #include "chrome/browser/chromeos/cros/network_library.h" 19 #include "chrome/browser/chromeos/cros/network_library.h"
19 #include "chrome/browser/chromeos/customization_document.h" 20 #include "chrome/browser/chromeos/customization_document.h"
20 #include "chrome/browser/chromeos/login/wizard_controller.h" 21 #include "chrome/browser/chromeos/login/wizard_controller.h"
21 #include "chrome/browser/chromeos/system/runtime_environment.h"
22 #include "chrome/browser/chromeos/system/statistics_provider.h" 22 #include "chrome/browser/chromeos/system/statistics_provider.h"
23 #include "chrome/browser/chromeos/version_loader.h" 23 #include "chrome/browser/chromeos/version_loader.h"
24 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" 25 #include "chrome/browser/ui/webui/chrome_url_data_manager.h"
26 #include "chrome/common/url_constants.h" 26 #include "chrome/common/url_constants.h"
27 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
28 #include "content/public/browser/web_contents.h" 28 #include "content/public/browser/web_contents.h"
29 #include "content/public/browser/web_ui.h" 29 #include "content/public/browser/web_ui.h"
30 #include "content/public/browser/web_ui_message_handler.h" 30 #include "content/public/browser/web_ui_message_handler.h"
31 #include "googleurl/src/gurl.h" 31 #include "googleurl/src/gurl.h"
(...skipping 27 matching lines...) Expand all
59 const char kConnection3g[] = "3g"; 59 const char kConnection3g[] = "3g";
60 const char kUndefinedValue[] = "undefined"; 60 const char kUndefinedValue[] = "undefined";
61 61
62 // Utility function that returns string corresponding to currently active 62 // Utility function that returns string corresponding to currently active
63 // connection type |kConnectionEthernet|kConnectionWifi|kConnection3g|. 63 // connection type |kConnectionEthernet|kConnectionWifi|kConnection3g|.
64 // If multiple interfaces are connected, result is based on the 64 // If multiple interfaces are connected, result is based on the
65 // priority Ethernet-Wifi-Cellular. 65 // priority Ethernet-Wifi-Cellular.
66 // If there's no interface that's connected, interface that's in connecting 66 // If there's no interface that's connected, interface that's in connecting
67 // state is considered as the active one. 67 // state is considered as the active one.
68 // Otherwise |kUndefinedValue| is returned. 68 // Otherwise |kUndefinedValue| is returned.
69 #if defined(OS_CHROMEOS)
70 static std::string GetConnectionType() { 69 static std::string GetConnectionType() {
71 chromeos::NetworkLibrary* network_lib = 70 chromeos::NetworkLibrary* network_lib =
72 chromeos::CrosLibrary::Get()->GetNetworkLibrary(); 71 chromeos::CrosLibrary::Get()->GetNetworkLibrary();
73 if (network_lib->ethernet_connected()) 72 if (network_lib->ethernet_connected())
74 return kConnectionEthernet; 73 return kConnectionEthernet;
75 else if (network_lib->wifi_connected()) 74 else if (network_lib->wifi_connected())
76 return kConnectionWifi; 75 return kConnectionWifi;
77 else if (network_lib->cellular_connected()) 76 else if (network_lib->cellular_connected())
78 return kConnection3g; 77 return kConnection3g;
79 // Connection might have been lost and is in reconnecting state at this point. 78 // Connection might have been lost and is in reconnecting state at this point.
80 else if (network_lib->ethernet_connecting()) 79 else if (network_lib->ethernet_connecting())
81 return kConnectionEthernet; 80 return kConnectionEthernet;
82 else if (network_lib->wifi_connecting()) 81 else if (network_lib->wifi_connecting())
83 return kConnectionWifi; 82 return kConnectionWifi;
84 else if (network_lib->cellular_connecting()) 83 else if (network_lib->cellular_connecting())
85 return kConnection3g; 84 return kConnection3g;
86 else 85 else
87 return kUndefinedValue; 86 return kUndefinedValue;
88 } 87 }
89 #endif
90 88
91 } // namespace 89 } // namespace
92 90
93 class RegisterPageUIHTMLSource : public ChromeURLDataManager::DataSource { 91 class RegisterPageUIHTMLSource : public ChromeURLDataManager::DataSource {
94 public: 92 public:
95 RegisterPageUIHTMLSource(); 93 RegisterPageUIHTMLSource();
96 94
97 // Called when the network layer has requested a resource underneath 95 // Called when the network layer has requested a resource underneath
98 // the path we registered. 96 // the path we registered.
99 virtual void StartDataRequest(const std::string& path, 97 virtual void StartDataRequest(const std::string& path,
(...skipping 17 matching lines...) Expand all
117 virtual ~RegisterPageHandler(); 115 virtual ~RegisterPageHandler();
118 116
119 // WebUIMessageHandler implementation. 117 // WebUIMessageHandler implementation.
120 virtual void RegisterMessages() OVERRIDE; 118 virtual void RegisterMessages() OVERRIDE;
121 119
122 private: 120 private:
123 // Handlers for JS WebUI messages. 121 // Handlers for JS WebUI messages.
124 void HandleGetRegistrationUrl(const ListValue* args); 122 void HandleGetRegistrationUrl(const ListValue* args);
125 void HandleGetUserInfo(const ListValue* args); 123 void HandleGetUserInfo(const ListValue* args);
126 124
127 #if defined(OS_CHROMEOS)
128 // Callback from chromeos::VersionLoader giving the version. 125 // Callback from chromeos::VersionLoader giving the version.
129 void OnVersion(chromeos::VersionLoader::Handle handle, std::string version); 126 void OnVersion(chromeos::VersionLoader::Handle handle, std::string version);
130 #endif
131 127
132 // Skips registration logging |error_msg| with log type ERROR. 128 // Skips registration logging |error_msg| with log type ERROR.
133 void SkipRegistration(const std::string& error_msg); 129 void SkipRegistration(const std::string& error_msg);
134 130
135 // Sends message to host registration page with system/user info data. 131 // Sends message to host registration page with system/user info data.
136 void SendUserInfo(); 132 void SendUserInfo();
137 133
138 #if defined(OS_CHROMEOS)
139 // Handles asynchronously loading the version. 134 // Handles asynchronously loading the version.
140 chromeos::VersionLoader version_loader_; 135 chromeos::VersionLoader version_loader_;
141 #endif
142 136
143 // Used to request the version. 137 // Used to request the version.
144 CancelableRequestConsumer version_consumer_; 138 CancelableRequestConsumer version_consumer_;
145 139
146 std::string version_; 140 std::string version_;
147 141
148 DISALLOW_COPY_AND_ASSIGN(RegisterPageHandler); 142 DISALLOW_COPY_AND_ASSIGN(RegisterPageHandler);
149 }; 143 };
150 144
151 //////////////////////////////////////////////////////////////////////////////// 145 ////////////////////////////////////////////////////////////////////////////////
152 // 146 //
153 // RegisterPageUIHTMLSource 147 // RegisterPageUIHTMLSource
154 // 148 //
155 //////////////////////////////////////////////////////////////////////////////// 149 ////////////////////////////////////////////////////////////////////////////////
156 150
157 RegisterPageUIHTMLSource::RegisterPageUIHTMLSource() 151 RegisterPageUIHTMLSource::RegisterPageUIHTMLSource()
158 : DataSource(chrome::kChromeUIRegisterPageHost, MessageLoop::current()) { 152 : DataSource(chrome::kChromeUIRegisterPageHost, MessageLoop::current()) {
159 } 153 }
160 154
161 void RegisterPageUIHTMLSource::StartDataRequest(const std::string& path, 155 void RegisterPageUIHTMLSource::StartDataRequest(const std::string& path,
162 bool is_incognito, 156 bool is_incognito,
163 int request_id) { 157 int request_id) {
164 // Make sure that chrome://register is available only during 158 // Make sure that chrome://register is available only during
165 // OOBE wizard lifetime and when device has not been registered yet. 159 // OOBE wizard lifetime and when device has not been registered yet.
166 #if defined(OS_CHROMEOS)
167 if (!chromeos::WizardController::default_controller() || 160 if (!chromeos::WizardController::default_controller() ||
168 chromeos::WizardController::IsDeviceRegistered()) { 161 chromeos::WizardController::IsDeviceRegistered()) {
169 scoped_refptr<RefCountedBytes> empty_bytes(new RefCountedBytes); 162 scoped_refptr<RefCountedBytes> empty_bytes(new RefCountedBytes);
170 SendResponse(request_id, empty_bytes); 163 SendResponse(request_id, empty_bytes);
171 return; 164 return;
172 } 165 }
173 166
174 scoped_refptr<RefCountedMemory> html_bytes( 167 scoped_refptr<RefCountedMemory> html_bytes(
175 ResourceBundle::GetSharedInstance().LoadDataResourceBytes( 168 ResourceBundle::GetSharedInstance().LoadDataResourceBytes(
176 IDR_HOST_REGISTRATION_PAGE_HTML)); 169 IDR_HOST_REGISTRATION_PAGE_HTML));
177 170
178 SendResponse(request_id, html_bytes); 171 SendResponse(request_id, html_bytes);
179 #else
180 scoped_refptr<RefCountedBytes> empty_bytes(new RefCountedBytes);
181 SendResponse(request_id, empty_bytes);
182 #endif
183 } 172 }
184 173
185 //////////////////////////////////////////////////////////////////////////////// 174 ////////////////////////////////////////////////////////////////////////////////
186 // 175 //
187 // RegisterPageHandler 176 // RegisterPageHandler
188 // 177 //
189 //////////////////////////////////////////////////////////////////////////////// 178 ////////////////////////////////////////////////////////////////////////////////
190 RegisterPageHandler::RegisterPageHandler() { 179 RegisterPageHandler::RegisterPageHandler() {
191 } 180 }
192 181
193 RegisterPageHandler::~RegisterPageHandler() { 182 RegisterPageHandler::~RegisterPageHandler() {
194 } 183 }
195 184
196 void RegisterPageHandler::RegisterMessages() { 185 void RegisterPageHandler::RegisterMessages() {
197 #if defined(OS_CHROMEOS)
198 web_ui()->RegisterMessageCallback(kJsCallbackGetRegistrationUrl, 186 web_ui()->RegisterMessageCallback(kJsCallbackGetRegistrationUrl,
199 base::Bind(&RegisterPageHandler::HandleGetRegistrationUrl, 187 base::Bind(&RegisterPageHandler::HandleGetRegistrationUrl,
200 base::Unretained(this))); 188 base::Unretained(this)));
201 web_ui()->RegisterMessageCallback(kJsCallbackUserInfo, 189 web_ui()->RegisterMessageCallback(kJsCallbackUserInfo,
202 base::Bind(&RegisterPageHandler::HandleGetUserInfo, 190 base::Bind(&RegisterPageHandler::HandleGetUserInfo,
203 base::Unretained(this))); 191 base::Unretained(this)));
204 #endif
205 } 192 }
206 193
207 void RegisterPageHandler::HandleGetRegistrationUrl(const ListValue* args) { 194 void RegisterPageHandler::HandleGetRegistrationUrl(const ListValue* args) {
208 #if defined(OS_CHROMEOS)
209 chromeos::StartupCustomizationDocument* customization = 195 chromeos::StartupCustomizationDocument* customization =
210 chromeos::StartupCustomizationDocument::GetInstance(); 196 chromeos::StartupCustomizationDocument::GetInstance();
211 if (chromeos::WizardController::default_controller() && 197 if (chromeos::WizardController::default_controller() &&
212 customization->IsReady()) { 198 customization->IsReady()) {
213 const std::string& url = customization->registration_url(); 199 const std::string& url = customization->registration_url();
214 VLOG(1) << "Loading registration form with URL: " << url; 200 VLOG(1) << "Loading registration form with URL: " << url;
215 GURL register_url(url); 201 GURL register_url(url);
216 if (!register_url.is_valid()) { 202 if (!register_url.is_valid()) {
217 SkipRegistration("Registration URL defined in manifest is invalid."); 203 SkipRegistration("Registration URL defined in manifest is invalid.");
218 return; 204 return;
219 } 205 }
220 StringValue url_value(url); 206 StringValue url_value(url);
221 web_ui()->CallJavascriptFunction(kJsApiSetRegistrationUrl, url_value); 207 web_ui()->CallJavascriptFunction(kJsApiSetRegistrationUrl, url_value);
222 } else { 208 } else {
223 SkipRegistration("Startup manifest not defined."); 209 SkipRegistration("Startup manifest not defined.");
224 } 210 }
225 #endif
226 } 211 }
227 212
228 void RegisterPageHandler::HandleGetUserInfo(const ListValue* args) { 213 void RegisterPageHandler::HandleGetUserInfo(const ListValue* args) {
229 #if defined(OS_CHROMEOS) 214 if (base::chromeos::IsRunningOnChromeOS()) {
230 if (chromeos::system::runtime_environment::IsRunningOnChromeOS()) {
231 version_loader_.GetVersion( 215 version_loader_.GetVersion(
232 &version_consumer_, 216 &version_consumer_,
233 base::Bind(&RegisterPageHandler::OnVersion, base::Unretained(this)), 217 base::Bind(&RegisterPageHandler::OnVersion, base::Unretained(this)),
234 chromeos::VersionLoader::VERSION_FULL); 218 chromeos::VersionLoader::VERSION_FULL);
235 } else { 219 } else {
236 SkipRegistration("Not running on ChromeOS."); 220 SkipRegistration("Not running on ChromeOS.");
237 } 221 }
238 #endif
239 } 222 }
240 223
241 #if defined(OS_CHROMEOS)
242 void RegisterPageHandler::OnVersion(chromeos::VersionLoader::Handle handle, 224 void RegisterPageHandler::OnVersion(chromeos::VersionLoader::Handle handle,
243 std::string version) { 225 std::string version) {
244 version_ = version; 226 version_ = version;
245 SendUserInfo(); 227 SendUserInfo();
246 } 228 }
247 #endif
248 229
249 void RegisterPageHandler::SkipRegistration(const std::string& error_msg) { 230 void RegisterPageHandler::SkipRegistration(const std::string& error_msg) {
250 #if defined(OS_CHROMEOS)
251 LOG(ERROR) << error_msg; 231 LOG(ERROR) << error_msg;
252 if (chromeos::WizardController::default_controller()) 232 if (chromeos::WizardController::default_controller())
253 chromeos::WizardController::default_controller()->SkipRegistration(); 233 chromeos::WizardController::default_controller()->SkipRegistration();
254 else 234 else
255 web_ui()->CallJavascriptFunction(kJsApiSkipRegistration); 235 web_ui()->CallJavascriptFunction(kJsApiSkipRegistration);
256 #endif
257 } 236 }
258 237
259 void RegisterPageHandler::SendUserInfo() { 238 void RegisterPageHandler::SendUserInfo() {
260 #if defined(OS_CHROMEOS)
261 DictionaryValue value; 239 DictionaryValue value;
262 240
263 chromeos::system::StatisticsProvider * provider = 241 chromeos::system::StatisticsProvider * provider =
264 chromeos::system::StatisticsProvider::GetInstance(); 242 chromeos::system::StatisticsProvider::GetInstance();
265 243
266 // Required info. 244 // Required info.
267 std::string system_hwqual; 245 std::string system_hwqual;
268 std::string serial_number; 246 std::string serial_number;
269 if (!provider->GetMachineStatistic(kMachineInfoSystemHwqual, 247 if (!provider->GetMachineStatistic(kMachineInfoSystemHwqual,
270 &system_hwqual) || 248 &system_hwqual) ||
271 !provider->GetMachineStatistic(kMachineInfoSerialNumber, 249 !provider->GetMachineStatistic(kMachineInfoSerialNumber,
272 &serial_number)) { 250 &serial_number)) {
273 SkipRegistration("Failed to get required machine info."); 251 SkipRegistration("Failed to get required machine info.");
274 return; 252 return;
275 } 253 }
276 value.SetString("system_hwqual", system_hwqual); 254 value.SetString("system_hwqual", system_hwqual);
277 value.SetString("system_serial", serial_number); 255 value.SetString("system_serial", serial_number);
278 value.SetString("os_language", g_browser_process->GetApplicationLocale()); 256 value.SetString("os_language", g_browser_process->GetApplicationLocale());
279 value.SetString("os_name", kOSName); 257 value.SetString("os_name", kOSName);
280 value.SetString("os_version", version_); 258 value.SetString("os_version", version_);
281 value.SetString("os_connection", GetConnectionType()); 259 value.SetString("os_connection", GetConnectionType());
282 value.SetString("user_email", ""); 260 value.SetString("user_email", "");
283 261
284 // Optional info. 262 // Optional info.
285 value.SetString("user_first_name", ""); 263 value.SetString("user_first_name", "");
286 value.SetString("user_last_name", ""); 264 value.SetString("user_last_name", "");
287 265
288 web_ui()->CallJavascriptFunction(kJsApiSetUserInfo, value); 266 web_ui()->CallJavascriptFunction(kJsApiSetUserInfo, value);
289 #endif
290 } 267 }
291 268
292 //////////////////////////////////////////////////////////////////////////////// 269 ////////////////////////////////////////////////////////////////////////////////
293 // 270 //
294 // RegisterPageUI 271 // RegisterPageUI
295 // 272 //
296 //////////////////////////////////////////////////////////////////////////////// 273 ////////////////////////////////////////////////////////////////////////////////
297 274
298 RegisterPageUI::RegisterPageUI(content::WebUI* web_ui) 275 RegisterPageUI::RegisterPageUI(content::WebUI* web_ui)
299 : WebUIController(web_ui) { 276 : WebUIController(web_ui) {
300 RegisterPageHandler* handler = new RegisterPageHandler(); 277 RegisterPageHandler* handler = new RegisterPageHandler();
301 web_ui->AddMessageHandler(handler); 278 web_ui->AddMessageHandler(handler);
302 RegisterPageUIHTMLSource* html_source = new RegisterPageUIHTMLSource(); 279 RegisterPageUIHTMLSource* html_source = new RegisterPageUIHTMLSource();
303 280
304 // Set up the chrome://register/ source. 281 // Set up the chrome://register/ source.
305 Profile* profile = Profile::FromWebUI(web_ui); 282 Profile* profile = Profile::FromWebUI(web_ui);
306 profile->GetChromeURLDataManager()->AddDataSource(html_source); 283 profile->GetChromeURLDataManager()->AddDataSource(html_source);
307 } 284 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame.cc ('k') | chrome/browser/ui/webui/flags_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698