Move ActiveAccountAccessTokenFetcherImpl into DeviceIdentityProvider

This class provides an implementation of
ActiveAccountAccessTokenFetcher that is backed by
DeviceOAuth2TokenService. With the pending removal of
OAuth2TokenService, the class needs to live in //chrome where it can
have direct knowledge of DeviceOAuth2TokenService. This CL makes that
change.

Bug: 967598
Change-Id: I585dc5b0f27dad7051256f0550867e23733d85d0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1675550
Reviewed-by: Mihai Sardarescu <msarda@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#672058}
diff --git a/chrome/browser/chromeos/settings/device_identity_provider.cc b/chrome/browser/chromeos/settings/device_identity_provider.cc
index 00776d9a..b37b14d 100644
--- a/chrome/browser/chromeos/settings/device_identity_provider.cc
+++ b/chrome/browser/chromeos/settings/device_identity_provider.cc
@@ -5,10 +5,84 @@
 #include "chrome/browser/chromeos/settings/device_identity_provider.h"
 
 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h"
-#include "components/invalidation/public/active_account_access_token_fetcher_impl.h"
 
 namespace chromeos {
 
+namespace {
+
+// An implementation of ActiveAccountAccessTokenFetcher that is backed by
+// DeviceOAuth2TokenService.
+class ActiveAccountAccessTokenFetcherImpl
+    : public invalidation::ActiveAccountAccessTokenFetcher,
+      OAuth2TokenService::Consumer {
+ public:
+  ActiveAccountAccessTokenFetcherImpl(
+      const std::string& active_account_id,
+      const std::string& oauth_consumer_name,
+      DeviceOAuth2TokenService* token_service,
+      const OAuth2TokenService::ScopeSet& scopes,
+      invalidation::ActiveAccountAccessTokenCallback callback);
+  ~ActiveAccountAccessTokenFetcherImpl() override;
+
+ private:
+  // OAuth2TokenService::Consumer implementation.
+  void OnGetTokenSuccess(
+      const OAuth2TokenService::Request* request,
+      const OAuth2AccessTokenConsumer::TokenResponse& token_response) override;
+  void OnGetTokenFailure(const OAuth2TokenService::Request* request,
+                         const GoogleServiceAuthError& error) override;
+
+  // Invokes |callback_| with (|access_token|, |error|).
+  void HandleTokenRequestCompletion(const OAuth2TokenService::Request* request,
+                                    const GoogleServiceAuthError& error,
+                                    const std::string& access_token);
+
+  invalidation::ActiveAccountAccessTokenCallback callback_;
+  std::unique_ptr<OAuth2TokenService::Request> access_token_request_;
+
+  DISALLOW_COPY_AND_ASSIGN(ActiveAccountAccessTokenFetcherImpl);
+};
+
+}  // namespace
+
+ActiveAccountAccessTokenFetcherImpl::ActiveAccountAccessTokenFetcherImpl(
+    const std::string& active_account_id,
+    const std::string& oauth_consumer_name,
+    DeviceOAuth2TokenService* token_service,
+    const OAuth2TokenService::ScopeSet& scopes,
+    invalidation::ActiveAccountAccessTokenCallback callback)
+    : OAuth2TokenService::Consumer(oauth_consumer_name),
+      callback_(std::move(callback)) {
+  access_token_request_ =
+      token_service->StartRequest(active_account_id, scopes, this);
+}
+
+ActiveAccountAccessTokenFetcherImpl::~ActiveAccountAccessTokenFetcherImpl() {}
+
+void ActiveAccountAccessTokenFetcherImpl::OnGetTokenSuccess(
+    const OAuth2TokenService::Request* request,
+    const OAuth2AccessTokenConsumer::TokenResponse& token_response) {
+  HandleTokenRequestCompletion(request, GoogleServiceAuthError::AuthErrorNone(),
+                               token_response.access_token);
+}
+
+void ActiveAccountAccessTokenFetcherImpl::OnGetTokenFailure(
+    const OAuth2TokenService::Request* request,
+    const GoogleServiceAuthError& error) {
+  HandleTokenRequestCompletion(request, error, std::string());
+}
+
+void ActiveAccountAccessTokenFetcherImpl::HandleTokenRequestCompletion(
+    const OAuth2TokenService::Request* request,
+    const GoogleServiceAuthError& error,
+    const std::string& access_token) {
+  DCHECK_EQ(request, access_token_request_.get());
+  std::unique_ptr<OAuth2TokenService::Request> request_deleter(
+      std::move(access_token_request_));
+
+  std::move(callback_).Run(error, access_token);
+}
+
 DeviceIdentityProvider::DeviceIdentityProvider(
     chromeos::DeviceOAuth2TokenService* token_service)
     : token_service_(token_service) {
@@ -57,7 +131,7 @@
     const std::string& oauth_consumer_name,
     const OAuth2TokenService::ScopeSet& scopes,
     invalidation::ActiveAccountAccessTokenCallback callback) {
-  return std::make_unique<invalidation::ActiveAccountAccessTokenFetcherImpl>(
+  return std::make_unique<ActiveAccountAccessTokenFetcherImpl>(
       GetActiveAccountId(), oauth_consumer_name, token_service_, scopes,
       std::move(callback));
 }
diff --git a/components/invalidation/impl/profile_identity_provider.cc b/components/invalidation/impl/profile_identity_provider.cc
index d208585..487e2805 100644
--- a/components/invalidation/impl/profile_identity_provider.cc
+++ b/components/invalidation/impl/profile_identity_provider.cc
@@ -5,7 +5,6 @@
 #include "components/invalidation/impl/profile_identity_provider.h"
 
 #include "base/bind.h"
-#include "components/invalidation/public/active_account_access_token_fetcher_impl.h"
 
 namespace invalidation {
 
diff --git a/components/invalidation/public/BUILD.gn b/components/invalidation/public/BUILD.gn
index 3d55989..aa76520 100644
--- a/components/invalidation/public/BUILD.gn
+++ b/components/invalidation/public/BUILD.gn
@@ -8,8 +8,6 @@
     "ack_handle.h",
     "ack_handler.cc",
     "ack_handler.h",
-    "active_account_access_token_fetcher_impl.cc",
-    "active_account_access_token_fetcher_impl.h",
     "identity_provider.cc",
     "identity_provider.h",
     "invalidation.cc",
diff --git a/components/invalidation/public/active_account_access_token_fetcher_impl.cc b/components/invalidation/public/active_account_access_token_fetcher_impl.cc
deleted file mode 100644
index f6b6d30..0000000
--- a/components/invalidation/public/active_account_access_token_fetcher_impl.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2018 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 "components/invalidation/public/active_account_access_token_fetcher_impl.h"
-
-namespace invalidation {
-
-ActiveAccountAccessTokenFetcherImpl::ActiveAccountAccessTokenFetcherImpl(
-    const std::string& active_account_id,
-    const std::string& oauth_consumer_name,
-    OAuth2TokenService* token_service,
-    const OAuth2TokenService::ScopeSet& scopes,
-    ActiveAccountAccessTokenCallback callback)
-    : OAuth2TokenService::Consumer(oauth_consumer_name),
-      callback_(std::move(callback)) {
-  access_token_request_ =
-      token_service->StartRequest(active_account_id, scopes, this);
-}
-
-ActiveAccountAccessTokenFetcherImpl::~ActiveAccountAccessTokenFetcherImpl() {}
-
-void ActiveAccountAccessTokenFetcherImpl::OnGetTokenSuccess(
-    const OAuth2TokenService::Request* request,
-    const OAuth2AccessTokenConsumer::TokenResponse& token_response) {
-  HandleTokenRequestCompletion(request, GoogleServiceAuthError::AuthErrorNone(),
-                               token_response.access_token);
-}
-
-void ActiveAccountAccessTokenFetcherImpl::OnGetTokenFailure(
-    const OAuth2TokenService::Request* request,
-    const GoogleServiceAuthError& error) {
-  HandleTokenRequestCompletion(request, error, std::string());
-}
-
-void ActiveAccountAccessTokenFetcherImpl::HandleTokenRequestCompletion(
-    const OAuth2TokenService::Request* request,
-    const GoogleServiceAuthError& error,
-    const std::string& access_token) {
-  DCHECK_EQ(request, access_token_request_.get());
-  std::unique_ptr<OAuth2TokenService::Request> request_deleter(
-      std::move(access_token_request_));
-
-  std::move(callback_).Run(error, access_token);
-}
-
-}  // namespace invalidation
diff --git a/components/invalidation/public/active_account_access_token_fetcher_impl.h b/components/invalidation/public/active_account_access_token_fetcher_impl.h
deleted file mode 100644
index 7d6f16f..0000000
--- a/components/invalidation/public/active_account_access_token_fetcher_impl.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef COMPONENTS_INVALIDATION_PUBLIC_ACTIVE_ACCOUNT_ACCESS_TOKEN_FETCHER_IMPL_H_
-#define COMPONENTS_INVALIDATION_PUBLIC_ACTIVE_ACCOUNT_ACCESS_TOKEN_FETCHER_IMPL_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "base/time/time.h"
-#include "components/invalidation/public/identity_provider.h"
-#include "google_apis/gaia/oauth2_token_service.h"
-
-namespace invalidation {
-
-// An implementation of ActiveAccountAccessTokenFetcher that is backed by
-// OAuth2TokenService.
-// TODO(809452): Once ProfileIdentityProvider is converted to talk to
-// IdentityManager, this helper class should either be hidden inside
-// DeviceIdentityProvider or moved to live next to it.
-class ActiveAccountAccessTokenFetcherImpl
-    : public ActiveAccountAccessTokenFetcher,
-      OAuth2TokenService::Consumer {
- public:
-  ActiveAccountAccessTokenFetcherImpl(
-      const std::string& active_account_id,
-      const std::string& oauth_consumer_name,
-      OAuth2TokenService* token_service,
-      const OAuth2TokenService::ScopeSet& scopes,
-      ActiveAccountAccessTokenCallback callback);
-  ~ActiveAccountAccessTokenFetcherImpl() override;
-
- private:
-  // OAuth2TokenService::Consumer implementation.
-  void OnGetTokenSuccess(
-      const OAuth2TokenService::Request* request,
-      const OAuth2AccessTokenConsumer::TokenResponse& token_response) override;
-  void OnGetTokenFailure(const OAuth2TokenService::Request* request,
-                         const GoogleServiceAuthError& error) override;
-
-  // Invokes |callback_| with (|access_token|, |error|).
-  void HandleTokenRequestCompletion(const OAuth2TokenService::Request* request,
-                                    const GoogleServiceAuthError& error,
-                                    const std::string& access_token);
-
-  ActiveAccountAccessTokenCallback callback_;
-  std::unique_ptr<OAuth2TokenService::Request> access_token_request_;
-
-  DISALLOW_COPY_AND_ASSIGN(ActiveAccountAccessTokenFetcherImpl);
-};
-
-}  // namespace invalidation
-
-#endif  // COMPONENTS_INVALIDATION_PUBLIC_ACTIVE_ACCOUNT_ACCESS_TOKEN_FETCHER_IMPL_H_