File: navigation_controller_android.h

package info (click to toggle)
chromium 140.0.7339.185-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,193,740 kB
  • sloc: cpp: 35,093,945; ansic: 7,161,670; javascript: 4,199,694; python: 1,441,797; asm: 949,904; xml: 747,515; pascal: 187,748; perl: 88,691; sh: 88,248; objc: 79,953; sql: 52,714; cs: 44,599; fortran: 24,137; makefile: 22,114; tcl: 15,277; php: 13,980; yacc: 9,000; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (130 lines) | stat: -rw-r--r-- 5,065 bytes parent folder | download | duplicates (4)
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
// 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);
  jboolean CanGoForward(JNIEnv* env);
  jboolean CanGoToOffset(JNIEnv* env,
                         jint offset);
  void GoBack(JNIEnv* env);
  void GoForward(JNIEnv* env);
  void GoToOffset(JNIEnv* env,
                  jint offset);
  jboolean IsInitialNavigation(JNIEnv* env);
  void LoadIfNecessary(JNIEnv* env);
  void ContinuePendingReload(JNIEnv* env);
  void Reload(JNIEnv* env,
              jboolean check_for_repost);
  void ReloadBypassingCache(JNIEnv* env,
                            jboolean check_for_repost);
  jboolean NeedsReload(JNIEnv* env);
  void SetNeedsReload(JNIEnv* env);
  void CancelPendingReload(JNIEnv* env);
  void GoToNavigationIndex(JNIEnv* env,
                           jint index);
  base::android::ScopedJavaLocalRef<jobject> LoadUrl(
      JNIEnv* env,
      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);
  bool GetUseDesktopUserAgent(JNIEnv* env);
  void SetUseDesktopUserAgent(
      JNIEnv* env,
      jboolean state,
      jboolean reload_on_state_change,
      jint source);
  base::android::ScopedJavaLocalRef<jobject> GetEntryAtIndex(JNIEnv* env,
                                                             int index);
  base::android::ScopedJavaLocalRef<jobject> GetVisibleEntry(JNIEnv* env);
  base::android::ScopedJavaLocalRef<jobject> GetPendingEntry(JNIEnv* env);
  int GetNavigationHistory(JNIEnv* env,
                           const base::android::JavaParamRef<jobject>& history);
  void GetDirectedNavigationHistory(
      JNIEnv* env,
      const base::android::JavaParamRef<jobject>& history,
      jboolean is_forward,
      jint max_entries);
  void ClearHistory(JNIEnv* env);
  int GetLastCommittedEntryIndex(JNIEnv* env);
  jboolean RemoveEntryAtIndex(JNIEnv* env,
                              jint index);
  void PruneForwardEntries(JNIEnv* env);
  base::android::ScopedJavaLocalRef<jstring> GetEntryExtraData(
      JNIEnv* env,
      jint index,
      const base::android::JavaParamRef<jstring>& jkey);
  void SetEntryExtraData(JNIEnv* env,
                         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_