Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/arc/arc_auth_service.h" | 5 #include "chrome/browser/chromeos/arc/arc_auth_service.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "ash/shelf/shelf_delegate.h" | 9 #include "ash/shelf/shelf_delegate.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 445 : OptInActionType::OPTED_OUT); | 445 : OptInActionType::OPTED_OUT); |
| 446 | 446 |
| 447 if (!disable_arc_from_ui_ && !arc_enabled && !IsArcManaged()) { | 447 if (!disable_arc_from_ui_ && !arc_enabled && !IsArcManaged()) { |
| 448 ash::ShelfDelegate* shelf_delegate = GetShelfDelegate(); | 448 ash::ShelfDelegate* shelf_delegate = GetShelfDelegate(); |
| 449 if (shelf_delegate) | 449 if (shelf_delegate) |
| 450 shelf_delegate->UnpinAppWithID(ArcSupportHost::kHostAppId); | 450 shelf_delegate->UnpinAppWithID(ArcSupportHost::kHostAppId); |
| 451 } | 451 } |
| 452 } | 452 } |
| 453 } | 453 } |
| 454 | 454 |
| 455 void ArcAuthService::StopArc() { | |
| 456 if (state_ != State::STOPPED) { | |
| 457 UpdateEnabledStateUMA(false); | |
| 458 profile_->GetPrefs()->SetBoolean(prefs::kArcSignedIn, false); | |
| 459 } | |
| 460 ShutdownBridgeAndCloseUI(); | |
| 461 } | |
| 462 | |
| 455 void ArcAuthService::OnOptInPreferenceChanged() { | 463 void ArcAuthService::OnOptInPreferenceChanged() { |
| 456 DCHECK(thread_checker.Get().CalledOnValidThread()); | 464 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 457 DCHECK(profile_); | 465 DCHECK(profile_); |
| 458 | 466 |
| 459 const bool arc_enabled = IsArcEnabled(); | 467 const bool arc_enabled = IsArcEnabled(); |
| 460 FOR_EACH_OBSERVER(Observer, observer_list_, OnOptInEnabled(arc_enabled)); | 468 FOR_EACH_OBSERVER(Observer, observer_list_, OnOptInEnabled(arc_enabled)); |
| 461 | 469 |
| 462 if (!arc_enabled) { | 470 if (!arc_enabled) { |
| 463 if (state_ != State::STOPPED) { | 471 StopArc(); |
| 464 UpdateEnabledStateUMA(false); | |
| 465 profile_->GetPrefs()->SetBoolean(prefs::kArcSignedIn, false); | |
| 466 } | |
| 467 ShutdownBridgeAndCloseUI(); | |
| 468 return; | 472 return; |
| 469 } | 473 } |
| 470 | 474 |
| 471 if (state_ == State::ACTIVE) | 475 if (state_ == State::ACTIVE) |
| 472 return; | 476 return; |
| 473 CloseUI(); | 477 CloseUI(); |
| 474 auth_code_.clear(); | 478 auth_code_.clear(); |
| 475 | 479 |
| 476 if (!profile_->GetPrefs()->GetBoolean(prefs::kArcSignedIn)) { | 480 if (!profile_->GetPrefs()->GetBoolean(prefs::kArcSignedIn)) { |
| 477 // Need pre-fetch auth code and show OptIn UI if needed. | 481 // Need pre-fetch auth code and show OptIn UI if needed. |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 578 ShutdownBridge(); | 582 ShutdownBridge(); |
| 579 } | 583 } |
| 580 | 584 |
| 581 initial_opt_in_ = false; | 585 initial_opt_in_ = false; |
| 582 StartUI(); | 586 StartUI(); |
| 583 } | 587 } |
| 584 | 588 |
| 585 void ArcAuthService::CancelAuthCode() { | 589 void ArcAuthService::CancelAuthCode() { |
| 586 DCHECK(thread_checker.Get().CalledOnValidThread()); | 590 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 587 | 591 |
| 588 if (ui_page_ == UIPage::ERROR_WITH_FEEDBACK) { | 592 if (state_ == State::NOT_INITIALIZED) { |
| 589 ShutdownBridge(); | 593 NOTREACHED(); |
| 590 if (profile_->GetPrefs()->HasPrefPath(prefs::kArcSignedIn)) | 594 return; |
| 591 profile_->GetPrefs()->SetBoolean(prefs::kArcSignedIn, false); | |
| 592 } | 595 } |
| 593 | 596 |
| 597 // In case |state_| is ACTIVE, |ui_page_| can be START_PROGRESS (which means | |
| 598 // normal Arc booting) or ERROR or ERROR_WITH_FEEDBACK (in case Arc can not | |
| 599 // be started). If Arc is booting normally dont't stop it on progress close. | |
| 594 if (state_ != State::FETCHING_CODE && ui_page_ != UIPage::ERROR && | 600 if (state_ != State::FETCHING_CODE && ui_page_ != UIPage::ERROR && |
| 595 ui_page_ != UIPage::ERROR_WITH_FEEDBACK) | 601 ui_page_ != UIPage::ERROR_WITH_FEEDBACK) { |
| 596 return; | 602 return; |
| 603 } | |
| 597 | 604 |
| 598 // Update UMA with user cancel only if error is not currently shown. | 605 // Update UMA with user cancel only if error is not currently shown. |
| 599 if (ui_page_ != UIPage::ERROR && ui_page_ != UIPage::NO_PAGE) | 606 if (ui_page_ != UIPage::ERROR && ui_page_ == UIPage::ERROR_WITH_FEEDBACK && |
| 607 ui_page_ != UIPage::NO_PAGE) { | |
| 600 UpdateOptInCancelUMA(OptInCancelReason::USER_CANCEL); | 608 UpdateOptInCancelUMA(OptInCancelReason::USER_CANCEL); |
| 609 } | |
| 610 | |
| 611 StopArc(); | |
| 612 | |
| 613 if (IsArcManaged()) | |
| 614 return; | |
| 601 | 615 |
| 602 base::AutoReset<bool> auto_reset(&disable_arc_from_ui_, true); | 616 base::AutoReset<bool> auto_reset(&disable_arc_from_ui_, true); |
| 603 DisableArc(); | 617 DisableArc(); |
| 604 } | 618 } |
| 605 | 619 |
| 606 bool ArcAuthService::IsArcManaged() const { | 620 bool ArcAuthService::IsArcManaged() const { |
| 607 DCHECK(thread_checker.Get().CalledOnValidThread()); | 621 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 608 DCHECK(profile_); | 622 DCHECK(profile_); |
| 609 return profile_->GetPrefs()->IsManagedPreference(prefs::kArcEnabled); | 623 return profile_->GetPrefs()->IsManagedPreference(prefs::kArcEnabled); |
| 610 } | 624 } |
| 611 | 625 |
| 612 bool ArcAuthService::IsArcEnabled() const { | 626 bool ArcAuthService::IsArcEnabled() const { |
| 613 DCHECK(thread_checker.Get().CalledOnValidThread()); | 627 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 614 DCHECK(profile_); | 628 DCHECK(profile_); |
| 615 return profile_->GetPrefs()->GetBoolean(prefs::kArcEnabled); | 629 return profile_->GetPrefs()->GetBoolean(prefs::kArcEnabled); |
| 616 } | 630 } |
| 617 | 631 |
| 618 void ArcAuthService::EnableArc() { | 632 void ArcAuthService::EnableArc() { |
| 619 DCHECK(thread_checker.Get().CalledOnValidThread()); | 633 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 620 DCHECK(profile_); | 634 DCHECK(profile_); |
| 621 profile_->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | 635 |
| 636 if (!IsArcEnabled()) { | |
| 637 if (IsArcManaged()) | |
| 638 return; | |
| 639 profile_->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | |
| 640 } else { | |
| 641 OnOptInPreferenceChanged(); | |
| 642 } | |
| 622 } | 643 } |
| 623 | 644 |
| 624 void ArcAuthService::DisableArc() { | 645 void ArcAuthService::DisableArc() { |
| 625 DCHECK(thread_checker.Get().CalledOnValidThread()); | 646 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 626 DCHECK(profile_); | 647 DCHECK(profile_); |
| 627 profile_->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); | 648 profile_->GetPrefs()->SetBoolean(prefs::kArcEnabled, false); |
|
mtomasz
2016/07/20 03:46:25
Why isn't there a "if (IsArcManaged())" guard like
khmel
2016/07/20 16:50:41
This has no effect for managed Arc. Probably for c
| |
| 628 } | 649 } |
| 629 | 650 |
| 630 void ArcAuthService::StartUI() { | 651 void ArcAuthService::StartUI() { |
| 631 DCHECK(thread_checker.Get().CalledOnValidThread()); | 652 DCHECK(thread_checker.Get().CalledOnValidThread()); |
| 632 | 653 |
| 633 SetState(State::FETCHING_CODE); | 654 SetState(State::FETCHING_CODE); |
| 634 | 655 |
| 635 if (initial_opt_in_) { | 656 if (initial_opt_in_) { |
| 636 initial_opt_in_ = false; | 657 initial_opt_in_ = false; |
| 637 ShowUI(UIPage::START, base::string16()); | 658 ShowUI(UIPage::START, base::string16()); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 718 return os << kStateFetchingCode; | 739 return os << kStateFetchingCode; |
| 719 case ArcAuthService::State::ACTIVE: | 740 case ArcAuthService::State::ACTIVE: |
| 720 return os << kStateActive; | 741 return os << kStateActive; |
| 721 default: | 742 default: |
| 722 NOTREACHED(); | 743 NOTREACHED(); |
| 723 return os; | 744 return os; |
| 724 } | 745 } |
| 725 } | 746 } |
| 726 | 747 |
| 727 } // namespace arc | 748 } // namespace arc |
| OLD | NEW |