diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/signin/chrome_signin_client.cc index 376f4814fbe8f0..37a32295b38cc5 100644 --- a/chrome/browser/signin/chrome_signin_client.cc +++ b/chrome/browser/signin/chrome_signin_client.cc @@ -301,10 +301,9 @@ void ChromeSigninClient::DelayNetworkCall(base::OnceClosure callback) { std::unique_ptr ChromeSigninClient::CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) { + gaia::GaiaSource source) { return std::make_unique(consumer, source, - url_loader_factory); + GetURLLoaderFactory()); } void ChromeSigninClient::VerifySyncToken() { diff --git a/chrome/browser/signin/chrome_signin_client.h b/chrome/browser/signin/chrome_signin_client.h index f225d5403b65de..93d4eded04dba3 100644 --- a/chrome/browser/signin/chrome_signin_client.h +++ b/chrome/browser/signin/chrome_signin_client.h @@ -62,9 +62,7 @@ class ChromeSigninClient void DelayNetworkCall(base::OnceClosure callback) override; std::unique_ptr CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) - override; + gaia::GaiaSource source) override; // Returns a string describing the chrome version environment. Version format: // () diff --git a/chrome/browser/signin/dice_response_handler.cc b/chrome/browser/signin/dice_response_handler.cc index ea2ebd4babc43c..e1275238e5635c 100644 --- a/chrome/browser/signin/dice_response_handler.cc +++ b/chrome/browser/signin/dice_response_handler.cc @@ -176,8 +176,8 @@ DiceResponseHandler::DiceTokenFetcher::DiceTokenFetcher( DCHECK(dice_response_handler_); account_reconcilor_lock_ = std::make_unique(account_reconcilor); - gaia_auth_fetcher_ = signin_client->CreateGaiaAuthFetcher( - this, gaia::GaiaSource::kChrome, signin_client->GetURLLoaderFactory()); + gaia_auth_fetcher_ = + signin_client->CreateGaiaAuthFetcher(this, gaia::GaiaSource::kChrome); VLOG(1) << "Start fetching token for account: " << email; gaia_auth_fetcher_->StartAuthCodeForOAuth2TokenExchange(authorization_code_); base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( diff --git a/chrome/browser/signin/dice_response_handler_unittest.cc b/chrome/browser/signin/dice_response_handler_unittest.cc index 9c035942f72c52..47876e32a230cf 100644 --- a/chrome/browser/signin/dice_response_handler_unittest.cc +++ b/chrome/browser/signin/dice_response_handler_unittest.cc @@ -52,17 +52,14 @@ class DiceTestSigninClient : public TestSigninClient, public GaiaAuthConsumer { std::unique_ptr CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) - override { + gaia::GaiaSource source) override { DCHECK(!consumer_ || (consumer_ == consumer)); consumer_ = consumer; // Pass |this| as a dummy consumer to CreateGaiaAuthFetcher(). // Since DiceTestSigninClient does not overrides any consumer method, // everything will be dropped on the floor. - return TestSigninClient::CreateGaiaAuthFetcher(this, source, - url_loader_factory); + return TestSigninClient::CreateGaiaAuthFetcher(this, source); } GaiaAuthConsumer* consumer_; diff --git a/components/signin/core/browser/account_reconcilor_unittest.cc b/components/signin/core/browser/account_reconcilor_unittest.cc index fd6c3f3a0f390a..a1d22a5f74ed73 100644 --- a/components/signin/core/browser/account_reconcilor_unittest.cc +++ b/components/signin/core/browser/account_reconcilor_unittest.cc @@ -328,8 +328,8 @@ INSTANTIATE_TEST_SUITE_P(Dice_Mirror, AccountReconcilorTest::AccountReconcilorTest() : account_consistency_(signin::AccountConsistencyMethod::kDisabled), - test_signin_client_(&pref_service_), - identity_test_env_(&test_url_loader_factory_, + test_signin_client_(&pref_service_, &test_url_loader_factory_), + identity_test_env_(/*test_url_loader_factory=*/nullptr, &pref_service_, account_consistency_, &test_signin_client_) { diff --git a/components/signin/core/browser/gaia_cookie_manager_service.cc b/components/signin/core/browser/gaia_cookie_manager_service.cc index 46bf3592eccd77..50df29db16b6ec 100644 --- a/components/signin/core/browser/gaia_cookie_manager_service.cc +++ b/components/signin/core/browser/gaia_cookie_manager_service.cc @@ -259,7 +259,7 @@ void GaiaCookieManagerService::ExternalCcResultFetcher::Start() { CleanupTransientState(); results_.clear(); helper_->gaia_auth_fetcher_ = helper_->signin_client_->CreateGaiaAuthFetcher( - this, gaia::GaiaSource::kChrome, helper_->GetURLLoaderFactory()); + this, gaia::GaiaSource::kChrome); helper_->gaia_auth_fetcher_->StartGetCheckConnectionInfo(); // Some fetches may timeout. Start a timer to decide when the result fetcher @@ -451,20 +451,8 @@ void GaiaCookieManagerService::ExternalCcResultFetcher:: GaiaCookieManagerService::GaiaCookieManagerService( OAuth2TokenService* token_service, SigninClient* signin_client) - : GaiaCookieManagerService( - token_service, - signin_client, - base::BindRepeating(&SigninClient::GetURLLoaderFactory, - base::Unretained(signin_client))) {} - -GaiaCookieManagerService::GaiaCookieManagerService( - OAuth2TokenService* token_service, - SigninClient* signin_client, - base::RepeatingCallback()> - shared_url_loader_factory_getter) : token_service_(token_service), signin_client_(signin_client), - shared_url_loader_factory_getter_(shared_url_loader_factory_getter), external_cc_result_fetcher_(this), fetcher_backoff_(&kBackoffPolicy), fetcher_retries_(0), @@ -684,7 +672,7 @@ void GaiaCookieManagerService::CancelAll() { scoped_refptr GaiaCookieManagerService::GetURLLoaderFactory() { - return shared_url_loader_factory_getter_.Run(); + return signin_client_->GetURLLoaderFactory(); } void GaiaCookieManagerService::MarkListAccountsStale() { @@ -939,18 +927,17 @@ void GaiaCookieManagerService::StartFetchingUbertoken() { base::Unretained(this)), base::BindRepeating( [](SigninClient* client, - scoped_refptr url_loader, GaiaAuthConsumer* consumer) -> std::unique_ptr { - return client->CreateGaiaAuthFetcher( - consumer, gaia::GaiaSource::kChrome, url_loader); + return client->CreateGaiaAuthFetcher(consumer, + gaia::GaiaSource::kChrome); }, - base::Unretained(signin_client_), GetURLLoaderFactory())); + base::Unretained(signin_client_))); } void GaiaCookieManagerService::StartFetchingMergeSession() { DCHECK(!uber_token_.empty()); - gaia_auth_fetcher_ = signin_client_->CreateGaiaAuthFetcher( - this, requests_.front().source(), GetURLLoaderFactory()); + gaia_auth_fetcher_ = + signin_client_->CreateGaiaAuthFetcher(this, requests_.front().source()); gaia_auth_fetcher_->StartMergeSession( uber_token_, external_cc_result_fetcher_.GetExternalCcResult()); @@ -967,15 +954,15 @@ void GaiaCookieManagerService::StartGaiaLogOut() { void GaiaCookieManagerService::StartFetchingLogOut() { RecordLogoutRequestState(LogoutRequestState::kStarted); - gaia_auth_fetcher_ = signin_client_->CreateGaiaAuthFetcher( - this, requests_.front().source(), GetURLLoaderFactory()); + gaia_auth_fetcher_ = + signin_client_->CreateGaiaAuthFetcher(this, requests_.front().source()); gaia_auth_fetcher_->StartLogOut(); } void GaiaCookieManagerService::StartFetchingListAccounts() { VLOG(1) << "GaiaCookieManagerService::ListAccounts"; - gaia_auth_fetcher_ = signin_client_->CreateGaiaAuthFetcher( - this, requests_.front().source(), GetURLLoaderFactory()); + gaia_auth_fetcher_ = + signin_client_->CreateGaiaAuthFetcher(this, requests_.front().source()); gaia_auth_fetcher_->StartListAccounts(); } diff --git a/components/signin/core/browser/gaia_cookie_manager_service.h b/components/signin/core/browser/gaia_cookie_manager_service.h index 6c361383afb812..13aeee10cb0835 100644 --- a/components/signin/core/browser/gaia_cookie_manager_service.h +++ b/components/signin/core/browser/gaia_cookie_manager_service.h @@ -228,19 +228,6 @@ class GaiaCookieManagerService : public GaiaAuthConsumer, GaiaCookieManagerService(OAuth2TokenService* token_service, SigninClient* signin_client); - // Creates a GaiaCookieManagerService that uses the provided - // |shared_url_loader_factory_getter| to determine the SharedUrlLoaderFactory - // used for cookie-related requests. - // Note: SharedUrlLoaderFactory is passed via callback, so that if the - // callback has side-effects (e.g. network initialization), they do not occur - // until the first time GaiaCookieManagerService::GetSharedUrlLoaderFactory is - // called. - GaiaCookieManagerService( - OAuth2TokenService* token_service, - SigninClient* signin_client, - base::RepeatingCallback()> - shared_url_loader_factory_getter); - ~GaiaCookieManagerService() override; void InitCookieListener(); @@ -373,8 +360,6 @@ class GaiaCookieManagerService : public GaiaAuthConsumer, OAuth2TokenService* token_service_; SigninClient* signin_client_; - base::RepeatingCallback()> - shared_url_loader_factory_getter_; std::unique_ptr gaia_auth_fetcher_; std::unique_ptr uber_token_fetcher_; ExternalCcResultFetcher external_cc_result_fetcher_; diff --git a/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc b/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc index 727be0c555a195..7ce329e826dbea 100644 --- a/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc +++ b/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc @@ -96,11 +96,7 @@ class InstrumentedGaiaCookieManagerService : public GaiaCookieManagerService { public: InstrumentedGaiaCookieManagerService(OAuth2TokenService* token_service, SigninClient* signin_client) - : GaiaCookieManagerService( - token_service, - signin_client, - base::BindRepeating(&SigninClient::GetURLLoaderFactory, - base::Unretained(signin_client))) { + : GaiaCookieManagerService(token_service, signin_client) { total++; } diff --git a/components/signin/core/browser/oauth_multilogin_helper.cc b/components/signin/core/browser/oauth_multilogin_helper.cc index 0d43d8a6d37ce2..230678cbd6d03c 100644 --- a/components/signin/core/browser/oauth_multilogin_helper.cc +++ b/components/signin/core/browser/oauth_multilogin_helper.cc @@ -100,8 +100,8 @@ void OAuthMultiloginHelper::OnAccessTokensFailure( void OAuthMultiloginHelper::StartFetchingMultiLogin() { DCHECK_EQ(token_id_pairs_.size(), account_ids_.size()); - gaia_auth_fetcher_ = signin_client_->CreateGaiaAuthFetcher( - this, gaia::GaiaSource::kChrome, signin_client_->GetURLLoaderFactory()); + gaia_auth_fetcher_ = + signin_client_->CreateGaiaAuthFetcher(this, gaia::GaiaSource::kChrome); gaia_auth_fetcher_->StartOAuthMultilogin(token_id_pairs_); } diff --git a/components/signin/core/browser/signin_client.h b/components/signin/core/browser/signin_client.h index e49465d46d148b..8587e23de6cef2 100644 --- a/components/signin/core/browser/signin_client.h +++ b/components/signin/core/browser/signin_client.h @@ -95,8 +95,7 @@ class SigninClient : public KeyedService { // Creates a new platform-specific GaiaAuthFetcher. virtual std::unique_ptr CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) = 0; + gaia::GaiaSource source) = 0; // Schedules migration to happen at next startup. virtual void SetReadyForDiceMigration(bool is_ready) {} diff --git a/components/signin/core/browser/test_signin_client.cc b/components/signin/core/browser/test_signin_client.cc index 3f945fea727598..a870fe44eb941f 100644 --- a/components/signin/core/browser/test_signin_client.cc +++ b/components/signin/core/browser/test_signin_client.cc @@ -12,8 +12,11 @@ #include "services/network/test/test_cookie_manager.h" #include "testing/gtest/include/gtest/gtest.h" -TestSigninClient::TestSigninClient(PrefService* pref_service) - : pref_service_(pref_service), +TestSigninClient::TestSigninClient( + PrefService* pref_service, + network::TestURLLoaderFactory* test_url_loader_factory) + : test_url_loader_factory_(test_url_loader_factory), + pref_service_(pref_service), are_signin_cookies_allowed_(true), network_calls_delayed_(false), is_signout_allowed_(true), @@ -37,7 +40,7 @@ void TestSigninClient::PreSignOut( scoped_refptr TestSigninClient::GetURLLoaderFactory() { - return test_url_loader_factory_.GetSafeWeakWrapper(); + return test_url_loader_factory()->GetSafeWeakWrapper(); } network::mojom::CookieManager* TestSigninClient::GetCookieManager() { @@ -46,6 +49,25 @@ network::mojom::CookieManager* TestSigninClient::GetCookieManager() { return cookie_manager_.get(); } +network::TestURLLoaderFactory* TestSigninClient::test_url_loader_factory() { + if (test_url_loader_factory_) + return test_url_loader_factory_; + + if (!default_test_url_loader_factory_) { + default_test_url_loader_factory_ = + std::make_unique(); + } + + return default_test_url_loader_factory_.get(); +} + +void TestSigninClient::OverrideTestUrlLoaderFactory( + network::TestURLLoaderFactory* factory) { + DCHECK(!default_test_url_loader_factory_); + DCHECK(!test_url_loader_factory_); + test_url_loader_factory_ = factory; +} + std::string TestSigninClient::GetProductVersion() { return ""; } void TestSigninClient::SetNetworkCallsDelayed(bool value) { @@ -92,10 +114,9 @@ void TestSigninClient::DelayNetworkCall(base::OnceClosure callback) { std::unique_ptr TestSigninClient::CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) { + gaia::GaiaSource source) { return std::make_unique(consumer, source, - url_loader_factory); + GetURLLoaderFactory()); } void TestSigninClient::PreGaiaLogout(base::OnceClosure callback) { diff --git a/components/signin/core/browser/test_signin_client.h b/components/signin/core/browser/test_signin_client.h index ac713d6bdf296c..5fafc514605523 100644 --- a/components/signin/core/browser/test_signin_client.h +++ b/components/signin/core/browser/test_signin_client.h @@ -27,7 +27,9 @@ class PrefService; // part of its interface. class TestSigninClient : public SigninClient { public: - TestSigninClient(PrefService* pref_service); + TestSigninClient( + PrefService* pref_service, + network::TestURLLoaderFactory* test_url_loader_factory = nullptr); ~TestSigninClient() override; // SigninClient implementation that is specialized for unit tests. @@ -57,9 +59,12 @@ class TestSigninClient : public SigninClient { cookie_manager_ = std::move(cookie_manager); } - network::TestURLLoaderFactory* test_url_loader_factory() { - return &test_url_loader_factory_; - } + // Returns |test_url_loader_factory_| if it is specified. Otherwise, lazily + // creates a default factory and returns it. + network::TestURLLoaderFactory* test_url_loader_factory(); + + // Pass a TestURLLoader factory to use instead of the default one. + void OverrideTestUrlLoaderFactory(network::TestURLLoaderFactory* factory); void set_are_signin_cookies_allowed(bool value) { are_signin_cookies_allowed_ = value; @@ -87,14 +92,14 @@ class TestSigninClient : public SigninClient { void DelayNetworkCall(base::OnceClosure callback) override; std::unique_ptr CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) - override; + gaia::GaiaSource source) override; void PreGaiaLogout(base::OnceClosure callback) override; void SetReadyForDiceMigration(bool ready) override; private: - network::TestURLLoaderFactory test_url_loader_factory_; + std::unique_ptr + default_test_url_loader_factory_; + network::TestURLLoaderFactory* test_url_loader_factory_; PrefService* pref_service_; std::unique_ptr cookie_manager_; diff --git a/components/signin/ios/browser/account_consistency_service_unittest.mm b/components/signin/ios/browser/account_consistency_service_unittest.mm index 6afb87dda2afc2..0a2e3d0648f758 100644 --- a/components/signin/ios/browser/account_consistency_service_unittest.mm +++ b/components/signin/ios/browser/account_consistency_service_unittest.mm @@ -130,9 +130,10 @@ void SetUp() override { HostContentSettingsMap::RegisterProfilePrefs(prefs_.registry()); web_view_load_expection_count_ = 0; - signin_client_.reset(new TestSigninClient(&prefs_)); + signin_client_.reset( + new TestSigninClient(&prefs_, &test_url_loader_factory_)); identity_test_env_.reset(new identity::IdentityTestEnvironment( - &test_url_loader_factory_, &prefs_, + /*test_url_loader_factory=*/nullptr, &prefs_, signin::AccountConsistencyMethod::kDisabled, signin_client_.get())); settings_map_ = new HostContentSettingsMap( &prefs_, false /* is_off_the_record */, false /* store_last_modified */, diff --git a/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc b/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc index e693366b0961d6..f782dceb5eb7d1 100644 --- a/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc +++ b/ios/chrome/browser/signin/identity_test_environment_chrome_browser_state_adaptor.cc @@ -110,8 +110,7 @@ std::unique_ptr IdentityTestEnvironmentChromeBrowserStateAdaptor:: return identity::IdentityTestEnvironment::BuildIdentityManagerForTests( SigninClientFactory::GetForBrowserState(chrome_browser_state), chrome_browser_state->GetPrefs(), base::FilePath(), - signin::AccountConsistencyMethod::kMirror, - /*test_url_loader_factory=*/nullptr, std::move(extra_params)); + signin::AccountConsistencyMethod::kMirror, std::move(extra_params)); } // static diff --git a/ios/chrome/browser/signin/ios_chrome_signin_client.h b/ios/chrome/browser/signin/ios_chrome_signin_client.h index ddb9fd0e5cc766..cdcb9f7fc1dc4c 100644 --- a/ios/chrome/browser/signin/ios_chrome_signin_client.h +++ b/ios/chrome/browser/signin/ios_chrome_signin_client.h @@ -35,9 +35,7 @@ class IOSChromeSigninClient : public SigninClient { std::string GetProductVersion() override; std::unique_ptr CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) - override; + gaia::GaiaSource source) override; void PreGaiaLogout(base::OnceClosure callback) override; PrefService* GetPrefs() override; scoped_refptr GetURLLoaderFactory() override; diff --git a/ios/chrome/browser/signin/ios_chrome_signin_client.mm b/ios/chrome/browser/signin/ios_chrome_signin_client.mm index f9900765004413..1fa899fe91bdc2 100644 --- a/ios/chrome/browser/signin/ios_chrome_signin_client.mm +++ b/ios/chrome/browser/signin/ios_chrome_signin_client.mm @@ -95,10 +95,9 @@ std::unique_ptr IOSChromeSigninClient::CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) { + gaia::GaiaSource source) { return std::make_unique( - consumer, source, url_loader_factory, browser_state_); + consumer, source, GetURLLoaderFactory(), browser_state_); } void IOSChromeSigninClient::PreGaiaLogout(base::OnceClosure callback) { diff --git a/ios/web_view/internal/signin/ios_web_view_signin_client.h b/ios/web_view/internal/signin/ios_web_view_signin_client.h index 3e95a9ddfdbd89..e447fb480fe93b 100644 --- a/ios/web_view/internal/signin/ios_web_view_signin_client.h +++ b/ios/web_view/internal/signin/ios_web_view_signin_client.h @@ -52,9 +52,7 @@ class IOSWebViewSigninClient : public SigninClient { void DelayNetworkCall(base::OnceClosure callback) override; std::unique_ptr CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) - override; + gaia::GaiaSource source) override; // CWVSyncController setter/getter. void SetSyncController(CWVSyncController* sync_controller); diff --git a/ios/web_view/internal/signin/ios_web_view_signin_client.mm b/ios/web_view/internal/signin/ios_web_view_signin_client.mm index 2e22b4f4170521..eb237084f99a44 100644 --- a/ios/web_view/internal/signin/ios_web_view_signin_client.mm +++ b/ios/web_view/internal/signin/ios_web_view_signin_client.mm @@ -95,10 +95,9 @@ std::unique_ptr IOSWebViewSigninClient::CreateGaiaAuthFetcher( GaiaAuthConsumer* consumer, - gaia::GaiaSource source, - scoped_refptr url_loader_factory) { + gaia::GaiaSource source) { return std::make_unique(consumer, source, - url_loader_factory); + GetURLLoaderFactory()); } void IOSWebViewSigninClient::SetSyncController( diff --git a/services/identity/public/cpp/accounts_cookie_mutator_unittest.cc b/services/identity/public/cpp/accounts_cookie_mutator_unittest.cc index 68af7ac4f1995c..d4033f6827f01f 100644 --- a/services/identity/public/cpp/accounts_cookie_mutator_unittest.cc +++ b/services/identity/public/cpp/accounts_cookie_mutator_unittest.cc @@ -63,7 +63,7 @@ class AccountsCookieMutatorTest : public testing::Test { public: AccountsCookieMutatorTest() : test_signin_client_(&prefs_), - identity_test_env_(test_url_loader_factory(), + identity_test_env_(/*test_url_loader_factory=*/nullptr, &prefs_, signin::AccountConsistencyMethod::kDisabled, &test_signin_client_) {} diff --git a/services/identity/public/cpp/identity_manager_unittest.cc b/services/identity/public/cpp/identity_manager_unittest.cc index d1736fbb48c648..bd196ec739fe4b 100644 --- a/services/identity/public/cpp/identity_manager_unittest.cc +++ b/services/identity/public/cpp/identity_manager_unittest.cc @@ -212,7 +212,8 @@ class TestIdentityManagerDiagnosticsObserver class IdentityManagerTest : public testing::Test { protected: - IdentityManagerTest() : signin_client_(&pref_service_) { + IdentityManagerTest() + : signin_client_(&pref_service_, &test_url_loader_factory_) { IdentityManager::RegisterProfilePrefs(pref_service_.registry()); IdentityManager::RegisterLocalStatePrefs(pref_service_.registry()); @@ -280,14 +281,8 @@ class IdentityManagerTest : public testing::Test { std::make_unique(&pref_service_); auto gaia_cookie_manager_service = - std::make_unique( - token_service.get(), &signin_client_, - base::BindRepeating( - [](network::TestURLLoaderFactory* test_url_loader_factory) - -> scoped_refptr { - return test_url_loader_factory->GetSafeWeakWrapper(); - }, - test_url_loader_factory())); + std::make_unique(token_service.get(), + &signin_client_); auto account_tracker_service = std::make_unique(); account_tracker_service->Initialize(&pref_service_, base::FilePath()); @@ -375,8 +370,8 @@ class IdentityManagerTest : public testing::Test { private: base::MessageLoop message_loop_; sync_preferences::TestingPrefServiceSyncable pref_service_; - TestSigninClient signin_client_; network::TestURLLoaderFactory test_url_loader_factory_; + TestSigninClient signin_client_; std::unique_ptr identity_manager_; std::unique_ptr identity_manager_observer_; std::unique_ptr diff --git a/services/identity/public/cpp/identity_test_environment.cc b/services/identity/public/cpp/identity_test_environment.cc index 3c47a494fd85b9..177e7e0ec29623 100644 --- a/services/identity/public/cpp/identity_test_environment.cc +++ b/services/identity/public/cpp/identity_test_environment.cc @@ -111,7 +111,9 @@ IdentityTestEnvironment::IdentityTestEnvironment( pref_service, test_signin_client), test_url_loader_factory, - account_consistency) {} + account_consistency) { + DCHECK(!test_url_loader_factory || !test_signin_client); +} IdentityTestEnvironment::IdentityTestEnvironment( IdentityManager* identity_manager) @@ -137,19 +139,21 @@ IdentityTestEnvironment::IdentityTestEnvironment( std::unique_ptr dependencies_owner, network::TestURLLoaderFactory* test_url_loader_factory, signin::AccountConsistencyMethod account_consistency) - : test_url_loader_factory_(test_url_loader_factory), - weak_ptr_factory_(this) { + : weak_ptr_factory_(this) { dependencies_owner_ = std::move(dependencies_owner); TestSigninClient* test_signin_client = dependencies_owner_->signin_client(); + if (test_url_loader_factory) + test_signin_client->OverrideTestUrlLoaderFactory(test_url_loader_factory); + sync_preferences::TestingPrefServiceSyncable* test_pref_service = dependencies_owner_->pref_service(); IdentityManager::RegisterProfilePrefs(test_pref_service->registry()); IdentityManager::RegisterLocalStatePrefs(test_pref_service->registry()); - owned_identity_manager_ = BuildIdentityManagerForTests( - test_signin_client, test_pref_service, base::FilePath(), - account_consistency, test_url_loader_factory); + owned_identity_manager_ = + BuildIdentityManagerForTests(test_signin_client, test_pref_service, + base::FilePath(), account_consistency); Initialize(); } @@ -168,7 +172,6 @@ IdentityTestEnvironment::BuildIdentityManagerForTests( PrefService* pref_service, base::FilePath user_data_dir, signin::AccountConsistencyMethod account_consistency, - network::TestURLLoaderFactory* test_url_loader_factory, ExtraParams extra_params) { auto account_tracker_service = std::make_unique(); account_tracker_service->Initialize(pref_service, user_data_dir); @@ -209,19 +212,8 @@ IdentityTestEnvironment::BuildIdentityManagerForTests( signin_manager->Initialize(pref_service); std::unique_ptr gaia_cookie_manager_service; - if (test_url_loader_factory != nullptr) { - gaia_cookie_manager_service = std::make_unique( - token_service.get(), signin_client, - base::BindRepeating( - [](network::TestURLLoaderFactory* test_url_loader_factory) - -> scoped_refptr { - return test_url_loader_factory->GetSafeWeakWrapper(); - }, - test_url_loader_factory)); - } else { gaia_cookie_manager_service = std::make_unique( token_service.get(), signin_client); - } std::unique_ptr primary_account_mutator; std::unique_ptr accounts_mutator; @@ -328,11 +320,10 @@ void IdentityTestEnvironment::UpdatePersistentErrorOfRefreshTokenForAccount( void IdentityTestEnvironment::SetCookieAccounts( const std::vector& cookie_accounts) { - DCHECK(test_url_loader_factory_) - << "IdentityTestEnvironment constructor must have been passed a " - "test_url_loader_factory in order to use this method."; - identity::SetCookieAccounts(identity_manager(), test_url_loader_factory_, - cookie_accounts); + identity::SetCookieAccounts( + identity_manager(), + dependencies_owner_->signin_client()->test_url_loader_factory(), + cookie_accounts); } void IdentityTestEnvironment::SetAutomaticIssueOfAccessTokens(bool grant) { diff --git a/services/identity/public/cpp/identity_test_environment.h b/services/identity/public/cpp/identity_test_environment.h index fbbc1cbdb2f419..2f726f39a10e59 100644 --- a/services/identity/public/cpp/identity_test_environment.h +++ b/services/identity/public/cpp/identity_test_environment.h @@ -66,8 +66,14 @@ class IdentityTestEnvironment : public IdentityManager::DiagnosticsObserver { // dependencies directly (namely AccountTrackerService, PO2TS), but still be // able to tweak preferences on demand. // - // Last, this constructor can take an optional parameter |account_consistency| - // as parameter, to specify the account consistency policy that will be used. + // |account_consistency| specifies the account consistency policy that will be + // used. + // + // A specific TestSigninClient instance can be passed optionally. If it is + // null, the test environment will automatically build one internally. + // + // Note: at least one of |test_url_loader_factory| and |test_signin_client| + // must be nulltpr. They cannot both be specified at the same time. IdentityTestEnvironment( network::TestURLLoaderFactory* test_url_loader_factory = nullptr, sync_preferences::TestingPrefServiceSyncable* pref_service = nullptr, @@ -334,10 +340,6 @@ class IdentityTestEnvironment : public IdentityManager::DiagnosticsObserver { // Owner of all dependencies that don't belong to IdentityManager. std::unique_ptr dependencies_owner_; - // Used to set fake responses for cookie-related requests. - // This can be null if no TestURLLoaderFactory was passed via the constructor. - network::TestURLLoaderFactory* test_url_loader_factory_ = nullptr; - // This will be null if a TestSigninClient was provided to // IdentityTestEnvironment's constructor. std::unique_ptr owned_signin_client_; @@ -377,7 +379,6 @@ class IdentityTestEnvironment : public IdentityManager::DiagnosticsObserver { base::FilePath user_data_dir, signin::AccountConsistencyMethod account_consistency = signin::AccountConsistencyMethod::kDisabled, - network::TestURLLoaderFactory* test_url_loader_factory = nullptr, ExtraParams extra_params = {}); // Shared constructor initialization logic.