Title: [89086] trunk/Source/WebCore
Revision
89086
Author
[email protected]
Date
2011-06-16 16:45:15 -0700 (Thu, 16 Jun 2011)

Log Message

2011-06-16  Nate Chapin  <[email protected]>

        Reviewed by Alexey Proskuryakov.

        Set the referrer on a ResourceRequest from a WorkerThreadableLoader
        as soon as the request reaches the main thread and remove the
        optionalOutgoingReferrer parameter from some functions.
        https://bugs.webkit.org/show_bug.cgi?id=62806

        * loader/DocumentThreadableLoader.cpp:
        (WebCore::DocumentThreadableLoader::loadResourceSynchronously):
        (WebCore::DocumentThreadableLoader::create):
        (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
        (WebCore::DocumentThreadableLoader::loadRequest):
        * loader/DocumentThreadableLoader.h:
        * loader/ResourceLoadScheduler.cpp:
        (WebCore::ResourceLoadScheduler::scheduleSubresourceLoad):
        * loader/ResourceLoadScheduler.h:
        * loader/SubresourceLoader.cpp:
        (WebCore::SubresourceLoader::create):
        * loader/SubresourceLoader.h:
        * loader/WorkerThreadableLoader.cpp:
        (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (89085 => 89086)


--- trunk/Source/WebCore/ChangeLog	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/ChangeLog	2011-06-16 23:45:15 UTC (rev 89086)
@@ -1,3 +1,27 @@
+2011-06-16  Nate Chapin  <[email protected]>
+
+        Reviewed by Alexey Proskuryakov.
+
+        Set the referrer on a ResourceRequest from a WorkerThreadableLoader
+        as soon as the request reaches the main thread and remove the
+        optionalOutgoingReferrer parameter from some functions.
+        https://bugs.webkit.org/show_bug.cgi?id=62806
+
+        * loader/DocumentThreadableLoader.cpp:
+        (WebCore::DocumentThreadableLoader::loadResourceSynchronously):
+        (WebCore::DocumentThreadableLoader::create):
+        (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
+        (WebCore::DocumentThreadableLoader::loadRequest):
+        * loader/DocumentThreadableLoader.h:
+        * loader/ResourceLoadScheduler.cpp:
+        (WebCore::ResourceLoadScheduler::scheduleSubresourceLoad):
+        * loader/ResourceLoadScheduler.h:
+        * loader/SubresourceLoader.cpp:
+        (WebCore::SubresourceLoader::create):
+        * loader/SubresourceLoader.h:
+        * loader/WorkerThreadableLoader.cpp:
+        (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
+
 2011-06-16  Eric Seidel  <[email protected]>
 
         Reviewed by Adam Barth.

Modified: trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp (89085 => 89086)


--- trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp	2011-06-16 23:45:15 UTC (rev 89086)
@@ -51,30 +51,29 @@
 void DocumentThreadableLoader::loadResourceSynchronously(Document* document, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options)
 {
     // The loader will be deleted as soon as this function exits.
-    RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, &client, LoadSynchronously, request, options, String()));
+    RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, &client, LoadSynchronously, request, options));
     ASSERT(loader->hasOneRef());
 }
 
-PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options, const String& optionalOutgoingReferrer)
+PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options)
 {
-    RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, request, options, optionalOutgoingReferrer));
+    RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, request, options));
     if (!loader->m_loader)
         loader = 0;
     return loader.release();
 }
 
-DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options, const String& optionalOutgoingReferrer)
+DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options)
     : m_client(client)
     , m_document(document)
     , m_options(options)
-    , m_optionalOutgoingReferrer(optionalOutgoingReferrer)
     , m_sameOriginRequest(securityOrigin()->canRequest(request.url()))
     , m_async(blockingBehavior == LoadAsynchronously)
 {
     ASSERT(document);
     ASSERT(client);
     // Setting an outgoing referer is only supported in the async code path.
-    ASSERT(m_async || m_optionalOutgoingReferrer.isEmpty());
+    ASSERT(m_async || request.httpReferrer().isEmpty());
 
     if (m_sameOriginRequest || m_options.crossOriginRequestPolicy == AllowCrossOriginRequests) {
         loadRequest(request, DoSecurityCheck);
@@ -327,7 +326,7 @@
         // Clear the loader so that any callbacks from SubresourceLoader::create will not have the old loader.
         m_loader = 0;
         m_loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_document->frame(), this, request, ResourceLoadPriorityMedium, securityCheck, sendLoadCallbacks,
-                                                                    sniffContent, m_optionalOutgoingReferrer, shouldBufferData);
+                                                                    sniffContent, shouldBufferData);
         return;
     }
     

Modified: trunk/Source/WebCore/loader/DocumentThreadableLoader.h (89085 => 89086)


--- trunk/Source/WebCore/loader/DocumentThreadableLoader.h	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/DocumentThreadableLoader.h	2011-06-16 23:45:15 UTC (rev 89086)
@@ -52,7 +52,7 @@
         WTF_MAKE_FAST_ALLOCATED;
     public:
         static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
