Commit 14acac2a authored by Andrei Salavei's avatar Andrei Salavei Committed by Commit Bot

CrOS: Make |AccountManager| reachable from IdentityManager API

Make |chromeos::AccountManager| instance available from
|IdentityManager| class interface for tests.

Bug: 1068240
Change-Id: I9d66c4bddd2df105e4aa0cd42699474e99a6837b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2214383
Commit-Queue: Anastasiia N <anastasiian@chromium.org>
Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Reviewed-by: default avatarKush Sinha <sinhak@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774606}
parent 5ca75c3b
......@@ -82,6 +82,10 @@ IdentityManager::IdentityManager(IdentityManager::InitParameters&& parameters)
base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this),
token_service_->GetDelegate()->GetJavaObject());
#endif
#if defined(OS_CHROMEOS)
chromeos_account_manager_ = parameters.chromeos_account_manager;
#endif
}
IdentityManager::~IdentityManager() {
......@@ -434,26 +438,32 @@ IdentityManager::GetAccountsWithRefreshTokens(JNIEnv* env) const {
}
#endif
PrimaryAccountManager* IdentityManager::GetPrimaryAccountManager() {
PrimaryAccountManager* IdentityManager::GetPrimaryAccountManager() const {
return primary_account_manager_.get();
}
ProfileOAuth2TokenService* IdentityManager::GetTokenService() {
ProfileOAuth2TokenService* IdentityManager::GetTokenService() const {
return token_service_.get();
}
AccountTrackerService* IdentityManager::GetAccountTrackerService() {
AccountTrackerService* IdentityManager::GetAccountTrackerService() const {
return account_tracker_service_.get();
}
AccountFetcherService* IdentityManager::GetAccountFetcherService() {
AccountFetcherService* IdentityManager::GetAccountFetcherService() const {
return account_fetcher_service_.get();
}
GaiaCookieManagerService* IdentityManager::GetGaiaCookieManagerService() {
GaiaCookieManagerService* IdentityManager::GetGaiaCookieManagerService() const {
return gaia_cookie_manager_service_.get();
}
#if defined(OS_CHROMEOS)
chromeos::AccountManager* IdentityManager::GetChromeOSAccountManager() const {
return chromeos_account_manager_;
}
#endif
AccountInfo IdentityManager::GetAccountInfoForAccountWithRefreshToken(
const CoreAccountId& account_id) const {
// TODO(https://crbug.com/919793): This invariant is not currently possible to
......
......@@ -28,6 +28,12 @@
#include "base/android/jni_android.h"
#endif
#if defined(OS_CHROMEOS)
namespace chromeos {
class AccountManager;
} // namespace chromeos
#endif
namespace gaia {
class GaiaSource;
struct ListedAccount;
......@@ -383,6 +389,9 @@ class IdentityManager : public KeyedService,
std::unique_ptr<AccountsMutator> accounts_mutator;
std::unique_ptr<DeviceAccountsSynchronizer> device_accounts_synchronizer;
std::unique_ptr<DiagnosticsProvider> diagnostics_provider;
#if defined(OS_CHROMEOS)
chromeos::AccountManager* chromeos_account_manager = nullptr;
#endif
InitParameters();
InitParameters(InitParameters&&);
......@@ -594,11 +603,14 @@ class IdentityManager : public KeyedService,
ForceRefreshOfExtendedAccountInfo);
// Private getters used for testing only (i.e. see identity_test_utils.h).
PrimaryAccountManager* GetPrimaryAccountManager();
ProfileOAuth2TokenService* GetTokenService();
AccountTrackerService* GetAccountTrackerService();
AccountFetcherService* GetAccountFetcherService();
GaiaCookieManagerService* GetGaiaCookieManagerService();
PrimaryAccountManager* GetPrimaryAccountManager() const;
ProfileOAuth2TokenService* GetTokenService() const;
AccountTrackerService* GetAccountTrackerService() const;
AccountFetcherService* GetAccountFetcherService() const;
GaiaCookieManagerService* GetGaiaCookieManagerService() const;
#if defined(OS_CHROMEOS)
chromeos::AccountManager* GetChromeOSAccountManager() const;
#endif
// Populates and returns an AccountInfo object corresponding to |account_id|,
// which must be an account with a refresh token.
......@@ -694,6 +706,10 @@ class IdentityManager : public KeyedService,
base::android::ScopedJavaGlobalRef<jobject> java_identity_manager_;
#endif
#if defined(OS_CHROMEOS)
chromeos::AccountManager* chromeos_account_manager_ = nullptr;
#endif
DISALLOW_COPY_AND_ASSIGN(IdentityManager);
};
......
......@@ -171,6 +171,9 @@ IdentityManager::InitParameters BuildIdentityManagerInitParameters(
std::move(gaia_cookie_manager_service);
init_params.primary_account_manager = std::move(primary_account_manager);
init_params.token_service = std::move(token_service);
#if defined(OS_CHROMEOS)
init_params.chromeos_account_manager = params->account_manager;
#endif
return init_params;
}
......
......@@ -122,6 +122,9 @@ TEST_F(IdentityManagerBuilderTest, BuildIdentityManagerInitParameters) {
EXPECT_EQ(init_params.device_accounts_synchronizer, nullptr);
EXPECT_NE(init_params.accounts_mutator, nullptr);
#endif
#if defined(OS_CHROMEOS)
EXPECT_NE(init_params.chromeos_account_manager, nullptr);
#endif
// Manually shut down AccountFetcherService to avoid DCHECK failure inside its
// destructor.
......
......@@ -11,6 +11,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/containers/flat_set.h"
#include "base/files/scoped_temp_dir.h"
#include "base/run_loop.h"
#include "base/scoped_observer.h"
#include "base/stl_util.h"
......@@ -57,6 +58,11 @@
#include "components/signin/internal/identity_manager/child_account_info_fetcher_android.h"
#endif
#if defined(OS_CHROMEOS)
#include "chromeos/components/account_manager/account_manager.h"
#include "chromeos/components/account_manager/account_manager_factory.h"
#endif
namespace signin {
namespace {
......@@ -313,6 +319,8 @@ class IdentityManagerTest : public testing::Test {
identity_manager_diagnostics_observer_.reset();
identity_manager_.reset();
ASSERT_TRUE(temp_profile_dir_.CreateUniqueTempDir());
auto token_service =
std::make_unique<CustomFakeProfileOAuth2TokenService>(&pref_service_);
......@@ -321,7 +329,8 @@ class IdentityManagerTest : public testing::Test {
&signin_client_);
auto account_tracker_service = std::make_unique<AccountTrackerService>();
account_tracker_service->Initialize(&pref_service_, base::FilePath());
account_tracker_service->Initialize(&pref_service_,
temp_profile_dir_.GetPath());
auto account_fetcher_service = std::make_unique<AccountFetcherService>();
account_fetcher_service->Initialize(
......@@ -378,6 +387,11 @@ class IdentityManagerTest : public testing::Test {
token_service.get(), account_tracker_service.get(),
primary_account_manager.get(), &pref_service_);
#endif
#if defined(OS_CHROMEOS)
init_params.chromeos_account_manager =
GetAccountManagerFactory()->GetAccountManager(
temp_profile_dir_.GetPath().value());
#endif
init_params.account_fetcher_service = std::move(account_fetcher_service);
init_params.account_tracker_service = std::move(account_tracker_service);
......@@ -427,7 +441,14 @@ class IdentityManagerTest : public testing::Test {
return &test_url_loader_factory_;
}
#if defined(OS_CHROMEOS)
chromeos::AccountManagerFactory* GetAccountManagerFactory() {
return &account_manager_factory_;
}
#endif
private:
base::ScopedTempDir temp_profile_dir_;
base::test::TaskEnvironment task_environment_;
sync_preferences::TestingPrefServiceSyncable pref_service_;
network::TestURLLoaderFactory test_url_loader_factory_;
......@@ -437,6 +458,9 @@ class IdentityManagerTest : public testing::Test {
std::unique_ptr<TestIdentityManagerDiagnosticsObserver>
identity_manager_diagnostics_observer_;
CoreAccountId primary_account_id_;
#if defined(OS_CHROMEOS)
chromeos::AccountManagerFactory account_manager_factory_;
#endif
DISALLOW_COPY_AND_ASSIGN(IdentityManagerTest);
};
......@@ -458,6 +482,9 @@ TEST_F(IdentityManagerTest, Construct) {
EXPECT_NE(identity_manager()->GetAccountsMutator(), nullptr);
EXPECT_EQ(identity_manager()->GetDeviceAccountsSynchronizer(), nullptr);
#endif
#if defined(OS_CHROMEOS)
EXPECT_NE(identity_manager()->GetChromeOSAccountManager(), nullptr);
#endif
}
// Test that IdentityManager starts off with the information in
......
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