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