1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_ANDROID_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_ANDROID_H_ 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <jni.h> 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/android/scoped_java_ref.h" 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/basictypes.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/compiler_specific.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/common/content_export.h" 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace content { 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class NavigationController; 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Android wrapper around NavigationController that provides safer passage 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// from java and back to native and provides java with a means of communicating 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// with its native counterpart. 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class CONTENT_EXPORT NavigationControllerAndroid { 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public: 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static bool Register(JNIEnv* env); 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) explicit NavigationControllerAndroid( 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) NavigationController* navigation_controller); 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ~NavigationControllerAndroid(); 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) NavigationController* navigation_controller() const { 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return navigation_controller_; 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::android::ScopedJavaLocalRef<jobject> GetJavaObject(); 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) jboolean CanGoBack(JNIEnv* env, jobject obj); 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) jboolean CanGoForward(JNIEnv* env, jobject obj); 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) jboolean CanGoToOffset(JNIEnv* env, jobject obj, jint offset); 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void GoBack(JNIEnv* env, jobject obj); 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void GoForward(JNIEnv* env, jobject obj); 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void GoToOffset(JNIEnv* env, jobject obj, jint offset); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void LoadIfNecessary(JNIEnv* env, jobject obj); 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void ContinuePendingReload(JNIEnv* env, jobject obj); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void Reload(JNIEnv* env, jobject obj, jboolean check_for_repost); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void ReloadIgnoringCache(JNIEnv* env, jobject obj, jboolean check_for_repost); 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void RequestRestoreLoad(JNIEnv* env, jobject obj); 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void CancelPendingReload(JNIEnv* env, jobject obj); 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void GoToNavigationIndex(JNIEnv* env, jobject obj, jint index); 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void LoadUrl(JNIEnv* env, 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jobject obj, 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jstring url, 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint load_url_type, 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint transition_type, 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jstring j_referrer_url, 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint referrer_policy, 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint ua_override_option, 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jstring extra_headers, 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jbyteArray post_data, 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jstring base_url_for_data_url, 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jstring virtual_url_for_data_url, 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean can_load_local_resources, 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean is_renderer_initiated); 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void ClearSslPreferences(JNIEnv* env, jobject /* obj */); 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool GetUseDesktopUserAgent(JNIEnv* env, jobject /* obj */); 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetUseDesktopUserAgent(JNIEnv* env, 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jobject /* obj */, 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean state, 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean reload_on_state_change); 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::android::ScopedJavaLocalRef<jobject> GetPendingEntry(JNIEnv* env, 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jobject /* obj */); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int GetNavigationHistory(JNIEnv* env, jobject obj, jobject history); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void GetDirectedNavigationHistory(JNIEnv* env, 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jobject obj, 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jobject history, 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jboolean is_forward, 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint max_entries); 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::android::ScopedJavaLocalRef<jstring> 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetOriginalUrlForVisibleNavigationEntry(JNIEnv* env, jobject obj); 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void ClearHistory(JNIEnv* env, jobject obj); 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private: 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) NavigationController* navigation_controller_; 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::android::ScopedJavaGlobalRef<jobject> obj_; 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NavigationControllerAndroid); 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace content 89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_ANDROID_H_ 91