signin_manager_android.h revision 3551c9c881056c480085172ff9840cab31610854
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
109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include <string>
119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/android/scoped_java_ref.h"
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/basictypes.h"
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/scoped_ptr.h"
15558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "base/memory/weak_ptr.h"
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass Profile;
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace policy {
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass CloudPolicyClient;
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Android wrapper of the SigninManager which provides access from the Java
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// layer. Note that on Android, there's only a single profile, and therefore
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// a single instance of this wrapper. The name of the Java class is
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// SigninManager.
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// This class should only be accessed from the UI thread.
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch//
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// This class implements parts of the sign-in flow, to make sure that policy
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// is available before sign-in completes.
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass SigninManagerAndroid {
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public:
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  SigninManagerAndroid(JNIEnv* env, jobject obj);
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Registers the SigninManagerAndroid's native methods through JNI.
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  static bool Register(JNIEnv* env);
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void CheckPolicyBeforeSignIn(JNIEnv* env, jobject obj, jstring username);
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void FetchPolicyBeforeSignIn(JNIEnv* env, jobject obj);
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void OnSignInCompleted(JNIEnv* env, jobject obj, jstring username);
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void SignOut(JNIEnv* env, jobject obj);
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
46558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  base::android::ScopedJavaLocalRef<jstring> GetManagementDomain(JNIEnv* env,
47558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch                                                                 jobject obj);
48558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
49558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  void WipeProfileData(JNIEnv* env, jobject obj);
50558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  void LogInSignedInUser(JNIEnv* env, jobject obj);
523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private:
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual ~SigninManagerAndroid();
557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(ENABLE_CONFIGURATION_POLICY)
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void OnPolicyRegisterDone(scoped_ptr<policy::CloudPolicyClient> client);
587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void OnPolicyFetchDone(bool success);
597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
61558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  void OnBrowsingDataRemoverDone();
62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  Profile* profile_;
647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Java-side SigninManager object.
667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  base::android::ScopedJavaGlobalRef<jobject> java_signin_manager_;
677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(ENABLE_CONFIGURATION_POLICY)
697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // CloudPolicyClient stored during a pending sign-in, awaiting user
707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // confirmation before starting to fetch policies.
717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<policy::CloudPolicyClient> cloud_policy_client_;
729ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
739ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // Username that is pending sign-in. This is used to extract the domain name
749ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // for the policy dialog, when |username_| corresponds to a managed account.
759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  std::string username_;
767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
78558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  base::WeakPtrFactory<SigninManagerAndroid> weak_factory_;
79558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(SigninManagerAndroid);
817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif  // CHROME_BROWSER_ANDROID_SIGNIN_SIGNIN_MANAGER_ANDROID_H_
84