signin_manager_android.h revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_ 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <jni.h> 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/android/scoped_java_ref.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/basictypes.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/scoped_ptr.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass Profile; 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace policy { 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass CloudPolicyClient; 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Android wrapper of the SigninManager which provides access from the Java 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// layer. Note that on Android, there's only a single profile, and therefore 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// a single instance of this wrapper. The name of the Java class is 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// SigninManager. 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// This class should only be accessed from the UI thread. 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// This class implements parts of the sign-in flow, to make sure that policy 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// is available before sign-in completes. 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass SigninManagerAndroid { 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch SigninManagerAndroid(JNIEnv* env, jobject obj); 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Registers the SigninManagerAndroid's native methods through JNI. 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static bool Register(JNIEnv* env); 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void CheckPolicyBeforeSignIn(JNIEnv* env, jobject obj, jstring username); 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void FetchPolicyBeforeSignIn(JNIEnv* env, jobject obj); 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void OnSignInCompleted(JNIEnv* env, jobject obj, jstring username); 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void SignOut(JNIEnv* env, jobject obj); 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual ~SigninManagerAndroid(); 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(ENABLE_CONFIGURATION_POLICY) 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void OnPolicyRegisterDone(scoped_ptr<policy::CloudPolicyClient> client); 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void OnPolicyFetchDone(bool success); 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch Profile* profile_; 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Java-side SigninManager object. 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::android::ScopedJavaGlobalRef<jobject> java_signin_manager_; 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(ENABLE_CONFIGURATION_POLICY) 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // CloudPolicyClient stored during a pending sign-in, awaiting user 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // confirmation before starting to fetch policies. 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<policy::CloudPolicyClient> cloud_policy_client_; 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DISALLOW_COPY_AND_ASSIGN(SigninManagerAndroid); 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_ 66