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