| Index: content/browser/android/content_view_core_impl.cc
|
| diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc
|
| index 174879ccda5e17343e245ffe5ae5d75d96a6e297..ed5ec241d3e73ba01d1bce834cfce741935a4d0e 100644
|
| --- a/content/browser/android/content_view_core_impl.cc
|
| +++ b/content/browser/android/content_view_core_impl.cc
|
| @@ -1033,6 +1033,12 @@ void ContentViewCoreImpl::GoToOffset(JNIEnv* env, jobject obj, jint offset) {
|
| web_contents_->GetController().GoToOffset(offset);
|
| }
|
|
|
| +void ContentViewCoreImpl::GoToNavigationIndex(JNIEnv* env,
|
| + jobject obj,
|
| + jint index) {
|
| + web_contents_->GetController().GoToIndex(index);
|
| +}
|
| +
|
| void ContentViewCoreImpl::StopLoading(JNIEnv* env, jobject obj) {
|
| web_contents_->Stop();
|
| }
|
| @@ -1155,6 +1161,34 @@ void ContentViewCoreImpl::ScrollFocusedEditableNodeIntoView(JNIEnv* env,
|
| gfx::Rect()));
|
| }
|
|
|
| +namespace {
|
| +
|
| +static void AddNavigationEntryToHistory(JNIEnv* env, jobject obj,
|
| + jobject history,
|
| + NavigationEntry* entry,
|
| + int index) {
|
| + // Get the details of the current entry
|
| + ScopedJavaLocalRef<jstring> j_url(
|
| + ConvertUTF8ToJavaString(env, entry->GetURL().spec()));
|
| + ScopedJavaLocalRef<jstring> j_virtual_url(
|
| + ConvertUTF8ToJavaString(env, entry->GetVirtualURL().spec()));
|
| + ScopedJavaLocalRef<jstring> j_original_url(
|
| + ConvertUTF8ToJavaString(env, entry->GetOriginalRequestURL().spec()));
|
| + ScopedJavaLocalRef<jstring> j_title(
|
| + ConvertUTF16ToJavaString(env, entry->GetTitle()));
|
| + ScopedJavaLocalRef<jobject> j_bitmap;
|
| + const FaviconStatus& status = entry->GetFavicon();
|
| + if (status.valid && status.image.ToSkBitmap()->getSize() > 0)
|
| + j_bitmap = gfx::ConvertToJavaBitmap(status.image.ToSkBitmap());
|
| +
|
| + // Add the item to the list
|
| + Java_ContentViewCore_addToNavigationHistory(
|
| + env, obj, history, index, j_url.obj(), j_virtual_url.obj(),
|
| + j_original_url.obj(), j_title.obj(), j_bitmap.obj());
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| int ContentViewCoreImpl::GetNavigationHistory(JNIEnv* env,
|
| jobject obj,
|
| jobject context) {
|
| @@ -1162,32 +1196,35 @@ int ContentViewCoreImpl::GetNavigationHistory(JNIEnv* env,
|
| const NavigationController& controller = web_contents_->GetController();
|
| int count = controller.GetEntryCount();
|
| for (int i = 0; i < count; ++i) {
|
| - NavigationEntry* entry = controller.GetEntryAtIndex(i);
|
| -
|
| - // Get the details of the current entry
|
| - ScopedJavaLocalRef<jstring> j_url = ConvertUTF8ToJavaString(env,
|
| - entry->GetURL().spec());
|
| - ScopedJavaLocalRef<jstring> j_virtual_url = ConvertUTF8ToJavaString(env,
|
| - entry->GetVirtualURL().spec());
|
| - ScopedJavaLocalRef<jstring> j_original_url = ConvertUTF8ToJavaString(env,
|
| - entry->GetOriginalRequestURL().spec());
|
| - ScopedJavaLocalRef<jstring> j_title = ConvertUTF16ToJavaString(env,
|
| - entry->GetTitle());
|
| - ScopedJavaLocalRef<jobject> j_bitmap;
|
| - const FaviconStatus& status = entry->GetFavicon();
|
| - if (status.valid && status.image.ToSkBitmap()->getSize() > 0) {
|
| - j_bitmap = gfx::ConvertToJavaBitmap(status.image.ToSkBitmap());
|
| - }
|
| -
|
| - // Add the item to the list
|
| - Java_ContentViewCore_addToNavigationHistory(env, obj, context, j_url.obj(),
|
| - j_virtual_url.obj(), j_original_url.obj(), j_title.obj(),
|
| - j_bitmap.obj());
|
| + AddNavigationEntryToHistory(
|
| + env, obj, context, controller.GetEntryAtIndex(i), i);
|
| }
|
|
|
| return controller.GetCurrentEntryIndex();
|
| }
|
|
|
| +void ContentViewCoreImpl::GetDirectedNavigationHistory(JNIEnv* env,
|
| + jobject obj,
|
| + jobject context,
|
| + jboolean is_forward,
|
| + jint max_entries) {
|
| + // Iterate through navigation entries to populate the list
|
| + const NavigationController& controller = web_contents_->GetController();
|
| + int count = controller.GetEntryCount();
|
| + int num_added = 0;
|
| + int increment_value = is_forward ? 1 : -1;
|
| + for (int i = controller.GetCurrentEntryIndex() + increment_value;
|
| + i >= 0 && i < count;
|
| + i += increment_value) {
|
| + if (num_added >= max_entries)
|
| + break;
|
| +
|
| + AddNavigationEntryToHistory(
|
| + env, obj, context, controller.GetEntryAtIndex(i), i);
|
| + num_added++;
|
| + }
|
| +}
|
| +
|
| int ContentViewCoreImpl::GetNativeImeAdapter(JNIEnv* env, jobject obj) {
|
| RenderWidgetHostViewAndroid* rwhva = GetRenderWidgetHostViewAndroid();
|
| if (!rwhva)
|
|
|