NavigationControllerImpl.java revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)package org.chromium.content.browser.framehost; 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport android.graphics.Bitmap; 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.base.CalledByNative; 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.base.JNINamespace; 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.base.VisibleForTesting; 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.content_public.browser.LoadUrlParams; 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import org.chromium.content_public.browser.NavigationController; 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.content_public.browser.NavigationEntry; 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.content_public.browser.NavigationHistory; 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/** 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * The NavigationControllerImpl Java wrapper to allow communicating with the native 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * NavigationControllerImpl object. 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) */ 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)@JNINamespace("content") 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// TODO(tedchoc): Remove the package restriction once this class moves to a non-public content 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// package whose visibility will be enforced via DEPS. 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)/* package */ class NavigationControllerImpl implements NavigationController { 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private long mNativeNavigationControllerAndroid; 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private NavigationControllerImpl(long nativeNavigationControllerAndroid) { 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) mNativeNavigationControllerAndroid = nativeNavigationControllerAndroid; 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @CalledByNative 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private static NavigationControllerImpl create(long nativeNavigationControllerAndroid) { 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return new NavigationControllerImpl(nativeNavigationControllerAndroid); 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @CalledByNative 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private void destroy() { 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) mNativeNavigationControllerAndroid = 0; 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public boolean canGoBack() { 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return mNativeNavigationControllerAndroid != 0 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) && nativeCanGoBack(mNativeNavigationControllerAndroid); 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public boolean canGoForward() { 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return mNativeNavigationControllerAndroid != 0 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) && nativeCanGoForward(mNativeNavigationControllerAndroid); 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @VisibleForTesting 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public boolean canGoToOffset(int offset) { 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return mNativeNavigationControllerAndroid != 0 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) && nativeCanGoToOffset(mNativeNavigationControllerAndroid, offset); 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void goToOffset(int offset) { 63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (mNativeNavigationControllerAndroid != 0) { 64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) nativeGoToOffset(mNativeNavigationControllerAndroid, offset); 65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void goToNavigationIndex(int index) { 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (mNativeNavigationControllerAndroid != 0) { 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) nativeGoToNavigationIndex(mNativeNavigationControllerAndroid, index); 72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 74a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void goBack() { 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (mNativeNavigationControllerAndroid != 0) { 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) nativeGoBack(mNativeNavigationControllerAndroid); 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void goForward() { 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (mNativeNavigationControllerAndroid != 0) { 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) nativeGoForward(mNativeNavigationControllerAndroid); 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void loadIfNecessary() { 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (mNativeNavigationControllerAndroid != 0) { 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch nativeLoadIfNecessary(mNativeNavigationControllerAndroid); 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void requestRestoreLoad() { 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (mNativeNavigationControllerAndroid != 0) { 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch nativeRequestRestoreLoad(mNativeNavigationControllerAndroid); 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void reload(boolean checkForRepost) { 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (mNativeNavigationControllerAndroid != 0) { 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch nativeReload(mNativeNavigationControllerAndroid, checkForRepost); 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void reloadIgnoringCache(boolean checkForRepost) { 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (mNativeNavigationControllerAndroid != 0) { 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch nativeReloadIgnoringCache(mNativeNavigationControllerAndroid, checkForRepost); 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void cancelPendingReload() { 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (mNativeNavigationControllerAndroid != 0) { 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch nativeCancelPendingReload(mNativeNavigationControllerAndroid); 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @Override 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public void continuePendingReload() { 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (mNativeNavigationControllerAndroid != 0) { 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch nativeContinuePendingReload(mNativeNavigationControllerAndroid); 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public void loadUrl(LoadUrlParams params) { 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid != 0) { 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci nativeLoadUrl( 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mNativeNavigationControllerAndroid, 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getUrl(), 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getLoadUrlType(), params.getTransitionType(), 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getReferrer() != null ? params.getReferrer().getUrl() : null, 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getReferrer() != null ? params.getReferrer().getPolicy() : 0, 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getUserAgentOverrideOption(), 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getExtraHeadersString(), 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getPostData(), 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getBaseUrl(), 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getVirtualUrlForDataUrl(), 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getCanLoadLocalResources(), 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci params.getIsRendererInitiated()); 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @VisibleForTesting 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public void clearHistory() { 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid != 0) { 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci nativeClearHistory(mNativeNavigationControllerAndroid); 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public NavigationHistory getNavigationHistory() { 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid == 0) return null; 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NavigationHistory history = new NavigationHistory(); 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int currentIndex = nativeGetNavigationHistory( 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mNativeNavigationControllerAndroid, history); 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci history.setCurrentEntryIndex(currentIndex); 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return history; 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public NavigationHistory getDirectedNavigationHistory(boolean isForward, int itemLimit) { 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid == 0) return null; 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NavigationHistory history = new NavigationHistory(); 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci nativeGetDirectedNavigationHistory(mNativeNavigationControllerAndroid, 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci history, isForward, itemLimit); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return history; 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public String getOriginalUrlForVisibleNavigationEntry() { 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid == 0) return null; 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return nativeGetOriginalUrlForVisibleNavigationEntry(mNativeNavigationControllerAndroid); 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public void clearSslPreferences() { 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid != 0) { 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci nativeClearSslPreferences(mNativeNavigationControllerAndroid); 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public boolean getUseDesktopUserAgent() { 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid == 0) return false; 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return nativeGetUseDesktopUserAgent(mNativeNavigationControllerAndroid); 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public void setUseDesktopUserAgent(boolean override, boolean reloadOnChange) { 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid != 0) { 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci nativeSetUseDesktopUserAgent(mNativeNavigationControllerAndroid, 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci override, reloadOnChange); 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @Override 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public NavigationEntry getPendingEntry() { 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (mNativeNavigationControllerAndroid != 0) { 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return nativeGetPendingEntry(mNativeNavigationControllerAndroid); 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return null; 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @CalledByNative 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private static void addToNavigationHistory(Object history, Object navigationEntry) { 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ((NavigationHistory) history).addEntry((NavigationEntry) navigationEntry); 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci @CalledByNative 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private static NavigationEntry createNavigationEntry(int index, String url, 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci String virtualUrl, String originalUrl, String title, Bitmap favicon) { 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return new NavigationEntry(index, url, virtualUrl, originalUrl, title, favicon); 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native boolean nativeCanGoBack(long nativeNavigationControllerAndroid); 225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid); 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private native void nativeLoadIfNecessary(long nativeNavigationControllerAndroid); 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private native void nativeRequestRestoreLoad(long nativeNavigationControllerAndroid); 228a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native boolean nativeCanGoToOffset( 229a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) long nativeNavigationControllerAndroid, int offset); 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeGoBack(long nativeNavigationControllerAndroid); 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeGoForward(long nativeNavigationControllerAndroid); 232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeGoToOffset(long nativeNavigationControllerAndroid, int offset); 233a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private native void nativeGoToNavigationIndex( 234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) long nativeNavigationControllerAndroid, int index); 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private native void nativeCancelPendingReload(long nativeNavigationControllerAndroid); 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private native void nativeContinuePendingReload(long nativeNavigationControllerAndroid); 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private native void nativeReload(long nativeNavigationControllerAndroid, 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch boolean checkForRepost); 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private native void nativeReloadIgnoringCache(long nativeNavigationControllerAndroid, 240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch boolean checkForRepost); 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native void nativeLoadUrl( 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci long nativeNavigationControllerAndroid, 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci String url, 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int loadUrlType, 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int transitionType, 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci String referrerUrl, 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int referrerPolicy, 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int uaOverrideOption, 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci String extraHeaders, 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci byte[] postData, 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci String baseUrlForDataUrl, 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci String virtualUrlForDataUrl, 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci boolean canLoadLocalResources, 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci boolean isRendererInitiated); 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native void nativeClearHistory(long nativeNavigationControllerAndroid); 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native int nativeGetNavigationHistory(long nativeNavigationControllerAndroid, 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Object history); 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native void nativeGetDirectedNavigationHistory(long nativeNavigationControllerAndroid, 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NavigationHistory history, boolean isForward, int itemLimit); 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native String nativeGetOriginalUrlForVisibleNavigationEntry( 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci long nativeNavigationControllerAndroid); 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native void nativeClearSslPreferences(long nativeNavigationControllerAndroid); 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native boolean nativeGetUseDesktopUserAgent(long nativeNavigationControllerAndroid); 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native void nativeSetUseDesktopUserAgent(long nativeNavigationControllerAndroid, 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci boolean override, boolean reloadOnChange); 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private native NavigationEntry nativeGetPendingEntry(long nativeNavigationControllerAndroid); 267a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 268