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