| Index: blimp/client/core/session/identity_source.cc
|
| diff --git a/blimp/client/core/session/identity_source.cc b/blimp/client/core/session/identity_source.cc
|
| deleted file mode 100644
|
| index 2c1deffb680fa4f8b8eedde9fd375cf39175470b..0000000000000000000000000000000000000000
|
| --- a/blimp/client/core/session/identity_source.cc
|
| +++ /dev/null
|
| @@ -1,149 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "blimp/client/core/session/identity_source.h"
|
| -
|
| -#include <utility>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "blimp/client/core/switches/blimp_client_switches.h"
|
| -
|
| -namespace blimp {
|
| -namespace client {
|
| -
|
| -namespace {
|
| -// OAuth2 token scope.
|
| -const char kOAuth2TokenScope[] =
|
| - "https://www.googleapis.com/auth/userinfo.email";
|
| -
|
| -// Max retry times when OAuth2 token request is canceled.
|
| -const int kTokenRequestCancelMaxRetry = 3;
|
| -} // namespace
|
| -
|
| -IdentitySource::IdentitySource(
|
| - std::unique_ptr<IdentityProvider> identity_provider,
|
| - const base::Callback<void(const GoogleServiceAuthError&)>& error_callback,
|
| - const TokenCallback& callback)
|
| - : OAuth2TokenService::Consumer("blimp_client"),
|
| - identity_provider_(std::move(identity_provider)),
|
| - error_callback_(error_callback),
|
| - token_callback_(callback),
|
| - is_fetching_token_(false),
|
| - retry_times_(0) {
|
| - DCHECK(identity_provider_.get());
|
| - identity_provider_->AddObserver(this);
|
| -}
|
| -
|
| -IdentitySource::~IdentitySource() {
|
| - identity_provider_->RemoveActiveAccountRefreshTokenObserver(this);
|
| - identity_provider_->RemoveObserver(this);
|
| -}
|
| -
|
| -void IdentitySource::Connect() {
|
| - if (is_fetching_token_) {
|
| - return;
|
| - }
|
| -
|
| - // Pass empty token to assignment source if we have command line switches.
|
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kEngineIP)) {
|
| - if (token_callback_) {
|
| - token_callback_.Run(std::string());
|
| - }
|
| - return;
|
| - }
|
| -
|
| - // User must sign in first to get an OAuth2 token.
|
| - const std::string& account_id = identity_provider_->GetActiveAccountId();
|
| - if (account_id.empty()) {
|
| - VLOG(1) << "User is not signed in before connection to Blimp engine.";
|
| - return;
|
| - }
|
| -
|
| - account_id_ = account_id;
|
| - is_fetching_token_ = true;
|
| - FetchAuthToken();
|
| -}
|
| -
|
| -std::string IdentitySource::GetActiveUsername() {
|
| - return identity_provider_->GetActiveUsername();
|
| -}
|
| -
|
| -// Add sign in state observer.
|
| -void IdentitySource::AddObserver(IdentityProvider::Observer* observer) {
|
| - DCHECK(identity_provider_);
|
| - identity_provider_->AddObserver(observer);
|
| -}
|
| -
|
| -// Remove sign in state observer.
|
| -void IdentitySource::RemoveObserver(IdentityProvider::Observer* observer) {
|
| - DCHECK(identity_provider_);
|
| - identity_provider_->RemoveObserver(observer);
|
| -}
|
| -
|
| -void IdentitySource::OnGetTokenSuccess(
|
| - const OAuth2TokenService::Request* request,
|
| - const std::string& access_token,
|
| - const base::Time& expiration_time) {
|
| - token_request_.reset();
|
| - is_fetching_token_ = false;
|
| - retry_times_ = 0;
|
| -
|
| - if (token_callback_) {
|
| - token_callback_.Run(access_token);
|
| - }
|
| -}
|
| -
|
| -// Fail to get the token after retries attempts in native layer and Java layer.
|
| -void IdentitySource::OnGetTokenFailure(
|
| - const OAuth2TokenService::Request* request,
|
| - const GoogleServiceAuthError& error) {
|
| - token_request_.reset();
|
| -
|
| - // Retry the request.
|
| - // The embedder can invalidate the refresh token at any time, this happens
|
| - // during application start up or when user switches account.
|
| - // OnGetTokenFailure will be called and the error code is REQUEST_CANCELED.
|
| - if (error.state() == GoogleServiceAuthError::State::REQUEST_CANCELED &&
|
| - retry_times_ < kTokenRequestCancelMaxRetry) {
|
| - retry_times_++;
|
| - VLOG(1) << "Retrying to get OAuth2 token due to request cancellation. "
|
| - "retry time = "
|
| - << retry_times_;
|
| - FetchAuthToken();
|
| - return;
|
| - }
|
| -
|
| - // If request failure was not caused by cancellation, or reached max retry
|
| - // times on request cancellation, propagate the error to embedder.
|
| - is_fetching_token_ = false;
|
| - retry_times_ = 0;
|
| - VLOG(1) << "OAuth2 token error: " << error.state();
|
| - error_callback_.Run(error);
|
| -}
|
| -
|
| -void IdentitySource::OnRefreshTokenAvailable(const std::string& account_id) {
|
| - if (account_id != account_id_) {
|
| - return;
|
| - }
|
| -
|
| - identity_provider_->RemoveActiveAccountRefreshTokenObserver(this);
|
| - FetchAuthToken();
|
| -}
|
| -
|
| -void IdentitySource::FetchAuthToken() {
|
| - OAuth2TokenService* token_service = identity_provider_->GetTokenService();
|
| - DCHECK(token_service);
|
| -
|
| - if (token_service->RefreshTokenIsAvailable(account_id_)) {
|
| - OAuth2TokenService::ScopeSet scopes;
|
| - scopes.insert(kOAuth2TokenScope);
|
| - token_request_ = token_service->StartRequest(account_id_, scopes, this);
|
| - } else {
|
| - identity_provider_->AddActiveAccountRefreshTokenObserver(this);
|
| - }
|
| -}
|
| -
|
| -} // namespace client
|
| -} // namespace blimp
|
|
|