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

Unified Diff: chrome/browser/chromeos/arc/arc_auth_service.cc

Issue 2485233002: Do not run Android management check for re-auth case. (Closed)
Patch Set: rebase Created 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/arc/arc_auth_service.cc
diff --git a/chrome/browser/chromeos/arc/arc_auth_service.cc b/chrome/browser/chromeos/arc/arc_auth_service.cc
index 9fbb4e2a1546e2ed9d56b4135b781cdc50a66677..31145be35a01461e888045cbb613402f0c01067e 100644
--- a/chrome/browser/chromeos/arc/arc_auth_service.cc
+++ b/chrome/browser/chromeos/arc/arc_auth_service.cc
@@ -446,7 +446,9 @@ void ArcAuthService::PrepareContextForAuthCodeRequest() {
// 3. For any other state on Android side that leads device appears in
// non-signed state.
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- DCHECK(state_ != State::ACTIVE || IsAuthCodeRequest());
+ DCHECK(state_ == State::FETCHING_CODE || state_ == State::ACTIVE);
+ if (state_ == State::ACTIVE)
+ DCHECK(IsAuthCodeRequest());
DCHECK(!IsArcKioskMode());
context_->PrepareContext();
}
@@ -597,6 +599,7 @@ void ArcAuthService::OnPrimaryUserProfilePrepared(Profile* profile) {
preference_handler_->Start();
}
+ DCHECK_EQ(State::NOT_INITIALIZED, state_);
SetState(State::STOPPED);
PrefServiceSyncableFromProfile(profile_)->AddSyncedPrefObserver(
@@ -691,16 +694,7 @@ void ArcAuthService::ShowUI(ArcSupportHost::UIPage page,
void ArcAuthService::OnContextReady() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- // TODO(hidehiko): The check is not necessary if this is a part of re-auth
- // flow and OOBE OptIn where Android Management check must be a part of
- // checking if Arc OptIn should be skip. Remove this.
- android_management_checker_.reset(new ArcAndroidManagementChecker(
- profile_, context_->token_service(), context_->account_id(),
- false /* retry_on_error */));
- android_management_checker_->StartCheck(
- base::Bind(&ArcAuthService::OnAndroidManagementChecked,
- weak_ptr_factory_.GetWeakPtr()));
+ FetchAuthCode();
}
void ArcAuthService::OnSyncedPrefChanged(const std::string& path,
@@ -850,8 +844,6 @@ void ArcAuthService::SetAuthCodeAndStartArc(const std::string& auth_code) {
DCHECK(!auth_code.empty());
if (IsAuthCodeRequest()) {
- DCHECK_EQ(state_, State::FETCHING_CODE);
- SetState(State::ACTIVE);
account_info_notifier_->Notify(!IsOptInVerificationDisabled(), auth_code,
GetAccountType(),
policy_util::IsAccountManaged(profile_));
@@ -859,7 +851,9 @@ void ArcAuthService::SetAuthCodeAndStartArc(const std::string& auth_code) {
return;
}
- if (state_ != State::FETCHING_CODE) {
+ if (state_ != State::SHOWING_TERMS_OF_SERVICE &&
+ state_ != State::CHECKING_ANDROID_MANAGEMENT &&
+ state_ != State::FETCHING_CODE) {
ShutdownBridgeAndCloseUI();
return;
}
@@ -881,25 +875,6 @@ void ArcAuthService::OnArcSignInTimeout() {
OnSignInFailedInternal(ProvisioningResult::OVERALL_SIGN_IN_TIMEOUT);
}
-void ArcAuthService::StartLso() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- // Terms were accepted
- profile_->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true);
-
- // Update UMA only if error (with or without feedback) is currently shown.
- if (ui_page_ == ArcSupportHost::UIPage::ERROR) {
- UpdateOptInActionUMA(OptInActionType::RETRY);
- } else if (ui_page_ == ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK) {
- UpdateOptInActionUMA(OptInActionType::RETRY);
- ShutdownBridge();
- }
-
- DCHECK(arc_bridge_service()->stopped());
- SetState(State::FETCHING_CODE);
- PrepareContextForAuthCodeRequest();
-}
-
void ArcAuthService::CancelAuthCode() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -911,7 +886,9 @@ void ArcAuthService::CancelAuthCode() {
// In case |state_| is ACTIVE, |ui_page_| can be START_PROGRESS (which means
// normal Arc booting) or ERROR or ERROR_WITH_FEEDBACK (in case Arc can not
// be started). If Arc is booting normally dont't stop it on progress close.
- if (state_ != State::FETCHING_CODE &&
+ if ((state_ != State::FETCHING_CODE &&
+ state_ != State::SHOWING_TERMS_OF_SERVICE &&
+ state_ != State::CHECKING_ANDROID_MANAGEMENT) &&
ui_page_ != ArcSupportHost::UIPage::ERROR &&
ui_page_ != ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK) {
return;
@@ -985,7 +962,7 @@ void ArcAuthService::StartUI() {
return;
}
- SetState(State::FETCHING_CODE);
+ SetState(State::SHOWING_TERMS_OF_SERVICE);
ShowUI(ArcSupportHost::UIPage::TERMS, base::string16());
}
@@ -1011,12 +988,35 @@ void ArcAuthService::OnAuthCodeFailed() {
UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR);
}
+void ArcAuthService::StartArcAndroidManagementCheck() {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(arc_bridge_service()->stopped());
+ DCHECK(state_ == State::SHOWING_TERMS_OF_SERVICE ||
+ state_ == State::CHECKING_ANDROID_MANAGEMENT);
+ SetState(State::CHECKING_ANDROID_MANAGEMENT);
+
+ android_management_checker_.reset(new ArcAndroidManagementChecker(
+ profile_, context_->token_service(), context_->account_id(),
+ false /* retry_on_error */));
+ android_management_checker_->StartCheck(
+ base::Bind(&ArcAuthService::OnAndroidManagementChecked,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
void ArcAuthService::OnAndroidManagementChecked(
policy::AndroidManagementClient::Result result) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK_EQ(state_, State::CHECKING_ANDROID_MANAGEMENT);
+
switch (result) {
case policy::AndroidManagementClient::Result::UNMANAGED:
- OnAndroidManagementPassed();
+ if (IsOptInVerificationDisabled()) {
+ StartArc();
+ } else {
+ // TODO(hidehiko): Merge this prefetching into re-auth case.
+ SetState(State::FETCHING_CODE);
+ PrepareContextForAuthCodeRequest();
+ }
break;
case policy::AndroidManagementClient::Result::MANAGED:
ShutdownBridgeAndShowUI(
@@ -1069,23 +1069,6 @@ void ArcAuthService::FetchAuthCode() {
}
}
-void ArcAuthService::OnAndroidManagementPassed() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- if (state_ == State::ACTIVE) {
- if (IsAuthCodeRequest())
- FetchAuthCode();
- return;
- }
-
- if (profile_->GetPrefs()->GetBoolean(prefs::kArcSignedIn) ||
- IsOptInVerificationDisabled()) {
- StartArc();
- } else {
- FetchAuthCode();
- }
-}
-
void ArcAuthService::OnWindowClosed() {
CancelAuthCode();
}
@@ -1093,6 +1076,9 @@ void ArcAuthService::OnWindowClosed() {
void ArcAuthService::OnTermsAgreed(bool is_metrics_enabled,
bool is_backup_and_restore_enabled,
bool is_location_service_enabled) {
+ // Terms were accepted
+ profile_->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true);
+
// This is ARC support's UI event callback, so this is called only when
// the UI is visible. The condition to open the UI is
// !g_disable_ui_for_testing && !IsOptInVerificationDisabled() (see ShowUI())
@@ -1103,13 +1089,39 @@ void ArcAuthService::OnTermsAgreed(bool is_metrics_enabled,
preference_handler_->EnableMetrics(is_metrics_enabled);
preference_handler_->EnableBackupRestore(is_backup_and_restore_enabled);
preference_handler_->EnableLocationService(is_location_service_enabled);
- StartLso();
+ StartArcAndroidManagementCheck();
}
void ArcAuthService::OnAuthSucceeded(const std::string& auth_code) {
SetAuthCodeAndStartArc(auth_code);
}
+void ArcAuthService::OnRetryClicked() {
+ UpdateOptInActionUMA(OptInActionType::RETRY);
+ // ERROR_WITH_FEEDBACK is set in OnSignInFailed(). In the case, we postpone
+ // to stop the ARC to obtain the internal state.
+ // Here, on retry, stop it.
+ if (ui_page_ == ArcSupportHost::UIPage::ERROR_WITH_FEEDBACK)
+ ShutdownBridge();
+
+ switch (state_) {
+ case State::NOT_INITIALIZED:
+ NOTREACHED();
+ break;
+ case State::STOPPED:
+ case State::SHOWING_TERMS_OF_SERVICE:
+ ShowUI(ArcSupportHost::UIPage::TERMS, base::string16());
+ break;
+ case State::CHECKING_ANDROID_MANAGEMENT:
+ StartArcAndroidManagementCheck();
+ break;
+ case State::FETCHING_CODE:
+ case State::ACTIVE:
+ PrepareContextForAuthCodeRequest();
+ break;
+ }
+}
+
void ArcAuthService::OnSendFeedbackClicked() {
chrome::OpenFeedbackDialog(nullptr);
}
@@ -1138,6 +1150,10 @@ std::ostream& operator<<(std::ostream& os, const ArcAuthService::State& state) {
return os << "NOT_INITIALIZED";
case ArcAuthService::State::STOPPED:
return os << "STOPPED";
+ case ArcAuthService::State::SHOWING_TERMS_OF_SERVICE:
+ return os << "SHOWING_TERMS_OF_SERVICE";
+ case ArcAuthService::State::CHECKING_ANDROID_MANAGEMENT:
+ return os << "CHECKING_ANDROID_MANAGEMENT";
case ArcAuthService::State::FETCHING_CODE:
return os << "FETCHING_CODE";
case ArcAuthService::State::ACTIVE:
« no previous file with comments | « chrome/browser/chromeos/arc/arc_auth_service.h ('k') | chrome/browser/chromeos/arc/arc_auth_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698