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); |