Don't depend on //content from MutableProfileOAuth2TokenServiceDelegate
Remove the dependency from the production file by having a reference to
the NetworkConnectionTracker in MutableProfileOAuth2TokenServiceDelegate,
and from the associated unit test by relying on ScopedTaskEnvironment.
Bug: 922555
Change-Id: I7e5885cb41007ec5ee72f562b9cca48f307338f0
Reviewed-on: https://chromium-review.googlesource.com/c/1424880
Commit-Queue: Mario Sanchez Prada <mario@igalia.com>
Reviewed-by: Mihai Sardarescu <msarda@chromium.org>
Cr-Commit-Position: refs/heads/master@{#624772}
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc
index 2a88edb..bfbaaa7 100644
--- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc
+++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc
@@ -22,7 +22,6 @@
#include "components/signin/core/browser/signin_pref_names.h"
#include "components/signin/core/browser/webdata/token_web_data.h"
#include "components/webdata/common/web_data_service_base.h"
-#include "content/public/browser/network_service_instance.h"
#include "google_apis/gaia/gaia_auth_fetcher.h"
#include "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/gaia_constants.h"
@@ -329,6 +328,7 @@
MutableProfileOAuth2TokenServiceDelegate(
SigninClient* client,
AccountTrackerService* account_tracker_service,
+ network::NetworkConnectionTracker* network_connection_tracker,
scoped_refptr<TokenWebData> token_web_data,
signin::AccountConsistencyMethod account_consistency,
bool revoke_all_tokens_on_load,
@@ -339,6 +339,7 @@
backoff_error_(GoogleServiceAuthError::NONE),
client_(client),
account_tracker_service_(account_tracker_service),
+ network_connection_tracker_(network_connection_tracker),
token_web_data_(token_web_data),
account_consistency_(account_consistency),
revoke_all_tokens_on_load_(revoke_all_tokens_on_load),
@@ -347,6 +348,7 @@
VLOG(1) << "MutablePO2TS::MutablePO2TS";
DCHECK(client);
DCHECK(account_tracker_service_);
+ DCHECK(network_connection_tracker_);
// It's okay to fill the backoff policy after being used in construction.
backoff_policy_.num_errors_to_ignore = 0;
backoff_policy_.initial_delay_ms = 1000;
@@ -355,14 +357,14 @@
backoff_policy_.maximum_backoff_ms = 15 * 60 * 1000;
backoff_policy_.entry_lifetime_ms = -1;
backoff_policy_.always_use_initial_delay = false;
- content::GetNetworkConnectionTracker()->AddNetworkConnectionObserver(this);
+ network_connection_tracker_->AddNetworkConnectionObserver(this);
}
MutableProfileOAuth2TokenServiceDelegate::
~MutableProfileOAuth2TokenServiceDelegate() {
VLOG(1) << "MutablePO2TS::~MutablePO2TS";
DCHECK(server_revokes_.empty());
- content::GetNetworkConnectionTracker()->RemoveNetworkConnectionObserver(this);
+ network_connection_tracker_->RemoveNetworkConnectionObserver(this);
}
// static
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h
index f9c0583..403ae47 100644
--- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h
+++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h
@@ -37,6 +37,7 @@
MutableProfileOAuth2TokenServiceDelegate(
SigninClient* client,
AccountTrackerService* account_tracker_service,
+ network::NetworkConnectionTracker* network_connection_tracker,
scoped_refptr<TokenWebData> token_web_data,
signin::AccountConsistencyMethod account_consistency,
bool revoke_all_tokens_on_load,
@@ -213,6 +214,7 @@
SigninClient* client_;
AccountTrackerService* account_tracker_service_;
+ network::NetworkConnectionTracker* network_connection_tracker_;
scoped_refptr<TokenWebData> token_web_data_;
signin::AccountConsistencyMethod account_consistency_;
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc
index ea321792..df6e89c 100644
--- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc
+++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate_unittest.cc
@@ -14,6 +14,7 @@
#include "base/macros.h"
#include "base/run_loop.h"
#include "base/test/metrics/histogram_tester.h"
+#include "base/test/scoped_task_environment.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "build/build_config.h"
@@ -33,7 +34,6 @@
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "components/webdata/common/web_data_service_base.h"
#include "components/webdata/common/web_database_service.h"
-#include "content/public/test/test_browser_thread_bundle.h"
#include "google_apis/gaia/fake_oauth2_token_service_delegate.h"
#include "google_apis/gaia/gaia_constants.h"
#include "google_apis/gaia/gaia_urls.h"
@@ -42,6 +42,7 @@
#include "google_apis/gaia/oauth2_token_service_test_util.h"
#include "net/http/http_status_code.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/test/test_network_connection_tracker.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -85,7 +86,10 @@
public WebDataServiceConsumer {
public:
MutableProfileOAuth2TokenServiceDelegateTest()
- : access_token_success_count_(0),
+ : scoped_task_environment_(
+ base::test::ScopedTaskEnvironment::MainThreadType::UI,
+ base::test::ScopedTaskEnvironment::ExecutionMode::ASYNC),
+ access_token_success_count_(0),
access_token_failure_count_(0),
access_token_failure_(GoogleServiceAuthError::NONE),
token_available_count_(0),
@@ -144,7 +148,8 @@
CreateOAuth2ServiceDelegate(
signin::AccountConsistencyMethod account_consistency) {
return std::make_unique<MutableProfileOAuth2TokenServiceDelegate>(
- client_.get(), &account_tracker_service_, token_web_data_,
+ client_.get(), &account_tracker_service_,
+ network::TestNetworkConnectionTracker::GetInstance(), token_web_data_,
account_consistency, revoke_all_tokens_on_load_,
true /* can_revoke_credantials */,
MutableProfileOAuth2TokenServiceDelegate::FixRequestErrorCallback());
@@ -250,7 +255,7 @@
}
protected:
- content::TestBrowserThreadBundle thread_bundle_;
+ base::test::ScopedTaskEnvironment scoped_task_environment_;
base::ScopedTempDir temp_dir_;
std::unique_ptr<TestSigninClient> client_;
std::unique_ptr<MutableProfileOAuth2TokenServiceDelegate>
diff --git a/chrome/browser/signin/profile_oauth2_token_service_factory.cc b/chrome/browser/signin/profile_oauth2_token_service_factory.cc
index d8e0af9d..54b60556 100644
--- a/chrome/browser/signin/profile_oauth2_token_service_factory.cc
+++ b/chrome/browser/signin/profile_oauth2_token_service_factory.cc
@@ -20,6 +20,7 @@
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/signin/core/browser/device_id_helper.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
+#include "content/public/browser/network_service_instance.h"
#if defined(OS_ANDROID)
#include "components/signin/core/browser/oauth2_token_service_delegate_android.h"
@@ -106,6 +107,7 @@
return std::make_unique<MutableProfileOAuth2TokenServiceDelegate>(
ChromeSigninClientFactory::GetInstance()->GetForProfile(profile),
AccountTrackerServiceFactory::GetInstance()->GetForProfile(profile),
+ content::GetNetworkConnectionTracker(),
WebDataServiceFactory::GetTokenWebDataForProfile(
profile, ServiceAccessType::EXPLICIT_ACCESS),
account_consistency, revoke_all_tokens_on_load,