signin_manager_android.h revision 558790d6acca3451cf3a6b497803a5f07d0bec58
1f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// Copyright 2013 The Chromium Authors. All rights reserved. 2f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 3a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt// found in the LICENSE file. 4f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 5f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#ifndef CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_ 6f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#define CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_ 7f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 8f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#include <jni.h> 9f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 10f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#include <string> 11f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 12f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#include "base/android/scoped_java_ref.h" 13f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#include "base/basictypes.h" 14f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#include "base/memory/scoped_ptr.h" 15f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#include "base/memory/weak_ptr.h" 16f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 17f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectclass Profile; 18f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 19f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectnamespace policy { 20f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectclass CloudPolicyClient; 21f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project} 22f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 23f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// Android wrapper of the SigninManager which provides access from the Java 24f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// layer. Note that on Android, there's only a single profile, and therefore 25f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// a single instance of this wrapper. The name of the Java class is 26f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// SigninManager. 27f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// This class should only be accessed from the UI thread. 28f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// 29f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// This class implements parts of the sign-in flow, to make sure that policy 30f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project// is available before sign-in completes. 31f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Projectclass SigninManagerAndroid { 32f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project public: 33f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project SigninManagerAndroid(JNIEnv* env, jobject obj); 34f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 35f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project // Registers the SigninManagerAndroid's native methods through JNI. 36f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project static bool Register(JNIEnv* env); 37e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 38e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt void CheckPolicyBeforeSignIn(JNIEnv* env, jobject obj, jstring username); 39e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 40e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt void FetchPolicyBeforeSignIn(JNIEnv* env, jobject obj); 41e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 42f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project void OnSignInCompleted(JNIEnv* env, jobject obj, jstring username); 43a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt 44a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt void SignOut(JNIEnv* env, jobject obj); 45a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt 46a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt base::android::ScopedJavaLocalRef<jstring> GetManagementDomain(JNIEnv* env, 47a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt jobject obj); 48a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt 49a3a2260384a906e1674c7498c2f479e9f37bc503Dmitry Shmidt void WipeProfileData(JNIEnv* env, jobject obj); 50f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 51e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt private: 52f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project virtual ~SigninManagerAndroid(); 53f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 54f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#if defined(ENABLE_CONFIGURATION_POLICY) 55f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project void OnPolicyRegisterDone(scoped_ptr<policy::CloudPolicyClient> client); 56f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project void OnPolicyFetchDone(bool success); 57f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project#endif 58f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 59f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project void OnBrowsingDataRemoverDone(); 60e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 61f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project Profile* profile_; 62f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project 63f7c5421560640d23fc10803b9d59a9ff1d83e467The Android Open Source Project // Java-side SigninManager object. 64e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt base::android::ScopedJavaGlobalRef<jobject> java_signin_manager_; 65e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 66e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt#if defined(ENABLE_CONFIGURATION_POLICY) 67e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt // CloudPolicyClient stored during a pending sign-in, awaiting user 68e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt // confirmation before starting to fetch policies. 69e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt scoped_ptr<policy::CloudPolicyClient> cloud_policy_client_; 70e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 71e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt // Username that is pending sign-in. This is used to extract the domain name 72e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt // for the policy dialog, when |username_| corresponds to a managed account. 73e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt std::string username_; 74e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt#endif 75e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 76e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt base::WeakPtrFactory<SigninManagerAndroid> weak_factory_; 77e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 78e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt DISALLOW_COPY_AND_ASSIGN(SigninManagerAndroid); 79e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt}; 80e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt 81e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt#endif // CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_ 82e86eee143ed21592f88a46623a81f71002430459Dmitry Shmidt