blob: 66d9a90633d57699edd9c4547181d64fa0f4253c [file] [log] [blame]
danakjc492bf82020-09-09 20:02:441// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_CONTROLLER_ANDROID_H_
6#define CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_CONTROLLER_ANDROID_H_
7
8#include <jni.h>
9
10#include "base/android/scoped_java_ref.h"
11#include "base/compiler_specific.h"
12#include "base/macros.h"
13#include "content/common/content_export.h"
14
15namespace content {
16
17class NavigationControllerImpl;
18
19// Android wrapper around NavigationController that provides safer passage
20// from java and back to native and provides java with a means of communicating
21// with its native counterpart.
22class CONTENT_EXPORT NavigationControllerAndroid {
23 public:
24 explicit NavigationControllerAndroid(
25 NavigationControllerImpl* navigation_controller);
26 ~NavigationControllerAndroid();
27
28 NavigationControllerImpl* navigation_controller() const {
29 return navigation_controller_;
30 }
31
32 base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
33
34 jboolean CanGoBack(JNIEnv* env,
35 const base::android::JavaParamRef<jobject>& obj);
36 jboolean CanGoForward(JNIEnv* env,
37 const base::android::JavaParamRef<jobject>& obj);
38 jboolean CanGoToOffset(JNIEnv* env,
39 const base::android::JavaParamRef<jobject>& obj,
40 jint offset);
41 void GoBack(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
42 void GoForward(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
43 void GoToOffset(JNIEnv* env,
44 const base::android::JavaParamRef<jobject>& obj,
45 jint offset);
46 jboolean IsInitialNavigation(JNIEnv* env,
47 const base::android::JavaParamRef<jobject>& obj);
48 void LoadIfNecessary(JNIEnv* env,
49 const base::android::JavaParamRef<jobject>& obj);
50 void ContinuePendingReload(JNIEnv* env,
51 const base::android::JavaParamRef<jobject>& obj);
52 void Reload(JNIEnv* env,
53 const base::android::JavaParamRef<jobject>& obj,
54 jboolean check_for_repost);
55 void ReloadBypassingCache(JNIEnv* env,
56 const base::android::JavaParamRef<jobject>& obj,
57 jboolean check_for_repost);
58 jboolean NeedsReload(JNIEnv* env,
59 const base::android::JavaParamRef<jobject>& obj);
60 void SetNeedsReload(JNIEnv* env,
61 const base::android::JavaParamRef<jobject>& obj);
62 void CancelPendingReload(JNIEnv* env,
63 const base::android::JavaParamRef<jobject>& obj);
64 void GoToNavigationIndex(JNIEnv* env,
65 const base::android::JavaParamRef<jobject>& obj,
66 jint index);
67 void LoadUrl(
68 JNIEnv* env,
69 const base::android::JavaParamRef<jobject>& obj,
70 const base::android::JavaParamRef<jstring>& url,
71 jint load_url_type,
72 jint transition_type,
73 const base::android::JavaParamRef<jstring>& j_referrer_url,
74 jint referrer_policy,
75 jint ua_override_option,
76 const base::android::JavaParamRef<jstring>& extra_headers,
77 const base::android::JavaParamRef<jobject>& j_post_data,
78 const base::android::JavaParamRef<jstring>& base_url_for_data_url,
79 const base::android::JavaParamRef<jstring>& virtual_url_for_data_url,
80 const base::android::JavaParamRef<jstring>& data_url_as_string,
81 jboolean can_load_local_resources,
82 jboolean is_renderer_initiated,
Michael Thiessend3c9a032021-04-19 17:01:3783 jboolean should_replace_current_entry,
84 const base::android::JavaParamRef<jobject>& j_initiator_origin,
85 jboolean has_user_gesture,
86 jboolean should_clear_history_list,
87 jlong input_start);
danakjc492bf82020-09-09 20:02:4488 void ClearSslPreferences(
89 JNIEnv* env,
90 const base::android::JavaParamRef<jobject>& /* obj */);
91 bool GetUseDesktopUserAgent(
92 JNIEnv* env,
93 const base::android::JavaParamRef<jobject>& /* obj */);
94 void SetUseDesktopUserAgent(
95 JNIEnv* env,
96 const base::android::JavaParamRef<jobject>& /* obj */,
97 jboolean state,
98 jboolean reload_on_state_change);
99 base::android::ScopedJavaLocalRef<jobject> GetEntryAtIndex(
100 JNIEnv* env,
101 const base::android::JavaParamRef<jobject>& obj,
102 int index);
103 base::android::ScopedJavaLocalRef<jobject> GetVisibleEntry(
104 JNIEnv* env,
105 const base::android::JavaParamRef<jobject>& /* obj */);
106 base::android::ScopedJavaLocalRef<jobject> GetPendingEntry(
107 JNIEnv* env,
108 const base::android::JavaParamRef<jobject>& /* obj */);
109 int GetNavigationHistory(JNIEnv* env,
110 const base::android::JavaParamRef<jobject>& obj,
111 const base::android::JavaParamRef<jobject>& history);
112 void GetDirectedNavigationHistory(
113 JNIEnv* env,
114 const base::android::JavaParamRef<jobject>& obj,
115 const base::android::JavaParamRef<jobject>& history,
116 jboolean is_forward,
117 jint max_entries);
118 void ClearHistory(JNIEnv* env,
119 const base::android::JavaParamRef<jobject>& obj);
120 int GetLastCommittedEntryIndex(
121 JNIEnv* env,
122 const base::android::JavaParamRef<jobject>& obj);
123 jboolean RemoveEntryAtIndex(JNIEnv* env,
124 const base::android::JavaParamRef<jobject>& obj,
125 jint index);
126 void PruneForwardEntries(JNIEnv* env,
127 const base::android::JavaParamRef<jobject>& obj);
128 base::android::ScopedJavaLocalRef<jstring> GetEntryExtraData(
129 JNIEnv* env,
130 const base::android::JavaParamRef<jobject>& obj,
131 jint index,
132 const base::android::JavaParamRef<jstring>& jkey);
133 void SetEntryExtraData(JNIEnv* env,
134 const base::android::JavaParamRef<jobject>& obj,
135 jint index,
136 const base::android::JavaParamRef<jstring>& jkey,
137 const base::android::JavaParamRef<jstring>& jvalue);
138 jboolean IsEntryMarkedToBeSkipped(
139 JNIEnv* env,
140 const base::android::JavaParamRef<jobject>& obj,
141 jint index);
142
143 private:
144 NavigationControllerImpl* navigation_controller_;
145 base::android::ScopedJavaGlobalRef<jobject> obj_;
146
147 DISALLOW_COPY_AND_ASSIGN(NavigationControllerAndroid);
148};
149
150} // namespace content
151
152#endif // CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_CONTROLLER_ANDROID_H_