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; ...@@ -22,11 +22,12 @@ using base::android::ConvertUTF8ToJavaString;
namespace { namespace {
// static // static
static void AddNavigationEntryToHistory(JNIEnv* env, static base::android::ScopedJavaLocalRef<jobject> CreateJavaNavigationEntry(
jobject obj, JNIEnv* env,
jobject history,
content::NavigationEntry* entry, content::NavigationEntry* entry,
int index) { int index) {
DCHECK(entry);
// Get the details of the current entry // Get the details of the current entry
ScopedJavaLocalRef<jstring> j_url( ScopedJavaLocalRef<jstring> j_url(
ConvertUTF8ToJavaString(env, entry->GetURL().spec())); ConvertUTF8ToJavaString(env, entry->GetURL().spec()));
...@@ -41,11 +42,8 @@ static void AddNavigationEntryToHistory(JNIEnv* env, ...@@ -41,11 +42,8 @@ static void AddNavigationEntryToHistory(JNIEnv* env,
if (status.valid && status.image.ToSkBitmap()->getSize() > 0) if (status.valid && status.image.ToSkBitmap()->getSize() > 0)
j_bitmap = gfx::ConvertToJavaBitmap(status.image.ToSkBitmap()); j_bitmap = gfx::ConvertToJavaBitmap(status.image.ToSkBitmap());
// Add the item to the list return content::Java_NavigationControllerImpl_createNavigationEntry(
content::Java_NavigationControllerImpl_addToNavigationHistory(
env, env,
obj,
history,
index, index,
j_url.obj(), j_url.obj(),
j_virtual_url.obj(), j_virtual_url.obj(),
...@@ -54,6 +52,16 @@ static void AddNavigationEntryToHistory(JNIEnv* env, ...@@ -54,6 +52,16 @@ static void AddNavigationEntryToHistory(JNIEnv* env,
j_bitmap.obj()); 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
namespace content { namespace content {
...@@ -216,7 +224,7 @@ jint NavigationControllerAndroid::GetNavigationHistory(JNIEnv* env, ...@@ -216,7 +224,7 @@ jint NavigationControllerAndroid::GetNavigationHistory(JNIEnv* env,
int count = navigation_controller_->GetEntryCount(); int count = navigation_controller_->GetEntryCount();
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
AddNavigationEntryToHistory( AddNavigationEntryToHistory(
env, obj, history, navigation_controller_->GetEntryAtIndex(i), i); env, history, navigation_controller_->GetEntryAtIndex(i), i);
} }
return navigation_controller_->GetCurrentEntryIndex(); return navigation_controller_->GetCurrentEntryIndex();
...@@ -239,7 +247,7 @@ void NavigationControllerAndroid::GetDirectedNavigationHistory( ...@@ -239,7 +247,7 @@ void NavigationControllerAndroid::GetDirectedNavigationHistory(
break; break;
AddNavigationEntryToHistory( AddNavigationEntryToHistory(
env, obj, history, navigation_controller_->GetEntryAtIndex(i), i); env, history, navigation_controller_->GetEntryAtIndex(i), i);
num_added++; num_added++;
} }
} }
...@@ -292,4 +300,15 @@ void NavigationControllerAndroid::SetUseDesktopUserAgent( ...@@ -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 } // namespace content
...@@ -66,6 +66,8 @@ class CONTENT_EXPORT NavigationControllerAndroid { ...@@ -66,6 +66,8 @@ class CONTENT_EXPORT NavigationControllerAndroid {
jobject /* obj */, jobject /* obj */,
jboolean state, jboolean state,
jboolean reload_on_state_change); jboolean reload_on_state_change);
base::android::ScopedJavaLocalRef<jobject> GetPendingEntry(JNIEnv* env,
jobject /* obj */);
int GetNavigationHistory(JNIEnv* env, jobject obj, jobject history); int GetNavigationHistory(JNIEnv* env, jobject obj, jobject history);
void GetDirectedNavigationHistory(JNIEnv* env, void GetDirectedNavigationHistory(JNIEnv* env,
jobject obj, jobject obj,
......
...@@ -180,14 +180,6 @@ import org.chromium.content_public.browser.NavigationHistory; ...@@ -180,14 +180,6 @@ import org.chromium.content_public.browser.NavigationHistory;
return nativeGetOriginalUrlForVisibleNavigationEntry(mNativeNavigationControllerAndroid); 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 @Override
public void clearSslPreferences() { public void clearSslPreferences() {
if (mNativeNavigationControllerAndroid != 0) { if (mNativeNavigationControllerAndroid != 0) {
...@@ -209,6 +201,26 @@ import org.chromium.content_public.browser.NavigationHistory; ...@@ -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 nativeCanGoBack(long nativeNavigationControllerAndroid);
private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid); private native boolean nativeCanGoForward(long nativeNavigationControllerAndroid);
private native void nativeLoadIfNecessary(long nativeNavigationControllerAndroid); private native void nativeLoadIfNecessary(long nativeNavigationControllerAndroid);
...@@ -251,4 +263,5 @@ import org.chromium.content_public.browser.NavigationHistory; ...@@ -251,4 +263,5 @@ import org.chromium.content_public.browser.NavigationHistory;
private native boolean nativeGetUseDesktopUserAgent(long nativeNavigationControllerAndroid); private native boolean nativeGetUseDesktopUserAgent(long nativeNavigationControllerAndroid);
private native void nativeSetUseDesktopUserAgent(long nativeNavigationControllerAndroid, private native void nativeSetUseDesktopUserAgent(long nativeNavigationControllerAndroid,
boolean override, boolean reloadOnChange); boolean override, boolean reloadOnChange);
private native NavigationEntry nativeGetPendingEntry(long nativeNavigationControllerAndroid);
} }
...@@ -132,4 +132,10 @@ public interface NavigationController { ...@@ -132,4 +132,10 @@ public interface NavigationController {
* @param reloadOnChange Reload the page if the UA has changed. * @param reloadOnChange Reload the page if the UA has changed.
*/ */
public void setUseDesktopUserAgent(boolean override, boolean reloadOnChange); 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