-        static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const String& optionalOutgoingReferrer = String());
+        static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&);
         virtual ~DocumentThreadableLoader();
 
         virtual void cancel();
@@ -71,7 +71,7 @@
             LoadAsynchronously
         };
 
-        DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions&, const String& optionalOutgoingReferrer);
+        DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions&);
 
         virtual void willSendRequest(SubresourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse);
         virtual void didSendData(SubresourceLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
@@ -102,7 +102,6 @@
         ThreadableLoaderClient* m_client;
         Document* m_document;
         ThreadableLoaderOptions m_options;
-        String m_optionalOutgoingReferrer;
         bool m_sameOriginRequest;
         bool m_async;
         OwnPtr<ResourceRequest> m_actualRequest;  // non-null during Access Control preflight checks

Modified: trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp (89085 => 89086)


--- trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp	2011-06-16 23:45:15 UTC (rev 89086)
@@ -84,9 +84,9 @@
 }
 
 PassRefPtr<SubresourceLoader> ResourceLoadScheduler::scheduleSubresourceLoad(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, ResourceLoadPriority priority, SecurityCheckPolicy securityCheck,
-                                                                             bool sendResourceLoadCallbacks, bool shouldContentSniff, const String& optionalOutgoingReferrer, bool shouldBufferData)
+                                                                             bool sendResourceLoadCallbacks, bool shouldContentSniff, bool shouldBufferData)
 {
-    RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, client, request, securityCheck, sendResourceLoadCallbacks, shouldContentSniff, optionalOutgoingReferrer, shouldBufferData);
+    RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, client, request, securityCheck, sendResourceLoadCallbacks, shouldContentSniff, shouldBufferData);
     if (loader)
         scheduleLoad(loader.get(), priority);
     return loader.release();

Modified: trunk/Source/WebCore/loader/ResourceLoadScheduler.h (89085 => 89086)


--- trunk/Source/WebCore/loader/ResourceLoadScheduler.h	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/ResourceLoadScheduler.h	2011-06-16 23:45:15 UTC (rev 89086)
@@ -50,7 +50,7 @@
 public:
     friend ResourceLoadScheduler* resourceLoadScheduler();
 
-    PassRefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, SubresourceLoaderClient*, const ResourceRequest&, ResourceLoadPriority = ResourceLoadPriorityLow, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, const String& optionalOutgoingReferrer = String(), bool shouldBufferData = true);
+    PassRefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, SubresourceLoaderClient*, const ResourceRequest&, ResourceLoadPriority = ResourceLoadPriorityLow, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, bool shouldBufferData = true);
     PassRefPtr<NetscapePlugInStreamLoader> schedulePluginStreamLoad(Frame*, NetscapePlugInStreamLoaderClient*, const ResourceRequest&);
     void addMainResourceLoad(ResourceLoader*);
     void remove(ResourceLoader*);

Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (89085 => 89086)


--- trunk/Source/WebCore/loader/SubresourceLoader.cpp	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp	2011-06-16 23:45:15 UTC (rev 89086)
@@ -61,7 +61,7 @@
 #endif
 }
 
-PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks, bool shouldContentSniff, const String& optionalOutgoingReferrer, bool shouldBufferData)
+PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks, bool shouldContentSniff, bool shouldBufferData)
 {
     if (!frame)
         return 0;
@@ -83,11 +83,11 @@
 
     String outgoingReferrer;
     String outgoingOrigin;
-    if (optionalOutgoingReferrer.isNull()) {
+    if (request.httpReferrer().isNull()) {
         outgoingReferrer = fl->outgoingReferrer();
         outgoingOrigin = fl->outgoingOrigin();
     } else {
-        outgoingReferrer = optionalOutgoingReferrer;
+        outgoingReferrer = request.httpReferrer();
         outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer)->toString();
     }
 

Modified: trunk/Source/WebCore/loader/SubresourceLoader.h (89085 => 89086)


--- trunk/Source/WebCore/loader/SubresourceLoader.h	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/SubresourceLoader.h	2011-06-16 23:45:15 UTC (rev 89086)
@@ -41,7 +41,7 @@
     
     class SubresourceLoader : public ResourceLoader {
     public:
-        static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, const String& optionalOutgoingReferrer = String(), bool shouldBufferData = true);
+        static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, bool shouldBufferData = true);
 
         void clearClient() { m_client = 0; }
 

Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp (89085 => 89086)


--- trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp	2011-06-16 23:44:38 UTC (rev 89085)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp	2011-06-16 23:45:15 UTC (rev 89086)
@@ -111,10 +111,11 @@
     Document* document = static_cast<Document*>(context);
 
     OwnPtr<ResourceRequest> request(ResourceRequest::adopt(requestData));
+    request->setHTTPReferrer(outgoingReferrer);
     // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path
     // will return a 0 value.  Either this should return 0 or the other code path should do a callback with
     // a failure.
-    thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, thisPtr, *request, options, outgoingReferrer);
+    thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, thisPtr, *request, options);
     ASSERT(thisPtr->m_mainThreadLoader);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to