Commit 40ab0983 authored by Colin Blundell's avatar Colin Blundell Committed by Commit Bot

Change identity_services_provider_android.cc to talk to IdentityManager

identity_services_provider_android.cc serves as the glue between the
Java Profile object and the Java signin-related objects associated with
that Profile. In particular, it allows for getting the Java
AccountTrackerService and OAuth2TokenService objects associated with the
Java Profile. This mapping isn't done in Java itself as the Java Profile
object does not have a concept of KeyedServices.

When we have internalized usage of these classes behind IdentityManager
in Java, this glue will naturally be only on IdentityManager rather than
on the underlying internal classes. In order to enable the completion of
internalization of the C++ classes (of which this is one of the very few
remaining blockers), we are introducing legacy C++ APIs on
IdentityManager to get the Java objects for AccountTrackerService and
ProfileOAuth2TokenService.

Bug: 934701
Change-Id: Iab70b66a14892dcb37a6924e1e76742b5ac570a4
Reviewed-on: https://chromium-review.googlesource.com/c/1482793Reviewed-by: default avatarMihai Sardarescu <msarda@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#634623}
parent 74f06c96
......@@ -4,11 +4,9 @@
#include "base/android/jni_android.h"
#include "chrome/browser/profiles/profile_android.h"
#include "chrome/browser/signin/account_tracker_service_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/oauth2_token_service_delegate_android.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "jni/IdentityServicesProvider_jni.h"
#include "services/identity/public/cpp/identity_manager.h"
using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
......@@ -18,9 +16,9 @@ JNI_IdentityServicesProvider_GetAccountTrackerService(
JNIEnv* env,
const JavaParamRef<jobject>& j_profile_android) {
Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile_android);
AccountTrackerService* service =
AccountTrackerServiceFactory::GetForProfile(profile);
return service->GetJavaObject();
identity::IdentityManager* identity_manager =
IdentityManagerFactory::GetForProfile(profile);
return identity_manager->LegacyGetAccountTrackerServiceJavaObject();
}
static ScopedJavaLocalRef<jobject>
......@@ -28,9 +26,7 @@ JNI_IdentityServicesProvider_GetOAuth2TokenService(
JNIEnv* env,
const JavaParamRef<jobject>& j_profile_android) {
Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile_android);
ProfileOAuth2TokenService* service =
ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
OAuth2TokenServiceDelegateAndroid* delegate =
static_cast<OAuth2TokenServiceDelegateAndroid*>(service->GetDelegate());
return delegate->GetJavaObject();
identity::IdentityManager* identity_manager =
IdentityManagerFactory::GetForProfile(profile);
return identity_manager->LegacyGetOAuth2TokenServiceJavaObject();
}
......@@ -16,6 +16,10 @@
#include "services/identity/public/cpp/primary_account_mutator.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#if defined(OS_ANDROID)
#include "components/signin/core/browser/oauth2_token_service_delegate_android.h"
#endif
namespace identity {
namespace {
......@@ -317,6 +321,21 @@ void IdentityManager::LegacyReloadAccountsFromSystem() {
}
#endif
#if defined(OS_ANDROID)
base::android::ScopedJavaLocalRef<jobject>
IdentityManager::LegacyGetAccountTrackerServiceJavaObject() {
return account_tracker_service_->GetJavaObject();
}
base::android::ScopedJavaLocalRef<jobject>
IdentityManager::LegacyGetOAuth2TokenServiceJavaObject() {
OAuth2TokenServiceDelegateAndroid* delegate =
static_cast<OAuth2TokenServiceDelegateAndroid*>(
token_service_->GetDelegate());
return delegate->GetJavaObject();
}
#endif
void IdentityManager::AddObserver(Observer* observer) {
observer_list_.AddObserver(observer);
}
......
......@@ -27,6 +27,10 @@
#include "components/signin/core/browser/signin_manager.h"
#endif
#if defined(OS_ANDROID)
#include "base/android/jni_android.h"
#endif
// Necessary to declare this class as a friend.
namespace arc {
class ArcTermsOfServiceDefaultNegotiatorTest;
......@@ -425,6 +429,22 @@ class IdentityManager : public SigninManagerBase::Observer,
void LegacyReloadAccountsFromSystem();
#endif
#if defined(OS_ANDROID)
// Returns a pointer to the AccountTrackerService Java instance associated
// with this object.
// TODO(https://crbug.com/934688): Eliminate this method once
// AccountTrackerService.java has no more client usage.
base::android::ScopedJavaLocalRef<jobject>
LegacyGetAccountTrackerServiceJavaObject();
// Returns a pointer to the OAuth2TokenService Java instance associated
// with this object.
// TODO(https://crbug.com/934688): Eliminate this method once
// OAuth2TokenService.java has no more client usage.
base::android::ScopedJavaLocalRef<jobject>
LegacyGetOAuth2TokenServiceJavaObject();
#endif
// Methods to register or remove observers.
void AddObserver(Observer* observer);
void RemoveObserver(Observer* observer);
......
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