Pass up flags for the main resource and user gesture.
This requires a change to the framework.
diff --git a/WebCore/platform/network/android/ResourceHandleAndroid.cpp b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
index 15b369a..639582c 100644
--- a/WebCore/platform/network/android/ResourceHandleAndroid.cpp
+++ b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
@@ -29,6 +29,7 @@
#include "ResourceHandle.h"
#include "DocLoader.h"
+#include "DocumentLoader.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClientAndroid.h"
@@ -54,9 +55,12 @@
bool ResourceHandle::start(Frame* frame)
{
+ DocumentLoader* adl = frame->loader()->activeDocumentLoader();
+ bool isMainResource =
+ ((void*) client()) == ((void*) adl->mainResourceLoader());
WebCoreResourceLoader* loader;
FrameLoaderClientAndroid* client = static_cast<FrameLoaderClientAndroid*> (frame->loader()->client());
- loader = client->webFrame()->startLoadingResource(this, d->m_request, false);
+ loader = client->webFrame()->startLoadingResource(this, d->m_request, isMainResource, false);
if (loader) {
Release(d->m_loader);
@@ -147,7 +151,7 @@
ResourceHandle h(request, &s, false, false, false);
// This blocks until the load is finished.
FrameLoaderClientAndroid* client = static_cast<FrameLoaderClientAndroid*> (frame->loader()->client());
- client->webFrame()->startLoadingResource(&h, request, true);
+ client->webFrame()->startLoadingResource(&h, request, false, true);
}
} // namespace WebCore
diff --git a/WebKit/android/jni/WebCoreFrameBridge.cpp b/WebKit/android/jni/WebCoreFrameBridge.cpp
index 4255422..c420b4c 100644
--- a/WebKit/android/jni/WebCoreFrameBridge.cpp
+++ b/WebKit/android/jni/WebCoreFrameBridge.cpp
@@ -170,7 +170,7 @@
mJavaFrame->mObj = adoptGlobalRef(env, obj);
mJavaFrame->mHistoryList = adoptGlobalRef(env, historyList);
mJavaFrame->mStartLoadingResource = env->GetMethodID(clazz, "startLoadingResource",
- "(ILjava/lang/String;Ljava/lang/String;Ljava/util/HashMap;[BJIZ)Landroid/webkit/LoadListener;");
+ "(ILjava/lang/String;Ljava/lang/String;Ljava/util/HashMap;[BJIZZZ)Landroid/webkit/LoadListener;");
mJavaFrame->mLoadStarted = env->GetMethodID(clazz, "loadStarted",
"(Ljava/lang/String;Landroid/graphics/Bitmap;IZ)V");
mJavaFrame->mTransitionToCommitted = env->GetMethodID(clazz, "transitionToCommitted",
@@ -323,6 +323,7 @@
WebCoreResourceLoader*
WebFrame::startLoadingResource(WebCore::ResourceHandle* loader,
const WebCore::ResourceRequest& request,
+ bool mainResource,
bool synchronous)
{
#ifdef ANDROID_INSTRUMENT
@@ -443,7 +444,8 @@
env->CallObjectMethod(obj.get(), mJavaFrame->mStartLoadingResource,
(int)loader, jUrlStr, jMethodStr, jHeaderMap,
jPostDataStr, formdata ? formdata->identifier(): 0,
- cacheMode, synchronous);
+ cacheMode, mainResource, request.getUserGesture(),
+ synchronous);
env->DeleteLocalRef(jUrlStr);
env->DeleteLocalRef(jMethodStr);
diff --git a/WebKit/android/jni/WebCoreFrameBridge.h b/WebKit/android/jni/WebCoreFrameBridge.h
index 51ed9a6..1fdf140 100644
--- a/WebKit/android/jni/WebCoreFrameBridge.h
+++ b/WebKit/android/jni/WebCoreFrameBridge.h
@@ -63,7 +63,7 @@
static WebFrame* getWebFrame(const WebCore::Frame* frame);
virtual WebCoreResourceLoader* startLoadingResource(WebCore::ResourceHandle*,
- const WebCore::ResourceRequest& request,
+ const WebCore::ResourceRequest& request, bool mainResource,
bool synchronous);
void reportError(int errorCode, const WebCore::String& description,