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

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

Issue 5072001: Improved activation logic to cover few more edge cases. Removed button that w... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 static_cast<chromeos::CellularNetwork*>( 402 static_cast<chromeos::CellularNetwork*>(
403 const_cast<chromeos::Network*>(network))); 403 const_cast<chromeos::Network*>(network)));
404 } 404 }
405 405
406 void MobileSetupHandler::HandleCloseTab(const ListValue* args) { 406 void MobileSetupHandler::HandleCloseTab(const ListValue* args) {
407 if (!dom_ui_) 407 if (!dom_ui_)
408 return; 408 return;
409 Browser* browser = BrowserList::FindBrowserWithFeature( 409 Browser* browser = BrowserList::FindBrowserWithFeature(
410 dom_ui_->GetProfile(), Browser::FEATURE_TABSTRIP); 410 dom_ui_->GetProfile(), Browser::FEATURE_TABSTRIP);
411 if (browser) 411 if (browser)
412 browser->CloseTabContents(tab_contents_); 412 browser->CloseTabContents(tab_contents_);
Eric Shienbrood 2010/11/16 15:57:19 Shouldn't wifi and ethernet be re-enabled here?
Eric Shienbrood 2010/11/16 16:22:04 Actually, shouldn't it be calling CompleteActivati
zel 2010/11/16 18:59:28 This is dead code, we don't use it at all. Removed
413 } 413 }
414 414
415 void MobileSetupHandler::HandleStartActivation(const ListValue* args) { 415 void MobileSetupHandler::HandleStartActivation(const ListValue* args) {
416 scoped_refptr<TaskProxy> task = new TaskProxy(AsWeakPtr()); 416 scoped_refptr<TaskProxy> task = new TaskProxy(AsWeakPtr());
417 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 417 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
418 NewRunnableMethod(task.get(), &TaskProxy::HandleStartActivation)); 418 NewRunnableMethod(task.get(), &TaskProxy::HandleStartActivation));
419 } 419 }
420 420
421 void MobileSetupHandler::HandleSetTransactionStatus(const ListValue* args) { 421 void MobileSetupHandler::HandleSetTransactionStatus(const ListValue* args) {
422 const size_t kSetTransactionStatusParamCount = 1; 422 const size_t kSetTransactionStatusParamCount = 1;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 << "\n activation=" << network->GetActivationStateString().c_str() 488 << "\n activation=" << network->GetActivationStateString().c_str()
489 << "\n restricted=" << (network->restricted_pool() ? "yes" : "no") 489 << "\n restricted=" << (network->restricted_pool() ? "yes" : "no")
490 << "\n error=" << network->GetErrorString().c_str() 490 << "\n error=" << network->GetErrorString().c_str()
491 << "\n setvice_path=" << network->service_path().c_str(); 491 << "\n setvice_path=" << network->service_path().c_str();
492 switch (state_) { 492 switch (state_) {
493 case PLAN_ACTIVATION_START: { 493 case PLAN_ACTIVATION_START: {
494 switch (network->activation_state()) { 494 switch (network->activation_state()) {
495 case chromeos::ACTIVATION_STATE_ACTIVATED: { 495 case chromeos::ACTIVATION_STATE_ACTIVATED: {
496 if (network->failed_or_disconnected()) { 496 if (network->failed_or_disconnected()) {
497 new_state = PLAN_ACTIVATION_RECONNECTING; 497 new_state = PLAN_ACTIVATION_RECONNECTING;
498 } else if (network->connection_state() == chromeos::STATE_READY) { 498 } else if (network->connection_state() == chromeos::STATE_READY) {
Eric Shienbrood 2010/11/16 15:57:19 This can be "... if (network->connected()) {". The
zel 2010/11/16 18:59:28 Done.
499 if (network->restricted_pool()) { 499 if (network->restricted_pool()) {
500 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT; 500 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
501 } else { 501 } else {
502 new_state = PLAN_ACTIVATION_DONE; 502 new_state = PLAN_ACTIVATION_DONE;
503 } 503 }
504 } 504 }
505 break; 505 break;
506 } 506 }
507 case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED: { 507 case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED: {
508 if (!activation_status_test_) { 508 if (!activation_status_test_) {
509 if (network->failed_or_disconnected()) { 509 if (network->failed_or_disconnected()) {
510 activation_status_test_ = true; 510 activation_status_test_ = true;
511 new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION; 511 new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION;
512 } else if (network->connected()) { 512 } else if (network->connected()) {
513 LOG(INFO) << "Disconnecting from " << 513 LOG(INFO) << "Disconnecting from " <<
514 network->service_path().c_str(); 514 network->service_path().c_str();
515 chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> 515 chromeos::CrosLibrary::Get()->GetNetworkLibrary()->
516 DisconnectFromWirelessNetwork(network); 516 DisconnectFromWirelessNetwork(network);
517 // Disconnect will force networks to be reevaluated, so 517 // Disconnect will force networks to be reevaluated, so
518 // we don't want to continue processing on this path anymore. 518 // we don't want to continue processing on this path anymore.
519 return; 519 return;
520 } 520 }
521 } else { 521 } else {
522 if (network->connected()) 522 if (network->connected())
523 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT; 523 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
jglasgow 2010/11/16 13:37:35 Does this also need a check for restricted_pool()?
Eric Shienbrood 2010/11/16 15:57:19 Or change the check to network->is_active(), which
zel 2010/11/16 18:59:28 Done.
524 else 524 else
525 new_state = PLAN_ACTIVATION_RECONNECTING; 525 new_state = PLAN_ACTIVATION_RECONNECTING;
526 break; 526 break;
527 } 527 }
528 break; 528 break;
529 } 529 }
530 case chromeos::ACTIVATION_STATE_UNKNOWN: 530 case chromeos::ACTIVATION_STATE_UNKNOWN:
531 case chromeos::ACTIVATION_STATE_NOT_ACTIVATED: { 531 case chromeos::ACTIVATION_STATE_NOT_ACTIVATED: {
532 if (network->failed_or_disconnected()) { 532 if (network->failed_or_disconnected()) {
533 new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION; 533 new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION;
534 } else if (network->connected()) { 534 } else if (network->connected()) {
535 LOG(INFO) << "Disconnecting from " << 535 LOG(INFO) << "Disconnecting from " <<
536 network->service_path().c_str(); 536 network->service_path().c_str();
537 chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> 537 chromeos::CrosLibrary::Get()->GetNetworkLibrary()->
538 DisconnectFromWirelessNetwork(network); 538 DisconnectFromWirelessNetwork(network);
539 // Disconnect will force networks to be reevaluated, so 539 // Disconnect will force networks to be reevaluated, so
540 // we don't want to continue processing on this path anymore. 540 // we don't want to continue processing on this path anymore.
541 return; 541 return;
542 } 542 }
543 break; 543 break;
544 } 544 }
545 default: { 545 default: {
546 new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION; 546 new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION;
jglasgow 2010/11/16 13:37:35 Looks like this could be called while connected --
Eric Shienbrood 2010/11/16 15:57:19 I'm not sure I see the problem here. The only othe
zel 2010/11/16 18:59:28 This wasn't what was happening, but I have still r
547 break; 547 break;
548 } 548 }
549 } 549 }
550 break; 550 break;
551 } 551 }
552 case PLAN_ACTIVATION_INITIATING_ACTIVATION: { 552 case PLAN_ACTIVATION_INITIATING_ACTIVATION: {
553 switch (network->activation_state()) { 553 switch (network->activation_state()) {
554 case chromeos::ACTIVATION_STATE_ACTIVATED: 554 case chromeos::ACTIVATION_STATE_ACTIVATED:
555 if (network->failed_or_disconnected()) { 555 if (network->failed_or_disconnected()) {
556 new_state = PLAN_ACTIVATION_RECONNECTING; 556 new_state = PLAN_ACTIVATION_RECONNECTING;
557 } else if (network->connection_state() == chromeos::STATE_READY) { 557 } else if (network->connection_state() == chromeos::STATE_READY) {
558 if (network->restricted_pool()) { 558 if (network->restricted_pool()) {
559 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT; 559 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
560 } else { 560 } else {
561 new_state = PLAN_ACTIVATION_DONE; 561 new_state = PLAN_ACTIVATION_DONE;
562 } 562 }
563 } 563 }
564 break; 564 break;
565 case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED: 565 case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED:
566 if (network->connected()) 566 if (network->connected()) {
567 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT; 567 if (network->restricted_pool())
568 else 568 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
569 } else {
569 new_state = PLAN_ACTIVATION_RECONNECTING; 570 new_state = PLAN_ACTIVATION_RECONNECTING;
571 }
570 break; 572 break;
571 case chromeos::ACTIVATION_STATE_NOT_ACTIVATED: 573 case chromeos::ACTIVATION_STATE_NOT_ACTIVATED:
572 // Wait in this state until activation state changes. 574 // Wait in this state until activation state changes.
573 break; 575 break;
574 case chromeos::ACTIVATION_STATE_ACTIVATING: 576 case chromeos::ACTIVATION_STATE_ACTIVATING:
575 break; 577 break;
576 default: 578 default:
577 break; 579 break;
578 } 580 }
579 break; 581 break;
580 } 582 }
581 case PLAN_ACTIVATION_RECONNECTING: { 583 case PLAN_ACTIVATION_RECONNECTING: {
582 // Wait until the service shows up and gets activated. 584 // Wait until the service shows up and gets activated.
583 switch (network->activation_state()) { 585 switch (network->activation_state()) {
584 case chromeos::ACTIVATION_STATE_ACTIVATED: 586 case chromeos::ACTIVATION_STATE_ACTIVATED:
585 if (network->connection_state() == chromeos::STATE_READY) { 587 if (network->connection_state() == chromeos::STATE_READY) {
586 if (network->restricted_pool()) { 588 if (network->restricted_pool()) {
587 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT; 589 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
588 } else { 590 } else {
589 new_state = PLAN_ACTIVATION_DONE; 591 new_state = PLAN_ACTIVATION_DONE;
590 } 592 }
593 } else if (network->failed()) {
594 chromeos::CrosLibrary::Get()->GetNetworkLibrary()->
595 ConnectToCellularNetwork(network);
596 return;
591 } 597 }
592 break; 598 break;
593 case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED: 599 case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED:
594 if (network->connected()) { 600 if (network->connected()) {
595 if (network->restricted_pool()) 601 if (network->restricted_pool())
596 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT; 602 new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
597 } 603 }
598 break; 604 break;
599 default: 605 default:
600 break; 606 break;
601 } 607 }
602 break; 608 break;
603 } 609 }
604 case PLAN_ACTIVATION_PAGE_LOADING: 610 case PLAN_ACTIVATION_PAGE_LOADING:
605 break; 611 break;
606 // Just ignore all signals until the site confirms payment. 612 // Just ignore all signals until the site confirms payment.
607 case PLAN_ACTIVATION_SHOWING_PAYMENT: 613 case PLAN_ACTIVATION_SHOWING_PAYMENT:
608 // Activation completed/failed, ignore network changes. 614 // Activation completed/failed, ignore network changes.
609 case PLAN_ACTIVATION_DONE: 615 case PLAN_ACTIVATION_DONE:
610 case PLAN_ACTIVATION_ERROR: 616 case PLAN_ACTIVATION_ERROR:
611 break; 617 break;
612 } 618 }
613 619
614 std::string error_description; 620 std::string error_description;
615 if (GotActivationError(network, &error_description)) { 621 if (GotActivationError(network, &error_description)) {
616 // Check for this special case when we try to do activate partially 622 // Check for this special case when we try to do activate partially
Eric Shienbrood 2010/11/16 15:57:19 "...when we try to activate partially..."
617 // activated device. If that attempt failed, try to disconnect to clear the 623 // activated device. If that attempt failed, try to disconnect to clear the
618 // state and reconnect again. 624 // state and reconnect again.
619 if ((network->activation_state() == 625 if ((network->activation_state() ==
620 chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED || 626 chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED ||
621 network->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATING) && 627 network->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATING) &&
622 network->error() == chromeos::ERROR_UNKNOWN && 628 (network->error() == chromeos::ERROR_UNKNOWN ||
629 network->error() == chromeos::ERROR_OTASP_FAILED)&&
623 (state_ == PLAN_ACTIVATION_INITIATING_ACTIVATION || 630 (state_ == PLAN_ACTIVATION_INITIATING_ACTIVATION ||
624 state_ == PLAN_ACTIVATION_RECONNECTING) && 631 state_ == PLAN_ACTIVATION_RECONNECTING) &&
625 activation_status_test_ && 632 activation_status_test_ &&
626 network->connection_state() == chromeos::STATE_ACTIVATION_FAILURE) { 633 network->connection_state() == chromeos::STATE_ACTIVATION_FAILURE) {
627 new_state = PLAN_ACTIVATION_RECONNECTING; 634 new_state = PLAN_ACTIVATION_RECONNECTING;
628 } else { 635 } else {
629 new_state = PLAN_ACTIVATION_ERROR; 636 new_state = PLAN_ACTIVATION_ERROR;
630 } 637 }
631 } 638 }
632 ChangeState(network, new_state, error_description); 639 ChangeState(network, new_state, error_description);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 kJsDeviceStatusChangedHandler, device_dict); 703 kJsDeviceStatusChangedHandler, device_dict);
697 704
698 // Decide what to do with network object as a result of the new state. 705 // Decide what to do with network object as a result of the new state.
699 switch (new_state) { 706 switch (new_state) {
700 case PLAN_ACTIVATION_START: 707 case PLAN_ACTIVATION_START:
701 break; 708 break;
702 case PLAN_ACTIVATION_INITIATING_ACTIVATION: 709 case PLAN_ACTIVATION_INITIATING_ACTIVATION:
703 DCHECK(network); 710 DCHECK(network);
704 LOG(INFO) << "Activating service " << network->service_path().c_str(); 711 LOG(INFO) << "Activating service " << network->service_path().c_str();
705 if (!network->StartActivation()) 712 if (!network->StartActivation())
706 new_state = PLAN_ACTIVATION_ERROR; 713 new_state = PLAN_ACTIVATION_ERROR;
Jason Glasgow 2010/11/16 16:13:51 This seems to be dead code. I'm not sure... shoul
zel 2010/11/16 18:59:28 Done.
707 break; 714 break;
708 case PLAN_ACTIVATION_RECONNECTING: { 715 case PLAN_ACTIVATION_RECONNECTING: {
709 DCHECK(network); 716 DCHECK(network);
710 if (network) { 717 if (network) {
711 chromeos::CrosLibrary::Get()->GetNetworkLibrary()-> 718 chromeos::CrosLibrary::Get()->GetNetworkLibrary()->
712 ConnectToCellularNetwork(network); 719 ConnectToCellularNetwork(network);
713 } 720 }
714 break; 721 break;
715 } 722 }
716 case PLAN_ACTIVATION_PAGE_LOADING: 723 case PLAN_ACTIVATION_PAGE_LOADING:
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 new MobileSetupUIHTMLSource(service_path); 891 new MobileSetupUIHTMLSource(service_path);
885 892
886 // Set up the chrome://mobilesetup/ source. 893 // Set up the chrome://mobilesetup/ source.
887 BrowserThread::PostTask( 894 BrowserThread::PostTask(
888 BrowserThread::IO, FROM_HERE, 895 BrowserThread::IO, FROM_HERE,
889 NewRunnableMethod( 896 NewRunnableMethod(
890 Singleton<ChromeURLDataManager>::get(), 897 Singleton<ChromeURLDataManager>::get(),
891 &ChromeURLDataManager::AddDataSource, 898 &ChromeURLDataManager::AddDataSource,
892 make_scoped_refptr(html_source))); 899 make_scoped_refptr(html_source)));
893 } 900 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/mobile_setup.html » ('j') | chrome/browser/resources/mobile_setup.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698