NavigationControllerImpl.java revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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
5package org.chromium.content.browser.framehost;
6
7import org.chromium.base.CalledByNative;
8import org.chromium.base.JNINamespace;
9import org.chromium.content.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    private native boolean nativeCanGoBack(long nativeNavigationControllerAndroid);
83    private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid);
84    private native boolean nativeCanGoToOffset(
85            long nativeNavigationControllerAndroid, int offset);
86    private native void nativeGoBack(long nativeNavigationControllerAndroid);
87    private native void nativeGoForward(long nativeNavigationControllerAndroid);
88    private native void nativeGoToOffset(long nativeNavigationControllerAndroid, int offset);
89    private native void nativeGoToNavigationIndex(
90            long nativeNavigationControllerAndroid, int index);
91}
92