1 // 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.
5 package org.chromium.content.browser.framehost;
7 import org.chromium.base.CalledByNative;
8 import org.chromium.base.JNINamespace;
9 import org.chromium.content_public.browser.NavigationController;
12 * The NavigationControllerImpl Java wrapper to allow communicating with the native
13 * NavigationControllerImpl object.
15 @JNINamespace("content")
16 // TODO(tedchoc): Remove the package restriction once this class moves to a non-public content
17 // package whose visibility will be enforced via DEPS.
18 /* package */ class NavigationControllerImpl implements NavigationController {
20 private long mNativeNavigationControllerAndroid;
22 private NavigationControllerImpl(long nativeNavigationControllerAndroid) {
23 mNativeNavigationControllerAndroid = nativeNavigationControllerAndroid;
27 private static NavigationControllerImpl create(long nativeNavigationControllerAndroid) {
28 return new NavigationControllerImpl(nativeNavigationControllerAndroid);
32 private void destroy() {
33 mNativeNavigationControllerAndroid = 0;
37 public boolean canGoBack() {
38 return mNativeNavigationControllerAndroid != 0
39 && nativeCanGoBack(mNativeNavigationControllerAndroid);
43 public boolean canGoForward() {
44 return mNativeNavigationControllerAndroid != 0
45 && nativeCanGoForward(mNativeNavigationControllerAndroid);
49 public boolean canGoToOffset(int offset) {
50 return mNativeNavigationControllerAndroid != 0
51 && nativeCanGoToOffset(mNativeNavigationControllerAndroid, offset);
55 public void goToOffset(int offset) {
56 if (mNativeNavigationControllerAndroid != 0) {
57 nativeGoToOffset(mNativeNavigationControllerAndroid, offset);
62 public void goToNavigationIndex(int index) {
63 if (mNativeNavigationControllerAndroid != 0) {
64 nativeGoToNavigationIndex(mNativeNavigationControllerAndroid, index);
69 public void goBack() {
70 if (mNativeNavigationControllerAndroid != 0) {
71 nativeGoBack(mNativeNavigationControllerAndroid);
76 public void goForward() {
77 if (mNativeNavigationControllerAndroid != 0) {
78 nativeGoForward(mNativeNavigationControllerAndroid);
83 public void loadIfNecessary() {
84 if (mNativeNavigationControllerAndroid != 0) {
85 nativeLoadIfNecessary(mNativeNavigationControllerAndroid);
90 public void requestRestoreLoad() {
91 if (mNativeNavigationControllerAndroid != 0) {
92 nativeRequestRestoreLoad(mNativeNavigationControllerAndroid);
97 public void reload(boolean checkForRepost) {
98 if (mNativeNavigationControllerAndroid != 0) {
99 nativeReload(mNativeNavigationControllerAndroid, checkForRepost);
104 public void reloadIgnoringCache(boolean checkForRepost) {
105 if (mNativeNavigationControllerAndroid != 0) {
106 nativeReloadIgnoringCache(mNativeNavigationControllerAndroid, checkForRepost);
111 public void cancelPendingReload() {
112 if (mNativeNavigationControllerAndroid != 0) {
113 nativeCancelPendingReload(mNativeNavigationControllerAndroid);
118 public void continuePendingReload() {
119 if (mNativeNavigationControllerAndroid != 0) {
120 nativeContinuePendingReload(mNativeNavigationControllerAndroid);
124 private native boolean nativeCanGoBack(long nativeNavigationControllerAndroid);
125 private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid);
126 private native void nativeLoadIfNecessary(long nativeNavigationControllerAndroid);
127 private native void nativeRequestRestoreLoad(long nativeNavigationControllerAndroid);
128 private native boolean nativeCanGoToOffset(
129 long nativeNavigationControllerAndroid, int offset);
130 private native void nativeGoBack(long nativeNavigationControllerAndroid);
131 private native void nativeGoForward(long nativeNavigationControllerAndroid);
132 private native void nativeGoToOffset(long nativeNavigationControllerAndroid, int offset);
133 private native void nativeGoToNavigationIndex(
134 long nativeNavigationControllerAndroid, int index);
135 private native void nativeCancelPendingReload(long nativeNavigationControllerAndroid);
136 private native void nativeContinuePendingReload(long nativeNavigationControllerAndroid);
137 private native void nativeReload(long nativeNavigationControllerAndroid,
138 boolean checkForRepost);
139 private native void nativeReloadIgnoringCache(long nativeNavigationControllerAndroid,
140 boolean checkForRepost);