Commit 487f0f4e authored by Mario Sanchez Prada's avatar Mario Sanchez Prada Committed by Commit Bot

Migrate SigninManagerAndroid to the IdentityManager

Move away from SigninManager[Base] in favor of the IdentityManager
for every single API call except for OnExternalSigninCompleted(),
which hasn't got mapped yet to the IdentityManager (crbug.com/889902).

Bug: 882464
Change-Id: I68c8b4845caaed59dd9b2650da977fac74be06b4
Reviewed-on: https://chromium-review.googlesource.com/c/1333390
Commit-Queue: Mario Sanchez Prada <mario@igalia.com>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarGanggui Tang <gogerald@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608059}
parent b3ce1805
...@@ -2561,6 +2561,7 @@ jumbo_split_static_library("browser") { ...@@ -2561,6 +2561,7 @@ jumbo_split_static_library("browser") {
"//rlz:rlz_utils", "//rlz:rlz_utils",
"//sandbox", "//sandbox",
"//sandbox:sandbox_buildflags", "//sandbox:sandbox_buildflags",
"//services/identity/public/cpp",
"//services/proxy_resolver:lib", "//services/proxy_resolver:lib",
"//third_party/android_opengl/etc1", "//third_party/android_opengl/etc1",
"//third_party/android_tools:cpu_features", "//third_party/android_tools:cpu_features",
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "chrome/browser/policy/cloud/user_policy_signin_service_mobile.h" #include "chrome/browser/policy/cloud/user_policy_signin_service_mobile.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/signin/account_tracker_service_factory.h" #include "chrome/browser/signin/account_tracker_service_factory.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/signin/oauth2_token_service_delegate_android.h" #include "chrome/browser/signin/oauth2_token_service_delegate_android.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/signin_manager_factory.h"
...@@ -40,7 +41,6 @@ ...@@ -40,7 +41,6 @@
#include "components/signin/core/browser/account_consistency_method.h" #include "components/signin/core/browser/account_consistency_method.h"
#include "components/signin/core/browser/account_tracker_service.h" #include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h" #include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_manager.h"
#include "components/signin/core/browser/signin_metrics.h" #include "components/signin/core/browser/signin_metrics.h"
#include "components/signin/core/browser/signin_pref_names.h" #include "components/signin/core/browser/signin_pref_names.h"
#include "content/public/browser/browsing_data_filter_builder.h" #include "content/public/browser/browsing_data_filter_builder.h"
...@@ -141,7 +141,7 @@ SigninManagerAndroid::SigninManagerAndroid(JNIEnv* env, jobject obj) ...@@ -141,7 +141,7 @@ SigninManagerAndroid::SigninManagerAndroid(JNIEnv* env, jobject obj)
java_signin_manager_.Reset(env, obj); java_signin_manager_.Reset(env, obj);
profile_ = ProfileManager::GetActiveUserProfile(); profile_ = ProfileManager::GetActiveUserProfile();
DCHECK(profile_); DCHECK(profile_);
SigninManagerFactory::GetForProfile(profile_)->AddObserver(this); IdentityManagerFactory::GetForProfile(profile_)->AddObserver(this);
pref_change_registrar_.Init(profile_->GetPrefs()); pref_change_registrar_.Init(profile_->GetPrefs());
pref_change_registrar_.Add( pref_change_registrar_.Add(
prefs::kSigninAllowed, prefs::kSigninAllowed,
...@@ -149,7 +149,9 @@ SigninManagerAndroid::SigninManagerAndroid(JNIEnv* env, jobject obj) ...@@ -149,7 +149,9 @@ SigninManagerAndroid::SigninManagerAndroid(JNIEnv* env, jobject obj)
base::Unretained(this))); base::Unretained(this)));
} }
SigninManagerAndroid::~SigninManagerAndroid() {} SigninManagerAndroid::~SigninManagerAndroid() {
IdentityManagerFactory::GetForProfile(profile_)->RemoveObserver(this);
}
void SigninManagerAndroid::CheckPolicyBeforeSignIn( void SigninManagerAndroid::CheckPolicyBeforeSignIn(
JNIEnv* env, JNIEnv* env,
...@@ -207,6 +209,9 @@ void SigninManagerAndroid::OnSignInCompleted( ...@@ -207,6 +209,9 @@ void SigninManagerAndroid::OnSignInCompleted(
const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& obj,
const JavaParamRef<jstring>& username) { const JavaParamRef<jstring>& username) {
DVLOG(1) << "SigninManagerAndroid::OnSignInCompleted"; DVLOG(1) << "SigninManagerAndroid::OnSignInCompleted";
// TODO(crbug.com/889902): Migrate to IdentityManager once there's an
// API mapping for SigninManager::OnExternalSigninCompleted().
SigninManagerFactory::GetForProfile(profile_)->OnExternalSigninCompleted( SigninManagerFactory::GetForProfile(profile_)->OnExternalSigninCompleted(
base::android::ConvertJavaStringToUTF8(env, username)); base::android::ConvertJavaStringToUTF8(env, username));
} }
...@@ -214,7 +219,8 @@ void SigninManagerAndroid::OnSignInCompleted( ...@@ -214,7 +219,8 @@ void SigninManagerAndroid::OnSignInCompleted(
void SigninManagerAndroid::SignOut(JNIEnv* env, void SigninManagerAndroid::SignOut(JNIEnv* env,
const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& obj,
jint signoutReason) { jint signoutReason) {
SigninManagerFactory::GetForProfile(profile_)->SignOut( IdentityManagerFactory::GetForProfile(profile_)->ClearPrimaryAccount(
identity::IdentityManager::ClearAccountTokensAction::kDefault,
static_cast<signin_metrics::ProfileSignout>(signoutReason), static_cast<signin_metrics::ProfileSignout>(signoutReason),
// Always use IGNORE_METRIC for the profile deletion argument. Chrome // Always use IGNORE_METRIC for the profile deletion argument. Chrome
// Android has just a single-profile which is never deleted upon // Android has just a single-profile which is never deleted upon
...@@ -294,13 +300,13 @@ void SigninManagerAndroid::ClearLastSignedInUser( ...@@ -294,13 +300,13 @@ void SigninManagerAndroid::ClearLastSignedInUser(
void SigninManagerAndroid::LogInSignedInUser(JNIEnv* env, void SigninManagerAndroid::LogInSignedInUser(JNIEnv* env,
const JavaParamRef<jobject>& obj) { const JavaParamRef<jobject>& obj) {
SigninManagerBase* signin_manager = identity::IdentityManager* identity_manager =
SigninManagerFactory::GetForProfile(profile_); IdentityManagerFactory::GetForProfile(profile_);
// With the account consistency enabled let the account Reconcilor handles // With the account consistency enabled let the account Reconcilor handles
// everything. // everything.
ProfileOAuth2TokenService* token_service = ProfileOAuth2TokenService* token_service =
ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
const std::string& primary_acct = signin_manager->GetAuthenticatedAccountId(); const std::string& primary_acct = identity_manager->GetPrimaryAccountId();
static_cast<OAuth2TokenServiceDelegateAndroid*>(token_service->GetDelegate()) static_cast<OAuth2TokenServiceDelegateAndroid*>(token_service->GetDelegate())
->ValidateAccounts(primary_acct, true); ->ValidateAccounts(primary_acct, true);
...@@ -309,7 +315,7 @@ void SigninManagerAndroid::LogInSignedInUser(JNIEnv* env, ...@@ -309,7 +315,7 @@ void SigninManagerAndroid::LogInSignedInUser(JNIEnv* env,
jboolean SigninManagerAndroid::IsSigninAllowedByPolicy( jboolean SigninManagerAndroid::IsSigninAllowedByPolicy(
JNIEnv* env, JNIEnv* env,
const JavaParamRef<jobject>& obj) { const JavaParamRef<jobject>& obj) {
return SigninManagerFactory::GetForProfile(profile_)->IsSigninAllowed(); return profile_->GetPrefs()->GetBoolean(prefs::kSigninAllowed);
} }
jboolean SigninManagerAndroid::IsForceSigninEnabled( jboolean SigninManagerAndroid::IsForceSigninEnabled(
...@@ -323,17 +329,11 @@ jboolean SigninManagerAndroid::IsForceSigninEnabled( ...@@ -323,17 +329,11 @@ jboolean SigninManagerAndroid::IsForceSigninEnabled(
jboolean SigninManagerAndroid::IsSignedInOnNative( jboolean SigninManagerAndroid::IsSignedInOnNative(
JNIEnv* env, JNIEnv* env,
const JavaParamRef<jobject>& obj) { const JavaParamRef<jobject>& obj) {
return SigninManagerFactory::GetForProfile(profile_)->IsAuthenticated(); return IdentityManagerFactory::GetForProfile(profile_)->HasPrimaryAccount();
} }
void SigninManagerAndroid::GoogleSigninFailed( void SigninManagerAndroid::OnPrimaryAccountCleared(
const GoogleServiceAuthError& error) {} const AccountInfo& previous_primary_account_info) {
void SigninManagerAndroid::GoogleSigninSucceeded(const std::string& account_id,
const std::string& username) {}
void SigninManagerAndroid::GoogleSignedOut(const std::string& account_id,
const std::string& username) {
DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(thread_checker_.CalledOnValidThread());
Java_SigninManager_onNativeSignOut(base::android::AttachCurrentThread(), Java_SigninManager_onNativeSignOut(base::android::AttachCurrentThread(),
java_signin_manager_); java_signin_manager_);
...@@ -342,7 +342,7 @@ void SigninManagerAndroid::GoogleSignedOut(const std::string& account_id, ...@@ -342,7 +342,7 @@ void SigninManagerAndroid::GoogleSignedOut(const std::string& account_id,
void SigninManagerAndroid::OnSigninAllowedPrefChanged() { void SigninManagerAndroid::OnSigninAllowedPrefChanged() {
Java_SigninManager_onSigninAllowedByPolicyChanged( Java_SigninManager_onSigninAllowedByPolicyChanged(
base::android::AttachCurrentThread(), java_signin_manager_, base::android::AttachCurrentThread(), java_signin_manager_,
SigninManagerFactory::GetForProfile(profile_)->IsSigninAllowed()); profile_->GetPrefs()->GetBoolean(prefs::kSigninAllowed));
} }
// static // static
......
...@@ -13,19 +13,19 @@ ...@@ -13,19 +13,19 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "components/prefs/pref_change_registrar.h" #include "components/prefs/pref_change_registrar.h"
#include "components/signin/core/browser/signin_manager_base.h" #include "services/identity/public/cpp/identity_manager.h"
class Profile; class Profile;
// Android wrapper of the SigninManager which provides access from the Java // Android wrapper of Chrome's C++ identity management code which provides
// layer. Note that on Android, there's only a single profile, and therefore // access from the Java layer. Note that on Android, there's only a single
// a single instance of this wrapper. The name of the Java class is // profile, and therefore a single instance of this wrapper. The name of the
// SigninManager. // Java class is SigninManager. This class should only be accessed from the UI
// This class should only be accessed from the UI thread. // thread.
// //
// This class implements parts of the sign-in flow, to make sure that policy // This class implements parts of the sign-in flow, to make sure that policy
// is available before sign-in completes. // is available before sign-in completes.
class SigninManagerAndroid : public SigninManagerBase::Observer { class SigninManagerAndroid : public identity::IdentityManager::Observer {
public: public:
SigninManagerAndroid(JNIEnv* env, jobject obj); SigninManagerAndroid(JNIEnv* env, jobject obj);
...@@ -80,12 +80,9 @@ class SigninManagerAndroid : public SigninManagerBase::Observer { ...@@ -80,12 +80,9 @@ class SigninManagerAndroid : public SigninManagerBase::Observer {
jboolean IsSignedInOnNative(JNIEnv* env, jboolean IsSignedInOnNative(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj); const base::android::JavaParamRef<jobject>& obj);
// SigninManagerBase::Observer implementation. // identity::IdentityManager::Observer implementation.
void GoogleSigninFailed(const GoogleServiceAuthError& error) override; void OnPrimaryAccountCleared(
void GoogleSigninSucceeded(const std::string& account_id, const AccountInfo& previous_primary_account_info) override;
const std::string& username) override;
void GoogleSignedOut(const std::string& account_id,
const std::string& username) override;
private: private:
friend class SigninManagerAndroidTest; friend class SigninManagerAndroidTest;
......
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