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/mobile_setup_ui.h" | 5 #include "chrome/browser/ui/webui/chromeos/mobile_setup_ui.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 | 233 |
234 if (!network || (!network->SupportsActivation() && !network->activated())) { | 234 if (!network || (!network->SupportsActivation() && !network->activated())) { |
235 LOG(WARNING) << "Can't find device to activate for service path " << path; | 235 LOG(WARNING) << "Can't find device to activate for service path " << path; |
236 scoped_refptr<base::RefCountedBytes> html_bytes(new base::RefCountedBytes); | 236 scoped_refptr<base::RefCountedBytes> html_bytes(new base::RefCountedBytes); |
237 callback.Run(html_bytes); | 237 callback.Run(html_bytes); |
238 return; | 238 return; |
239 } | 239 } |
240 | 240 |
241 LOG(WARNING) << "Starting mobile setup for " << path; | 241 LOG(WARNING) << "Starting mobile setup for " << path; |
242 DictionaryValue strings; | 242 DictionaryValue strings; |
243 // The webui differs based on whether the network is activated or not. If the | |
244 // network is activated, the webui goes straight to portal. Otherwise the | |
245 // webui is used for activation flow. | |
246 if (network->activated()) { | |
247 strings.SetString("portal_unreachable_header", | |
248 l10n_util::GetStringUTF16(IDS_MOBILE_NO_CONNECTION_HEADER)); | |
249 } else { | |
250 strings.SetString("connecting_header", | |
251 l10n_util::GetStringFUTF16(IDS_MOBILE_CONNECTING_HEADER, | |
252 network ? UTF8ToUTF16(network->name()) : string16())); | |
253 strings.SetString("error_header", | |
254 l10n_util::GetStringUTF16(IDS_MOBILE_ERROR_HEADER)); | |
255 strings.SetString("activating_header", | |
256 l10n_util::GetStringUTF16(IDS_MOBILE_ACTIVATING_HEADER)); | |
257 strings.SetString("completed_header", | |
258 l10n_util::GetStringUTF16(IDS_MOBILE_COMPLETED_HEADER)); | |
259 strings.SetString("please_wait", | |
260 l10n_util::GetStringUTF16(IDS_MOBILE_PLEASE_WAIT)); | |
261 strings.SetString("completed_text", | |
262 l10n_util::GetStringUTF16(IDS_MOBILE_COMPLETED_TEXT)); | |
263 } | |
264 | 243 |
265 // Strings shared between both webui versions. | 244 strings.SetString("connecting_header", |
| 245 l10n_util::GetStringFUTF16(IDS_MOBILE_CONNECTING_HEADER, |
| 246 network ? UTF8ToUTF16(network->name()) : string16())); |
| 247 strings.SetString("error_header", |
| 248 l10n_util::GetStringUTF16(IDS_MOBILE_ERROR_HEADER)); |
| 249 strings.SetString("activating_header", |
| 250 l10n_util::GetStringUTF16(IDS_MOBILE_ACTIVATING_HEADER)); |
| 251 strings.SetString("completed_header", |
| 252 l10n_util::GetStringUTF16(IDS_MOBILE_COMPLETED_HEADER)); |
| 253 strings.SetString("please_wait", |
| 254 l10n_util::GetStringUTF16(IDS_MOBILE_PLEASE_WAIT)); |
| 255 strings.SetString("completed_text", |
| 256 l10n_util::GetStringUTF16(IDS_MOBILE_COMPLETED_TEXT)); |
| 257 strings.SetString("portal_unreachable_header", |
| 258 l10n_util::GetStringUTF16(IDS_MOBILE_NO_CONNECTION_HEADER)); |
266 strings.SetString("title", l10n_util::GetStringUTF16(IDS_MOBILE_SETUP_TITLE)); | 259 strings.SetString("title", l10n_util::GetStringUTF16(IDS_MOBILE_SETUP_TITLE)); |
267 strings.SetString("close_button", | 260 strings.SetString("close_button", |
268 l10n_util::GetStringUTF16(IDS_CLOSE)); | 261 l10n_util::GetStringUTF16(IDS_CLOSE)); |
269 strings.SetString("cancel_button", | 262 strings.SetString("cancel_button", |
270 l10n_util::GetStringUTF16(IDS_CANCEL)); | 263 l10n_util::GetStringUTF16(IDS_CANCEL)); |
271 strings.SetString("ok_button", | 264 strings.SetString("ok_button", |
272 l10n_util::GetStringUTF16(IDS_OK)); | 265 l10n_util::GetStringUTF16(IDS_OK)); |
273 webui::SetFontAndTextDirection(&strings); | 266 webui::SetFontAndTextDirection(&strings); |
274 | 267 |
| 268 // The webui differs based on whether the network is activated or not. If the |
| 269 // network is activated, the webui goes straight to portal. Otherwise the |
| 270 // webui is used for activation flow. |
275 int html_page = network->activated() ? IDR_MOBILE_SETUP_PORTAL_PAGE_HTML : | 271 int html_page = network->activated() ? IDR_MOBILE_SETUP_PORTAL_PAGE_HTML : |
276 IDR_MOBILE_SETUP_PAGE_HTML; | 272 IDR_MOBILE_SETUP_PAGE_HTML; |
277 static const base::StringPiece html( | 273 static const base::StringPiece html( |
278 ResourceBundle::GetSharedInstance().GetRawDataResource(html_page)); | 274 ResourceBundle::GetSharedInstance().GetRawDataResource(html_page)); |
279 | 275 |
280 std::string full_html = webui::GetI18nTemplateHtml(html, &strings); | 276 std::string full_html = webui::GetI18nTemplateHtml(html, &strings); |
281 | 277 |
282 callback.Run(base::RefCountedString::TakeString(&full_html)); | 278 callback.Run(base::RefCountedString::TakeString(&full_html)); |
283 } | 279 } |
284 | 280 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 CellularNetwork* network = | 394 CellularNetwork* network = |
399 network_lib->FindCellularNetworkByPath(path.substr(1)); | 395 network_lib->FindCellularNetworkByPath(path.substr(1)); |
400 if (!network) { | 396 if (!network) { |
401 web_ui()->GetWebContents()->Close(); | 397 web_ui()->GetWebContents()->Close(); |
402 return; | 398 return; |
403 } | 399 } |
404 | 400 |
405 // If this is the initial call, update the network status and start observing | 401 // If this is the initial call, update the network status and start observing |
406 // network changes, but only for LTE networks. The other networks should | 402 // network changes, but only for LTE networks. The other networks should |
407 // ignore network status. | 403 // ignore network status. |
408 if (type_ == TYPE_UNDETERMINED && | 404 if (type_ == TYPE_UNDETERMINED) { |
409 (network->network_technology() == chromeos::NETWORK_TECHNOLOGY_LTE || | 405 if (network->network_technology() == chromeos::NETWORK_TECHNOLOGY_LTE || |
410 network->network_technology() == | 406 network->network_technology() == |
411 chromeos::NETWORK_TECHNOLOGY_LTE_ADVANCED)) { | 407 chromeos::NETWORK_TECHNOLOGY_LTE_ADVANCED) { |
412 type_ = TYPE_PORTAL_LTE; | 408 type_ = TYPE_PORTAL_LTE; |
413 network_lib->AddNetworkManagerObserver(this); | 409 network_lib->AddNetworkManagerObserver(this); |
414 // Update the network status and notify the webui. This is the initial | 410 // Update the network status and notify the webui. This is the initial |
415 // network state so the webui should be notified no matter what. | 411 // network state so the webui should be notified no matter what. |
416 UpdatePortalReachability(network_lib, network, true /*force notification*/); | 412 UpdatePortalReachability(network_lib, |
417 } else { | 413 network, |
418 type_ = TYPE_PORTAL; | 414 true /*force notification*/); |
| 415 } else { |
| 416 type_ = TYPE_PORTAL; |
| 417 // For non-LTE networks network state is ignored, so report the portal is |
| 418 // reachable, so it gets shown. |
| 419 web_ui()->CallJavascriptFunction(kJsConnectivityChangedCallback, |
| 420 base::FundamentalValue(true)); |
| 421 } |
419 } | 422 } |
420 | 423 |
421 DictionaryValue device_info; | 424 DictionaryValue device_info; |
422 GetDeviceInfo(network, &device_info); | 425 GetDeviceInfo(network, &device_info); |
423 web_ui()->CallJavascriptFunction(kJsGetDeviceInfoCallback, device_info); | 426 web_ui()->CallJavascriptFunction(kJsGetDeviceInfoCallback, device_info); |
424 } | 427 } |
425 | 428 |
426 void MobileSetupHandler::OnNetworkManagerChanged(NetworkLibrary* network_lib) { | 429 void MobileSetupHandler::OnNetworkManagerChanged(NetworkLibrary* network_lib) { |
427 if (!web_ui()) | 430 if (!web_ui()) |
428 return; | 431 return; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 lte_portal_reachable_ = portal_reachable; | 464 lte_portal_reachable_ = portal_reachable; |
462 } | 465 } |
463 | 466 |
464 void MobileSetupHandler::GetDeviceInfo(CellularNetwork* network, | 467 void MobileSetupHandler::GetDeviceInfo(CellularNetwork* network, |
465 DictionaryValue* value) { | 468 DictionaryValue* value) { |
466 DCHECK(network); | 469 DCHECK(network); |
467 chromeos::NetworkLibrary* cros = | 470 chromeos::NetworkLibrary* cros = |
468 chromeos::CrosLibrary::Get()->GetNetworkLibrary(); | 471 chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
469 if (!cros) | 472 if (!cros) |
470 return; | 473 return; |
| 474 value->SetBoolean("activate_over_non_cellular_network", |
| 475 network->activate_over_non_cellular_network()); |
471 value->SetString("carrier", network->name()); | 476 value->SetString("carrier", network->name()); |
472 value->SetString("payment_url", network->payment_url()); | 477 value->SetString("payment_url", network->payment_url()); |
473 if (network->using_post() && network->post_data().length()) | 478 if (network->using_post() && network->post_data().length()) |
474 value->SetString("post_data", network->post_data()); | 479 value->SetString("post_data", network->post_data()); |
475 | 480 |
476 const chromeos::NetworkDevice* device = | 481 const chromeos::NetworkDevice* device = |
477 cros->FindNetworkDeviceByPath(network->device_path()); | 482 cros->FindNetworkDeviceByPath(network->device_path()); |
478 if (device) { | 483 if (device) { |
479 value->SetString("MEID", device->meid()); | 484 value->SetString("MEID", device->meid()); |
480 value->SetString("IMEI", device->imei()); | 485 value->SetString("IMEI", device->imei()); |
(...skipping 14 matching lines...) Expand all Loading... |
495 | 500 |
496 // Set up the chrome://mobilesetup/ source. | 501 // Set up the chrome://mobilesetup/ source. |
497 Profile* profile = Profile::FromWebUI(web_ui); | 502 Profile* profile = Profile::FromWebUI(web_ui); |
498 content::URLDataSource::Add(profile, html_source); | 503 content::URLDataSource::Add(profile, html_source); |
499 } | 504 } |
500 | 505 |
501 void MobileSetupUI::RenderViewCreated(RenderViewHost* host) { | 506 void MobileSetupUI::RenderViewCreated(RenderViewHost* host) { |
502 // Destroyed by the corresponding RenderViewHost | 507 // Destroyed by the corresponding RenderViewHost |
503 new PortalFrameLoadObserver(AsWeakPtr(), host); | 508 new PortalFrameLoadObserver(AsWeakPtr(), host); |
504 } | 509 } |
OLD | NEW |