12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_PROFILES_PROFILE_ANDROID_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_PROFILES_PROFILE_ANDROID_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <jni.h> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/android/scoped_java_ref.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/supports_user_data.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Android wrapper around profile that provides safer passage from java and 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// back to native. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ProfileAndroid : public base::SupportsUserData::Data { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static ProfileAndroid* FromProfile(Profile* profile); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static Profile* FromProfileAndroid(jobject obj); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool RegisterProfileAndroid(JNIEnv* env); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static jobject GetLastUsedProfile(JNIEnv* env, jclass clazz); 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Return the original profile. 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::android::ScopedJavaLocalRef<jobject> GetOriginalProfile( 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci JNIEnv* env, jobject obj); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Return the incognito profile. 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // WARNING: This will create the OffTheRecord profile if it doesn't already 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // exist. If this isn't what you want, you need to check 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // HasOffTheRecordProfile() first. 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::android::ScopedJavaLocalRef<jobject> GetOffTheRecordProfile( 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci JNIEnv* env, jobject obj); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Return whether an off the record profile exists. 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean HasOffTheRecordProfile(JNIEnv* env, jobject obj); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Whether this profile is off the record. 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean IsOffTheRecord(JNIEnv* env, jobject obj); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit ProfileAndroid(Profile* profile); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ProfileAndroid(); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::android::ScopedJavaLocalRef<jobject> GetJavaObject(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile_; // weak 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::android::ScopedJavaGlobalRef<jobject> obj_; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_PROFILES_PROFILE_ANDROID_H_ 55