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