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 20c6bde299bf4c483288f613ec66195fb6ab04f6..a6eedec621d4abcc56747eb5c4661b7e6b7b92dd 100644 |
--- a/chrome/browser/chromeos/arc/arc_auth_service.cc |
+++ b/chrome/browser/chromeos/arc/arc_auth_service.cc |
@@ -14,6 +14,7 @@ |
#include "base/logging.h" |
#include "base/strings/string16.h" |
#include "chrome/browser/chromeos/arc/arc_android_management_checker.h" |
+#include "chrome/browser/chromeos/arc/arc_auth_code_fetcher.h" |
#include "chrome/browser/chromeos/arc/arc_auth_context.h" |
#include "chrome/browser/chromeos/arc/arc_auth_notification.h" |
#include "chrome/browser/chromeos/arc/arc_optin_uma.h" |
@@ -598,6 +599,7 @@ void ArcAuthService::ShutdownBridge() { |
playstore_launcher_.reset(); |
auth_callback_.Reset(); |
android_management_checker_.reset(); |
+ auth_code_fetcher_.reset(); |
arc_bridge_service()->Shutdown(); |
if (state_ != State::NOT_INITIALIZED) |
SetState(State::STOPPED); |
@@ -791,6 +793,19 @@ void ArcAuthService::OnPrepareContextFailed() { |
UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR); |
} |
+void ArcAuthService::OnAuthCodeSuccess(const std::string& auth_code) { |
+ SetAuthCodeAndStartArc(auth_code); |
+} |
+ |
+void ArcAuthService::OnAuthCodeFailed() { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
+ DCHECK_EQ(state_, State::FETCHING_CODE); |
+ ShutdownBridgeAndShowUI( |
+ UIPage::ERROR, |
+ l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR)); |
+ UpdateOptInCancelUMA(OptInCancelReason::NETWORK_ERROR); |
+} |
+ |
void ArcAuthService::CheckAndroidManagement(bool background_mode) { |
// Do not send requests for Chrome OS managed users. |
if (IsAccountManaged(profile_)) { |
@@ -840,13 +855,28 @@ void ArcAuthService::OnAndroidManagementChecked( |
} |
void ArcAuthService::StartArcIfSignedIn() { |
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
if (state_ == State::ACTIVE) |
return; |
+ |
if (profile_->GetPrefs()->GetBoolean(prefs::kArcSignedIn) || |
IsOptInVerificationDisabled()) { |
StartArc(); |
} else { |
- ShowUI(UIPage::LSO_PROGRESS, base::string16()); |
+ const base::CommandLine* command_line = |
+ base::CommandLine::ForCurrentProcess(); |
+ std::string auth_endpoint; |
+ if (command_line->HasSwitch(chromeos::switches::kArcUseAuthEndpoint)) { |
+ auth_endpoint = command_line->GetSwitchValueASCII( |
+ chromeos::switches::kArcUseAuthEndpoint); |
+ } |
+ |
+ if (!auth_endpoint.empty()) { |
+ auth_code_fetcher_.reset(new ArcAuthCodeFetcher( |
+ this, context_->GetURLRequestContext(), profile_, auth_endpoint)); |
+ } else { |
+ ShowUI(UIPage::LSO_PROGRESS, base::string16()); |
+ } |
} |
} |