Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / public / android / java / src / org / chromium / content / browser / framehost / NavigationControllerImpl.java
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.
4
5 package org.chromium.content.browser.framehost;
6
7 import org.chromium.base.CalledByNative;
8 import org.chromium.base.JNINamespace;
9 import org.chromium.content_public.browser.NavigationController;
10
11 /**
12  * The NavigationControllerImpl Java wrapper to allow communicating with the native
13  * NavigationControllerImpl object.
14  */
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 {
19
20     private long mNativeNavigationControllerAndroid;
21
22     private NavigationControllerImpl(long nativeNavigationControllerAndroid) {
23         mNativeNavigationControllerAndroid = nativeNavigationControllerAndroid;
24     }
25
26     @CalledByNative
27     private static NavigationControllerImpl create(long nativeNavigationControllerAndroid) {
28         return new NavigationControllerImpl(nativeNavigationControllerAndroid);
29     }
30
31     @CalledByNative
32     private void destroy() {
33         mNativeNavigationControllerAndroid = 0;
34     }
35
36     @Override
37     public boolean canGoBack() {
38         return mNativeNavigationControllerAndroid != 0
39                 && nativeCanGoBack(mNativeNavigationControllerAndroid);
40     }
41
42     @Override
43     public boolean canGoForward() {
44         return mNativeNavigationControllerAndroid != 0
45                 && nativeCanGoForward(mNativeNavigationControllerAndroid);
46     }
47
48     @Override
49     public boolean canGoToOffset(int offset) {
50         return mNativeNavigationControllerAndroid != 0
51                 && nativeCanGoToOffset(mNativeNavigationControllerAndroid, offset);
52     }
53
54     @Override
55     public void goToOffset(int offset) {
56         if (mNativeNavigationControllerAndroid != 0) {
57             nativeGoToOffset(mNativeNavigationControllerAndroid, offset);
58         }
59     }
60
61     @Override
62     public void goToNavigationIndex(int index) {
63         if (mNativeNavigationControllerAndroid != 0) {
64             nativeGoToNavigationIndex(mNativeNavigationControllerAndroid, index);
65         }
66     }
67
68     @Override
69     public void goBack() {
70         if (mNativeNavigationControllerAndroid != 0) {
71             nativeGoBack(mNativeNavigationControllerAndroid);
72         }
73     }
74
75     @Override
76     public void goForward() {
77         if (mNativeNavigationControllerAndroid != 0) {
78             nativeGoForward(mNativeNavigationControllerAndroid);
79         }
80     }
81
82     @Override
83     public void loadIfNecessary() {
84         if (mNativeNavigationControllerAndroid != 0) {
85             nativeLoadIfNecessary(mNativeNavigationControllerAndroid);
86         }
87     }
88
89     @Override
90     public void requestRestoreLoad() {
91         if (mNativeNavigationControllerAndroid != 0) {
92             nativeRequestRestoreLoad(mNativeNavigationControllerAndroid);
93         }
94     }
95
96     @Override
97     public void reload(boolean checkForRepost) {
98         if (mNativeNavigationControllerAndroid != 0) {
99             nativeReload(mNativeNavigationControllerAndroid, checkForRepost);
100         }
101     }
102
103     @Override
104     public void reloadIgnoringCache(boolean checkForRepost) {
105         if (mNativeNavigationControllerAndroid != 0) {
106             nativeReloadIgnoringCache(mNativeNavigationControllerAndroid, checkForRepost);
107         }
108     }
109
110     @Override
111     public void cancelPendingReload() {
112         if (mNativeNavigationControllerAndroid != 0) {
113             nativeCancelPendingReload(mNativeNavigationControllerAndroid);
114         }
115     }
116
117     @Override
118     public void continuePendingReload() {
119         if (mNativeNavigationControllerAndroid != 0) {
120             nativeContinuePendingReload(mNativeNavigationControllerAndroid);
121         }
122     }
123
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);
141 }