Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / android / signin / signin_manager_android.cc
index 858384c..34ebb4d 100644 (file)
@@ -77,6 +77,11 @@ SigninManagerAndroid::SigninManagerAndroid(JNIEnv* env, jobject obj)
   java_signin_manager_.Reset(env, obj);
   profile_ = ProfileManager::GetActiveUserProfile();
   DCHECK(profile_);
+  pref_change_registrar_.Init(profile_->GetPrefs());
+  pref_change_registrar_.Add(
+      prefs::kSigninAllowed,
+      base::Bind(&SigninManagerAndroid::OnSigninAllowedPrefChanged,
+                 base::Unretained(this)));
 }
 
 SigninManagerAndroid::~SigninManagerAndroid() {}
@@ -251,6 +256,17 @@ void SigninManagerAndroid::LogInSignedInUser(JNIEnv* env, jobject obj) {
   }
 }
 
+jboolean SigninManagerAndroid::IsSigninAllowedByPolicy(JNIEnv* env,
+                                                       jobject obj) {
+  return SigninManagerFactory::GetForProfile(profile_)->IsSigninAllowed();
+}
+
+void SigninManagerAndroid::OnSigninAllowedPrefChanged() {
+  Java_SigninManager_onSigninAllowedByPolicyChanged(
+      base::android::AttachCurrentThread(), java_signin_manager_.obj(),
+      SigninManagerFactory::GetForProfile(profile_)->IsSigninAllowed());
+}
+
 static jlong Init(JNIEnv* env, jobject obj) {
   SigninManagerAndroid* signin_manager_android =
       new SigninManagerAndroid(env, obj);