1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#ifndef CHROME_BROWSER_ANDROID_FOREIGN_SESSION_HELPER_H_ 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define CHROME_BROWSER_ANDROID_FOREIGN_SESSION_HELPER_H_ 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <jni.h> 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/android/scoped_java_ref.h" 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)using base::android::ScopedJavaLocalRef; 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)struct SessionWindow; 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace browser_sync { 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)struct SyncedSession; 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace browser_sync 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class ForeignSessionHelper : public content::NotificationObserver { 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) explicit ForeignSessionHelper(Profile* profile); 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void Destroy(JNIEnv* env, jobject obj); 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jboolean IsTabSyncEnabled(JNIEnv* env, jobject obj); 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void SetOnForeignSessionCallback(JNIEnv* env, jobject obj, jobject callback); 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jboolean GetForeignSessions(JNIEnv* env, jobject obj, jobject result); 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jboolean OpenForeignSessionTab(JNIEnv* env, 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jobject obj, 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) jobject j_tab, 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) jstring session_tag, 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) jint tab_id, 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) jint disposition); 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void DeleteForeignSession(JNIEnv* env, jobject obj, jstring session_tag); 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // NotificationObserver implemenation 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual void Observe(int type, 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const content::NotificationSource& source, 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE; 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) static bool RegisterForeignSessionHelper(JNIEnv* env); 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private: 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual ~ForeignSessionHelper(); 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) Profile* profile_; // weak 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) base::android::ScopedJavaGlobalRef<jobject> callback_; 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) content::NotificationRegistrar registrar_; 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ForeignSessionHelper); 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif // CHROME_BROWSER_ANDROID_FOREIGN_SESSION_HELPER_H_ 56