| Index: chrome/browser/android/signin/signin_manager_android.cc
|
| diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc
|
| index c1e5d83aad8473e074333d2b69fe98479b5f4af9..21fc75293a924d9cd9b1995f157753e4da081b41 100644
|
| --- a/chrome/browser/android/signin/signin_manager_android.cc
|
| +++ b/chrome/browser/android/signin/signin_manager_android.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "chrome/browser/android/signin/signin_manager_android.h"
|
|
|
| +#include "base/android/callback_android.h"
|
| #include "base/android/jni_android.h"
|
| #include "base/android/jni_array.h"
|
| #include "base/android/jni_string.h"
|
| @@ -78,6 +79,12 @@ class ProfileDataRemover : public BrowsingDataRemover::Observer {
|
| DISALLOW_COPY_AND_ASSIGN(ProfileDataRemover);
|
| };
|
|
|
| +void UserManagementDomainFetched(
|
| + base::android::ScopedJavaGlobalRef<jobject> callback,
|
| + const std::string& dm_token, const std::string& client_id) {
|
| + base::android::RunCallbackAndroid(callback, !dm_token.empty());
|
| +}
|
| +
|
| } // namespace
|
|
|
| SigninManagerAndroid::SigninManagerAndroid(JNIEnv* env, jobject obj)
|
| @@ -298,13 +305,42 @@ static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
|
|
|
| static jboolean ShouldLoadPolicyForUser(
|
| JNIEnv* env,
|
| - const JavaParamRef<jobject>& obj,
|
| + const JavaParamRef<jclass>& clazz,
|
| const JavaParamRef<jstring>& j_username) {
|
| std::string username =
|
| base::android::ConvertJavaStringToUTF8(env, j_username);
|
| return !policy::BrowserPolicyConnector::IsNonEnterpriseUser(username);
|
| }
|
|
|
| +static void IsUserManaged(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jclass>& clazz,
|
| + const JavaParamRef<jstring>& j_username,
|
| + const JavaParamRef<jobject>& j_callback) {
|
| + base::android::ScopedJavaGlobalRef<jobject> callback(env, j_callback);
|
| +
|
| + Profile* profile = ProfileManager::GetActiveUserProfile();
|
| + std::string username =
|
| + base::android::ConvertJavaStringToUTF8(env, j_username);
|
| + policy::UserPolicySigninService* service =
|
| + policy::UserPolicySigninServiceFactory::GetForProfile(profile);
|
| + service->RegisterForPolicy(
|
| + username, AccountTrackerServiceFactory::GetForProfile(profile)
|
| + ->FindAccountInfoByEmail(username)
|
| + .account_id,
|
| + base::Bind(&UserManagementDomainFetched, callback));
|
| +}
|
| +
|
| +base::android::ScopedJavaLocalRef<jstring>
|
| +ExtractDomainName(
|
| + JNIEnv *env,
|
| + const JavaParamRef<jclass>& clazz,
|
| + const JavaParamRef<jstring>& j_email) {
|
| + std::string email = base::android::ConvertJavaStringToUTF8(env, j_email);
|
| + std::string domain = gaia::ExtractDomainName(email);
|
| + return base::android::ConvertUTF8ToJavaString(env, domain);
|
| +}
|
| +
|
| // static
|
| bool SigninManagerAndroid::Register(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
|
|