Commit 0da8397c authored by Marc Treib's avatar Marc Treib Committed by Commit Bot

identity::MakePrimaryAccountAvailable: Take SigninManagerBase instead of Fake

Bug: 825190
Change-Id: I166418dc7691b572abdee1f337c938528142efca
Reviewed-on: https://chromium-review.googlesource.com/1007236
Commit-Queue: Marc Treib <treib@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550952}
parent be07b441
......@@ -24,16 +24,6 @@ class ChromeSessionManager;
// Necessary to declare this class as a friend.
class ProfileSyncServiceHarness;
// Necessary to declare functions in identity_test_utils.h as friends.
class FakeSigninManagerBase;
class FakeSigninManager;
#if defined(OS_CHROMEOS)
using SigninManagerForTest = FakeSigninManagerBase;
#else
using SigninManagerForTest = FakeSigninManager;
#endif // OS_CHROMEOS
namespace identity {
// Primary client-side interface to the Identity Service, encapsulating a
......@@ -115,7 +105,7 @@ class IdentityManager : public SigninManagerBase::Observer,
private:
// These clients need to call SetPrimaryAccountSynchronouslyForTests().
friend void MakePrimaryAccountAvailable(
SigninManagerForTest* signin_manager,
SigninManagerBase* signin_manager,
ProfileOAuth2TokenService* token_service,
IdentityManager* identity_manager,
const std::string& email);
......
......@@ -10,12 +10,6 @@
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "services/identity/public/cpp/identity_manager.h"
#if defined(OS_CHROMEOS)
using SigninManagerForTest = FakeSigninManagerBase;
#else
using SigninManagerForTest = FakeSigninManager;
#endif // OS_CHROMEOS
namespace identity {
namespace {
......@@ -65,7 +59,7 @@ void OneShotIdentityManagerObserver::OnPrimaryAccountCleared(
} // namespace
void MakePrimaryAccountAvailable(SigninManagerForTest* signin_manager,
void MakePrimaryAccountAvailable(SigninManagerBase* signin_manager,
ProfileOAuth2TokenService* token_service,
IdentityManager* identity_manager,
const std::string& email) {
......@@ -85,12 +79,18 @@ void MakePrimaryAccountAvailable(SigninManagerForTest* signin_manager,
OneShotIdentityManagerObserver signin_observer(identity_manager,
run_loop.QuitClosure());
signin_manager->StartSignInWithRefreshToken(
SigninManager* real_signin_manager =
SigninManager::FromSigninManagerBase(signin_manager);
// Note: It's important to pass base::DoNothing() (rather than a null
// callback) to make this work with both SigninManager and FakeSigninManager.
// If we would pass a null callback, then SigninManager would call
// CompletePendingSignin directly, but FakeSigninManager never does that.
real_signin_manager->StartSignInWithRefreshToken(
refresh_token, gaia_id, email, /*password=*/"",
SigninManager::OAuthTokenFetchedCallback());
signin_manager->CompletePendingSignin();
token_service->UpdateCredentials(signin_manager->GetAuthenticatedAccountId(),
refresh_token);
/*oauth_fetched_callback=*/base::DoNothing());
real_signin_manager->CompletePendingSignin();
token_service->UpdateCredentials(
real_signin_manager->GetAuthenticatedAccountId(), refresh_token);
run_loop.Run();
#endif
......
......@@ -12,6 +12,7 @@
class FakeSigninManagerBase;
class FakeSigninManager;
class ProfileOAuth2TokenService;
class SigninManagerBase;
#if defined(OS_CHROMEOS)
using SigninManagerForTest = FakeSigninManagerBase;
......@@ -36,7 +37,7 @@ class IdentityManager;
// non-ChromeOS, results in the firing of the IdentityManager and SigninManager
// callbacks for signin success. Blocks until the primary account is available.
// NOTE: See disclaimer at top of file re: direct usage.
void MakePrimaryAccountAvailable(SigninManagerForTest* signin_manager,
void MakePrimaryAccountAvailable(SigninManagerBase* signin_manager,
ProfileOAuth2TokenService* token_service,
IdentityManager* identity_manager,
const std::string& email);
......@@ -44,6 +45,9 @@ void MakePrimaryAccountAvailable(SigninManagerForTest* signin_manager,
// Clears the primary account. On non-ChromeOS, results in the firing of the
// IdentityManager and SigninManager callbacks for signout. Blocks until the
// primary account is cleared.
// Note that this function requires FakeSigninManager, as it internally invokes
// functionality of the fake. If a use case emerges for invoking this
// functionality with a production SigninManager, contact blundell@chromium.org.
// NOTE: See disclaimer at top of file re: direct usage.
void ClearPrimaryAccount(SigninManagerForTest* signin_manager,
IdentityManager* identity_manager);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment