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