OSDN Git Service

Pass up flags for the main resource and user gesture.
authorPatrick Scott <phanna@android.com>
Fri, 4 Dec 2009 18:18:31 +0000 (13:18 -0500)
committerPatrick Scott <phanna@android.com>
Fri, 4 Dec 2009 18:18:31 +0000 (13:18 -0500)
This requires a change to the framework.

WebCore/platform/network/android/ResourceHandleAndroid.cpp
WebKit/android/jni/WebCoreFrameBridge.cpp
WebKit/android/jni/WebCoreFrameBridge.h

index 15b369a..639582c 100644 (file)
@@ -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 @@ ResourceHandle::~ResourceHandle()
 
 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 @@ void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request,
     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
index 4255422..c420b4c 100644 (file)
@@ -170,7 +170,7 @@ WebFrame::WebFrame(JNIEnv* env, jobject obj, jobject historyList, WebCore::Page*
     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 @@ private:
 WebCoreResourceLoader*
 WebFrame::startLoadingResource(WebCore::ResourceHandle* loader,
                                   const WebCore::ResourceRequest& request,
+                                  bool mainResource,
                                   bool synchronous)
 {
 #ifdef ANDROID_INSTRUMENT
@@ -443,7 +444,8 @@ WebFrame::startLoadingResource(WebCore::ResourceHandle* loader,
         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);
index 51ed9a6..1fdf140 100644 (file)
@@ -63,7 +63,7 @@ class WebFrame : public WebCoreRefObject {
     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,