// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.content.browser.framehost; import org.chromium.base.CalledByNative; import org.chromium.base.JNINamespace; import org.chromium.content_public.browser.NavigationController; /** * The NavigationControllerImpl Java wrapper to allow communicating with the native * NavigationControllerImpl object. */ @JNINamespace("content") // TODO(tedchoc): Remove the package restriction once this class moves to a non-public content // package whose visibility will be enforced via DEPS. /* package */ class NavigationControllerImpl implements NavigationController { private long mNativeNavigationControllerAndroid; private NavigationControllerImpl(long nativeNavigationControllerAndroid) { mNativeNavigationControllerAndroid = nativeNavigationControllerAndroid; } @CalledByNative private static NavigationControllerImpl create(long nativeNavigationControllerAndroid) { return new NavigationControllerImpl(nativeNavigationControllerAndroid); } @CalledByNative private void destroy() { mNativeNavigationControllerAndroid = 0; } @Override public boolean canGoBack() { return mNativeNavigationControllerAndroid != 0 && nativeCanGoBack(mNativeNavigationControllerAndroid); } @Override public boolean canGoForward() { return mNativeNavigationControllerAndroid != 0 && nativeCanGoForward(mNativeNavigationControllerAndroid); } @Override public boolean canGoToOffset(int offset) { return mNativeNavigationControllerAndroid != 0 && nativeCanGoToOffset(mNativeNavigationControllerAndroid, offset); } @Override public void goToOffset(int offset) { if (mNativeNavigationControllerAndroid != 0) { nativeGoToOffset(mNativeNavigationControllerAndroid, offset); } } @Override public void goToNavigationIndex(int index) { if (mNativeNavigationControllerAndroid != 0) { nativeGoToNavigationIndex(mNativeNavigationControllerAndroid, index); } } @Override public void goBack() { if (mNativeNavigationControllerAndroid != 0) { nativeGoBack(mNativeNavigationControllerAndroid); } } @Override public void goForward() { if (mNativeNavigationControllerAndroid != 0) { nativeGoForward(mNativeNavigationControllerAndroid); } } private native boolean nativeCanGoBack(long nativeNavigationControllerAndroid); private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid); private native boolean nativeCanGoToOffset( long nativeNavigationControllerAndroid, int offset); private native void nativeGoBack(long nativeNavigationControllerAndroid); private native void nativeGoForward(long nativeNavigationControllerAndroid); private native void nativeGoToOffset(long nativeNavigationControllerAndroid, int offset); private native void nativeGoToNavigationIndex( long nativeNavigationControllerAndroid, int index); }