summaryrefslogtreecommitdiffstats
path: root/WebKit/android/jni/WebHistory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/android/jni/WebHistory.cpp')
-rw-r--r--WebKit/android/jni/WebHistory.cpp44
1 files changed, 9 insertions, 35 deletions
diff --git a/WebKit/android/jni/WebHistory.cpp b/WebKit/android/jni/WebHistory.cpp
index 8a75230..cd6e0f1 100644
--- a/WebKit/android/jni/WebHistory.cpp
+++ b/WebKit/android/jni/WebHistory.cpp
@@ -39,6 +39,7 @@
#include "FrameLoaderClientAndroid.h"
#include "FrameTree.h"
#include "HistoryItem.h"
+#include "IconDatabase.h"
#include "Page.h"
#include "TextEncoding.h"
#include "WebCoreFrameBridge.h"
@@ -142,9 +143,10 @@ static void WebHistoryRestoreIndex(JNIEnv* env, jobject obj, jint frame, jint in
{
LOG_ASSERT(frame, "RestoreState needs a valid Frame pointer!");
WebCore::Frame* pFrame = (WebCore::Frame*)frame;
+ WebCore::Page* page = pFrame->page();
// Set the current index in the list.
- WebCore::BackForwardList* list = pFrame->page()->backForwardList();
+ WebCore::BackForwardList* list = page->backForwardList();
WebCore::HistoryItem* currentItem = list->entries()[index].get();
list->goToItem(currentItem);
@@ -153,12 +155,9 @@ static void WebHistoryRestoreIndex(JNIEnv* env, jobject obj, jint frame, jint in
loader->setCurrentHistoryItem(currentItem);
loader->setPreviousHistoryItem(list->backItem());
- // Update the request with the current item's info.
- WebCore::ResourceRequest& request = loader->documentLoader()->request();
- request.setURL(currentItem->url());
- request.setMainDocumentURL(currentItem->url());
- // Reload the current page
- loader->reloadAllowingStaleData(loader->documentLoader()->overrideEncoding());
+ // load the current page with FrameLoadTypeIndexedBackForward so that it
+ // will use cache when it is possible
+ page->goToItem(currentItem, FrameLoadTypeIndexedBackForward);
}
static void WebHistoryInflate(JNIEnv* env, jobject obj, jint frame, jbyteArray data)
@@ -200,13 +199,13 @@ static void WebHistoryInflate(JNIEnv* env, jobject obj, jint frame, jbyteArray d
#endif
}
-// 7 empty strings + no document state + children count = 9 unsigned values
+// 6 empty strings + no document state + children count = 8 unsigned values
// 1 char for isTargetItem
// ANDROID_HISTORY_CLIENT adds 1 int for scale.
#ifdef ANDROID_HISTORY_CLIENT
-#define HISTORY_MIN_SIZE ((int)(sizeof(unsigned) * 10 + sizeof(char)))
-#else
#define HISTORY_MIN_SIZE ((int)(sizeof(unsigned) * 9 + sizeof(char)))
+#else
+#define HISTORY_MIN_SIZE ((int)(sizeof(unsigned) * 8 + sizeof(char)))
#endif
jbyteArray WebHistory::Flatten(JNIEnv* env, WTF::Vector<char>& v, WebCore::HistoryItem* item)
@@ -420,9 +419,6 @@ static void write_item(WTF::Vector<char>& v, WebCore::HistoryItem* item)
// Form content type
write_string(v, item->formContentType());
- // Form referrer
- write_string(v, item->formReferrer());
-
// Form data
const WebCore::FormData* formData = item->formData();
if (formData)
@@ -552,7 +548,6 @@ static bool read_item_recursive(WebCore::HistoryItem* newItem,
// Generate a new ResourceRequest object for populating form information.
WebCore::String formContentType;
- WebCore::String formReferrer;
WTF::PassRefPtr<WebCore::FormData> formData = NULL;
// Read the form content type
@@ -569,20 +564,6 @@ static bool read_item_recursive(WebCore::HistoryItem* newItem,
if (end - data < sizeofUnsigned)
return false;
- // Read the form referrer
- memcpy(&l, data, sizeofUnsigned);
- data += sizeofUnsigned;
- if (l) {
- LOGV("Referrer %d %.*s", l, l, data);
- if (data + l < end)
- formReferrer = e.decode(data, l);
- else
- return false;
- data += l;
- }
- if (end - data < sizeofUnsigned)
- return false;
-
// Read the form data
memcpy(&l, data, sizeofUnsigned);
data += sizeofUnsigned;
@@ -602,7 +583,6 @@ static bool read_item_recursive(WebCore::HistoryItem* newItem,
WebCore::ResourceRequest r;
r.setHTTPMethod("POST");
r.setHTTPContentType(formContentType);
- r.setHTTPReferrer(formReferrer);
r.setHTTPBody(formData);
newItem->setFormInfoFromRequest(r);
}
@@ -756,12 +736,6 @@ static void unit_test()
ptr = (const char*)test3;
*(int*)(test3 + offset) = 4000;
LOG_ASSERT(!read_item_recursive(testItem, &ptr, HISTORY_MIN_SIZE), "4000 length contentType should fail!");
- // Form referrer
- offset += 4;
- memset(test3, 0, HISTORY_MIN_SIZE);
- ptr = (const char*)test3;
- *(int*)(test3 + offset) = 4000;
- LOG_ASSERT(!read_item_recursive(testItem, &ptr, HISTORY_MIN_SIZE), "4000 length referrer should fail!");
// Form data
offset += 4;
memset(test3, 0, HISTORY_MIN_SIZE);