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

Side by Side Diff: chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc

Issue 6292008: Added flags to prevent messing with network connections while 3G device is be... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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) 2006-2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2010 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/chromeos/dom_ui/mobile_setup_ui.h" 5 #include "chrome/browser/chromeos/dom_ui/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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 const char kErrorBadConnectionActivated[] = "bad_connection_activated"; 55 const char kErrorBadConnectionActivated[] = "bad_connection_activated";
56 const char kErrorRoamingOnConnection[] = "roaming_connection"; 56 const char kErrorRoamingOnConnection[] = "roaming_connection";
57 const char kErrorNoEVDO[] = "no_evdo"; 57 const char kErrorNoEVDO[] = "no_evdo";
58 const char kErrorRoamingActivation[] = "roaming_activation"; 58 const char kErrorRoamingActivation[] = "roaming_activation";
59 const char kErrorRoamingPartiallyActivated[] = "roaming_partially_activated"; 59 const char kErrorRoamingPartiallyActivated[] = "roaming_partially_activated";
60 const char kErrorNoService[] = "no_service"; 60 const char kErrorNoService[] = "no_service";
61 const char kErrorDisabled[] = "disabled"; 61 const char kErrorDisabled[] = "disabled";
62 const char kErrorNoDevice[] = "no_device"; 62 const char kErrorNoDevice[] = "no_device";
63 const char kFailedPaymentError[] = "failed_payment"; 63 const char kFailedPaymentError[] = "failed_payment";
64 const char kFailedConnectivity[] = "connectivity"; 64 const char kFailedConnectivity[] = "connectivity";
65 const char kErrorAlreadyRunning[] = "already_running";
65 66
66 // Cellular configuration file path. 67 // Cellular configuration file path.
67 const char kCellularConfigPath[] = 68 const char kCellularConfigPath[] =
68 "/usr/share/chromeos-assets/mobile/mobile_config.json"; 69 "/usr/share/chromeos-assets/mobile/mobile_config.json";
69 70
70 // Cellular config file field names. 71 // Cellular config file field names.
71 const char kVersionField[] = "version"; 72 const char kVersionField[] = "version";
72 const char kErrorsField[] = "errors"; 73 const char kErrorsField[] = "errors";
73 74
74 // Number of times we will retry to restart the activation process in case 75 // Number of times we will retry to restart the activation process in case
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 TabContents* tab_contents_; 303 TabContents* tab_contents_;
303 // Internal handler state. 304 // Internal handler state.
304 PlanActivationState state_; 305 PlanActivationState state_;
305 std::string service_path_; 306 std::string service_path_;
306 // Flags that control if wifi and ethernet connection needs to be restored 307 // Flags that control if wifi and ethernet connection needs to be restored
307 // after the activation of cellular network. 308 // after the activation of cellular network.
308 bool reenable_wifi_; 309 bool reenable_wifi_;
309 bool reenable_ethernet_; 310 bool reenable_ethernet_;
310 bool reenable_cert_check_; 311 bool reenable_cert_check_;
311 bool evaluating_; 312 bool evaluating_;
313 // True if we think that another tab is already running activation.
314 bool already_running_;
312 // Connection retry counter. 315 // Connection retry counter.
313 int connection_retry_count_; 316 int connection_retry_count_;
314 // Post payment reconnect wait counters. 317 // Post payment reconnect wait counters.
315 int reconnect_wait_count_; 318 int reconnect_wait_count_;
316 // Activation retry attempt count; 319 // Activation retry attempt count;
317 int activation_attempt_; 320 int activation_attempt_;
318 // Connection start time. 321 // Connection start time.
319 base::Time connection_start_time_; 322 base::Time connection_start_time_;
320 // Timer that monitors reconnection timeouts. 323 // Timer that monitors reconnection timeouts.
321 base::RepeatingTimer<MobileSetupHandler> reconnect_timer_; 324 base::RepeatingTimer<MobileSetupHandler> reconnect_timer_;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 // 434 //
432 //////////////////////////////////////////////////////////////////////////////// 435 ////////////////////////////////////////////////////////////////////////////////
433 MobileSetupHandler::MobileSetupHandler(const std::string& service_path) 436 MobileSetupHandler::MobileSetupHandler(const std::string& service_path)
434 : tab_contents_(NULL), 437 : tab_contents_(NULL),
435 state_(PLAN_ACTIVATION_PAGE_LOADING), 438 state_(PLAN_ACTIVATION_PAGE_LOADING),
436 service_path_(service_path), 439 service_path_(service_path),
437 reenable_wifi_(false), 440 reenable_wifi_(false),
438 reenable_ethernet_(false), 441 reenable_ethernet_(false),
439 reenable_cert_check_(false), 442 reenable_cert_check_(false),
440 evaluating_(false), 443 evaluating_(false),
444 already_running_(false),
441 connection_retry_count_(0), 445 connection_retry_count_(0),
442 reconnect_wait_count_(0), 446 reconnect_wait_count_(0),
443 activation_attempt_(0) { 447 activation_attempt_(0) {
444 } 448 }
445 449
446 MobileSetupHandler::~MobileSetupHandler() { 450 MobileSetupHandler::~MobileSetupHandler() {
447 reconnect_timer_.Stop(); 451 reconnect_timer_.Stop();
448 chromeos::NetworkLibrary* lib = 452 chromeos::NetworkLibrary* lib =
449 chromeos::CrosLibrary::Get()->GetNetworkLibrary(); 453 chromeos::CrosLibrary::Get()->GetNetworkLibrary();
454 if (lib->IsLocked())
Charlie Lee 2011/01/20 20:05:43 probably want to remove network manager observer b
zel 2011/01/20 22:06:14 Done.
455 lib->Unlock();
450 lib->RemoveNetworkManagerObserver(this); 456 lib->RemoveNetworkManagerObserver(this);
451 lib->RemoveObserverForAllNetworks(this); 457 lib->RemoveObserverForAllNetworks(this);
452 ReEnableOtherConnections(); 458 ReEnableOtherConnections();
453 } 459 }
454 460
455 DOMMessageHandler* MobileSetupHandler::Attach(DOMUI* dom_ui) { 461 DOMMessageHandler* MobileSetupHandler::Attach(DOMUI* dom_ui) {
456 return DOMMessageHandler::Attach(dom_ui); 462 return DOMMessageHandler::Attach(dom_ui);
457 } 463 }
458 464
459 void MobileSetupHandler::Init(TabContents* contents) { 465 void MobileSetupHandler::Init(TabContents* contents) {
460 tab_contents_ = contents; 466 tab_contents_ = contents;
461 LoadCellularConfig(); 467 LoadCellularConfig();
462 SetupActivationProcess(GetCellularNetwork(service_path_)); 468 if (!chromeos::CrosLibrary::Get()->GetNetworkLibrary()->IsLocked())
Charlie Lee 2011/01/20 20:05:43 if we are using locked only for network activation
zel 2011/01/20 22:06:14 Actually, I wanted to keep this generic at least f
469 SetupActivationProcess(GetCellularNetwork(service_path_));
470 else
471 already_running_ = true;
463 } 472 }
464 473
465 void MobileSetupHandler::RegisterMessages() { 474 void MobileSetupHandler::RegisterMessages() {
466 dom_ui_->RegisterMessageCallback(kJsApiStartActivation, 475 dom_ui_->RegisterMessageCallback(kJsApiStartActivation,
467 NewCallback(this, &MobileSetupHandler::HandleStartActivation)); 476 NewCallback(this, &MobileSetupHandler::HandleStartActivation));
468 dom_ui_->RegisterMessageCallback(kJsApiSetTransactionStatus, 477 dom_ui_->RegisterMessageCallback(kJsApiSetTransactionStatus,
469 NewCallback(this, &MobileSetupHandler::HandleSetTransactionStatus)); 478 NewCallback(this, &MobileSetupHandler::HandleSetTransactionStatus));
470 } 479 }
471 480
472 void MobileSetupHandler::OnNetworkManagerChanged( 481 void MobileSetupHandler::OnNetworkManagerChanged(
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 void MobileSetupHandler::InitiateActivation() { 520 void MobileSetupHandler::InitiateActivation() {
512 scoped_refptr<TaskProxy> task = new TaskProxy(AsWeakPtr(), 0); 521 scoped_refptr<TaskProxy> task = new TaskProxy(AsWeakPtr(), 0);
513 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 522 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
514 NewRunnableMethod(task.get(), &TaskProxy::HandleStartActivation)); 523 NewRunnableMethod(task.get(), &TaskProxy::HandleStartActivation));
515 } 524 }
516 525
517 void MobileSetupHandler::StartActivation() { 526 void MobileSetupHandler::StartActivation() {
518 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 527 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
519 chromeos::NetworkLibrary* lib = 528 chromeos::NetworkLibrary* lib =
520 chromeos::CrosLibrary::Get()->GetNetworkLibrary(); 529 chromeos::CrosLibrary::Get()->GetNetworkLibrary();
521
522 chromeos::CellularNetwork* network = GetCellularNetwork(service_path_); 530 chromeos::CellularNetwork* network = GetCellularNetwork(service_path_);
523 // Check if we can start activation process. 531 // Check if we can start activation process.
524 if (!network) { 532 if (!network || already_running_) {
525 std::string error(kErrorNoService); 533 std::string error;
526 if (!lib->cellular_available()) 534 if (already_running_)
535 error = kErrorAlreadyRunning;
536 else if (!lib->cellular_available())
527 error = kErrorNoDevice; 537 error = kErrorNoDevice;
528 else if (!lib->cellular_enabled()) 538 else if (!lib->cellular_enabled())
529 error = kErrorDisabled; 539 error = kErrorDisabled;
540 else
541 error = kErrorNoService;
530 ChangeState(NULL, PLAN_ACTIVATION_ERROR, GetErrorMessage(error)); 542 ChangeState(NULL, PLAN_ACTIVATION_ERROR, GetErrorMessage(error));
531 return; 543 return;
532 } 544 }
533 545
534 // Start monitoring network property changes. 546 // Start monitoring network property changes.
535 lib->AddNetworkManagerObserver(this); 547 lib->AddNetworkManagerObserver(this);
536 lib->RemoveObserverForAllNetworks(this); 548 lib->RemoveObserverForAllNetworks(this);
537 lib->AddNetworkObserver(network->service_path(), this); 549 lib->AddNetworkObserver(network->service_path(), this);
538 // Try to start with OTASP immediately if we have received payment recently. 550 // Try to start with OTASP immediately if we have received payment recently.
539 state_ = lib->HasRecentCellularPlanPayment() ? 551 state_ = lib->HasRecentCellularPlanPayment() ?
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 } 1013 }
1002 return "UNKNOWN"; 1014 return "UNKNOWN";
1003 } 1015 }
1004 1016
1005 1017
1006 void MobileSetupHandler::CompleteActivation( 1018 void MobileSetupHandler::CompleteActivation(
1007 chromeos::CellularNetwork* network) { 1019 chromeos::CellularNetwork* network) {
1008 // Remove observers, we are done with this page. 1020 // Remove observers, we are done with this page.
1009 chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()-> 1021 chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
1010 GetNetworkLibrary(); 1022 GetNetworkLibrary();
1023 lib->Unlock();
Charlie Lee 2011/01/20 20:05:43 same here. move this below remove network manager
zel 2011/01/20 22:06:14 Done.
1011 // If we have successfully activated the connection, set autoconnect flag. 1024 // If we have successfully activated the connection, set autoconnect flag.
1012 if (network) { 1025 if (network) {
1013 network->set_auto_connect(true); 1026 network->set_auto_connect(true);
1014 lib->SaveCellularNetwork(network); 1027 lib->SaveCellularNetwork(network);
1015 } 1028 }
1016 lib->RemoveNetworkManagerObserver(this); 1029 lib->RemoveNetworkManagerObserver(this);
1017 lib->RemoveObserverForAllNetworks(this); 1030 lib->RemoveObserverForAllNetworks(this);
1018 // Reactivate other types of connections if we have 1031 // Reactivate other types of connections if we have
1019 // shut them down previously. 1032 // shut them down previously.
1020 ReEnableOtherConnections(); 1033 ReEnableOtherConnections();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 reenable_cert_check_ = true; 1169 reenable_cert_check_ = true;
1157 prefs->SetBoolean(prefs::kCertRevocationCheckingEnabled, false); 1170 prefs->SetBoolean(prefs::kCertRevocationCheckingEnabled, false);
1158 } 1171 }
1159 1172
1160 chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()-> 1173 chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
1161 GetNetworkLibrary(); 1174 GetNetworkLibrary();
1162 // Disable autoconnect to cellular network. 1175 // Disable autoconnect to cellular network.
1163 network->set_auto_connect(false); 1176 network->set_auto_connect(false);
1164 lib->SaveCellularNetwork(network); 1177 lib->SaveCellularNetwork(network);
1165 1178
1179 // Prevent any other network interference.
1166 DisableOtherNetworks(); 1180 DisableOtherNetworks();
1181 lib->Lock();
1167 } 1182 }
1168 1183
1169 void MobileSetupHandler::DisableOtherNetworks() { 1184 void MobileSetupHandler::DisableOtherNetworks() {
1170 chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()-> 1185 chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
1171 GetNetworkLibrary(); 1186 GetNetworkLibrary();
1172 // Disable ethernet and wifi. 1187 // Disable ethernet and wifi.
1173 if (lib->ethernet_enabled()) { 1188 if (lib->ethernet_enabled()) {
1174 reenable_ethernet_ = true; 1189 reenable_ethernet_ = true;
1175 lib->EnableEthernetNetworkDevice(false); 1190 lib->EnableEthernetNetworkDevice(false);
1176 } 1191 }
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 new MobileSetupUIHTMLSource(service_path); 1293 new MobileSetupUIHTMLSource(service_path);
1279 1294
1280 // Set up the chrome://mobilesetup/ source. 1295 // Set up the chrome://mobilesetup/ source.
1281 BrowserThread::PostTask( 1296 BrowserThread::PostTask(
1282 BrowserThread::IO, FROM_HERE, 1297 BrowserThread::IO, FROM_HERE,
1283 NewRunnableMethod( 1298 NewRunnableMethod(
1284 ChromeURLDataManager::GetInstance(), 1299 ChromeURLDataManager::GetInstance(),
1285 &ChromeURLDataManager::AddDataSource, 1300 &ChromeURLDataManager::AddDataSource,
1286 make_scoped_refptr(html_source))); 1301 make_scoped_refptr(html_source)));
1287 } 1302 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698