Commit b316e927 authored by dtrainor's avatar dtrainor Committed by Commit bot

[Android] Expose GetPendingEntry from NavigationController

- Expose GetPendingEntry to the public Java layer for Android

BUG=385490

Review URL: https://codereview.chromium.org/577353002

Cr-Commit-Position: refs/heads/master@{#295809}
parent b9cd4f95
......@@ -22,11 +22,12 @@ using base::android::ConvertUTF8ToJavaString;
namespace {
// static
static void AddNavigationEntryToHistory(JNIEnv* env,
jobject obj,
jobject history,
content::NavigationEntry* entry,
int index) {
static base::android::ScopedJavaLocalRef<jobject> CreateJavaNavigationEntry(
JNIEnv* env,
content::NavigationEntry* entry,
int index) {
DCHECK(entry);
// Get the details of the current entry
ScopedJavaLocalRef<jstring> j_url(
ConvertUTF8ToJavaString(env, entry->GetURL().spec()));
......@@ -41,11 +42,8 @@ static void AddNavigationEntryToHistory(JNIEnv* env,
if (status.valid && status.image.ToSkBitmap()->getSize() > 0)
j_bitmap = gfx::ConvertToJavaBitmap(status.image.ToSkBitmap());
// Add the item to the list
content::Java_NavigationControllerImpl_addToNavigationHistory(
return content::Java_NavigationControllerImpl_createNavigationEntry(
env,
obj,
history,
index,
j_url.obj(),
j_virtual_url.obj(),
......@@ -54,6 +52,16 @@ static void AddNavigationEntryToHistory(JNIEnv* env,
j_bitmap.obj());
}
static void AddNavigationEntryToHistory(JNIEnv* env,
jobject history,
content::NavigationEntry* entry,
int index) {
content::Java_NavigationControllerImpl_addToNavigationHistory(
env,
history,
CreateJavaNavigationEntry(env, entry, index).obj());
}
} // namespace
namespace content {
......@@ -216,7 +224,7 @@ jint NavigationControllerAndroid::GetNavigationHistory(JNIEnv* env,
int count = navigation_controller_->GetEntryCount();
for (int i = 0; i < count; ++i) {
AddNavigationEntryToHistory(
env, obj, history, navigation_controller_->GetEntryAtIndex(i), i);
env, history, navigation_controller_->GetEntryAtIndex(i), i);
}
return navigation_controller_->GetCurrentEntryIndex();
......@@ -239,7 +247,7 @@ void NavigationControllerAndroid::GetDirectedNavigationHistory(
break;
AddNavigationEntryToHistory(
env, obj, history, navigation_controller_->GetEntryAtIndex(i), i);
env, history, navigation_controller_->GetEntryAtIndex(i), i);
num_added++;
}
}
......@@ -292,4 +300,15 @@ void NavigationControllerAndroid::SetUseDesktopUserAgent(
}
}
base::android::ScopedJavaLocalRef<jobject>
NavigationControllerAndroid::GetPendingEntry(JNIEnv* env, jobject obj) {
content::NavigationEntry* entry = navigation_controller_->GetPendingEntry();
if (!entry)
return base::android::ScopedJavaLocalRef<jobject>();
return CreateJavaNavigationEntry(
env, entry, navigation_controller_->GetPendingEntryIndex());
}
} // namespace content
......@@ -66,6 +66,8 @@ class CONTENT_EXPORT NavigationControllerAndroid {
jobject /* obj */,
jboolean state,
jboolean reload_on_state_change);
base::android::ScopedJavaLocalRef<jobject> GetPendingEntry(JNIEnv* env,
jobject /* obj */);
int GetNavigationHistory(JNIEnv* env, jobject obj, jobject history);
void GetDirectedNavigationHistory(JNIEnv* env,
jobject obj,
......
......@@ -180,14 +180,6 @@ import org.chromium.content_public.browser.NavigationHistory;
return nativeGetOriginalUrlForVisibleNavigationEntry(mNativeNavigationControllerAndroid);
}
@CalledByNative
private void addToNavigationHistory(Object history, int index, String url,
String virtualUrl,String originalUrl, String title, Bitmap favicon) {
NavigationEntry entry = new NavigationEntry(index, url, virtualUrl,
originalUrl, title, favicon);
((NavigationHistory) history).addEntry(entry);
}
@Override
public void clearSslPreferences() {
if (mNativeNavigationControllerAndroid != 0) {
......@@ -209,6 +201,26 @@ import org.chromium.content_public.browser.NavigationHistory;
}
}
@Override
public NavigationEntry getPendingEntry() {
if (mNativeNavigationControllerAndroid != 0) {
return nativeGetPendingEntry(mNativeNavigationControllerAndroid);
}
return null;
}
@CalledByNative
private static void addToNavigationHistory(Object history, Object navigationEntry) {
((NavigationHistory) history).addEntry((NavigationEntry) navigationEntry);
}
@CalledByNative
private static NavigationEntry createNavigationEntry(int index, String url,
String virtualUrl, String originalUrl, String title, Bitmap favicon) {
return new NavigationEntry(index, url, virtualUrl, originalUrl, title, favicon);
}
private native boolean nativeCanGoBack(long nativeNavigationControllerAndroid);
private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid);
private native void nativeLoadIfNecessary(long nativeNavigationControllerAndroid);
......@@ -251,4 +263,5 @@ import org.chromium.content_public.browser.NavigationHistory;
private native boolean nativeGetUseDesktopUserAgent(long nativeNavigationControllerAndroid);
private native void nativeSetUseDesktopUserAgent(long nativeNavigationControllerAndroid,
boolean override, boolean reloadOnChange);
private native NavigationEntry nativeGetPendingEntry(long nativeNavigationControllerAndroid);
}
......@@ -132,4 +132,10 @@ public interface NavigationController {
* @param reloadOnChange Reload the page if the UA has changed.
*/
public void setUseDesktopUserAgent(boolean override, boolean reloadOnChange);
/**
* @return The pending {@link NavigationEntry} for this controller or {@code null} if none
* exists.
*/
public NavigationEntry getPendingEntry();
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment