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