Title: [176626] trunk/Source
Revision
176626
Author
[email protected]
Date
2014-12-01 20:28:25 -0800 (Mon, 01 Dec 2014)

Log Message

Add cancelable version of willSendRequest
https://bugs.webkit.org/show_bug.cgi?id=138987

Reviewed by Anders Carlsson.

Source/WebCore:

Covered by existing tests.

* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequest):
* loader/ResourceLoader.h:

Source/WebKit2:

* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::willSendRequest):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (176625 => 176626)


--- trunk/Source/WebCore/ChangeLog	2014-12-02 04:09:24 UTC (rev 176625)
+++ trunk/Source/WebCore/ChangeLog	2014-12-02 04:28:25 UTC (rev 176626)
@@ -1,3 +1,16 @@
+2014-11-20  Jeffrey Pfau  <[email protected]>
+
+        Add cancelable version of willSendRequest
+        https://bugs.webkit.org/show_bug.cgi?id=138987
+
+        Reviewed by Anders Carlsson.
+
+        Covered by existing tests.
+
+        * loader/ResourceLoader.cpp:
+        (WebCore::ResourceLoader::willSendRequest):
+        * loader/ResourceLoader.h:
+
 2014-12-01  Benjamin Poulain  <[email protected]>
 
         Add the dynamic specificity of the selector list argument when matching :nth-child() and :nth-last-child()

Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (176625 => 176626)


--- trunk/Source/WebCore/loader/ResourceLoader.cpp	2014-12-02 04:09:24 UTC (rev 176625)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp	2014-12-02 04:28:25 UTC (rev 176626)
@@ -286,6 +286,12 @@
         frameLoader()->client().dispatchDidReceiveServerRedirectForProvisionalLoad();
 }
 
+void ResourceLoader::willSendRequest(ResourceRequest&& request, const ResourceResponse& redirectResponse, std::function<void(ResourceRequest&)> callback)
+{
+    willSendRequest(request, redirectResponse);
+    callback(request);
+}
+
 void ResourceLoader::didSendData(unsigned long long, unsigned long long)
 {
 }

Modified: trunk/Source/WebCore/loader/ResourceLoader.h (176625 => 176626)


--- trunk/Source/WebCore/loader/ResourceLoader.h	2014-12-02 04:09:24 UTC (rev 176625)
+++ trunk/Source/WebCore/loader/ResourceLoader.h	2014-12-02 04:28:25 UTC (rev 176626)
@@ -91,8 +91,9 @@
     void clearResourceData();
     
     virtual bool isSubresourceLoader();
-    
+
     virtual void willSendRequest(ResourceRequest&, const ResourceResponse& redirectResponse);
+    virtual void willSendRequest(ResourceRequest&&, const ResourceResponse& redirectResponse, std::function<void(ResourceRequest&)> callback);
     virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
     virtual void didReceiveResponse(const ResourceResponse&);
     virtual void didReceiveData(const char*, unsigned, long long encodedDataLength, DataPayloadType);

Modified: trunk/Source/WebKit2/ChangeLog (176625 => 176626)


--- trunk/Source/WebKit2/ChangeLog	2014-12-02 04:09:24 UTC (rev 176625)
+++ trunk/Source/WebKit2/ChangeLog	2014-12-02 04:28:25 UTC (rev 176626)
@@ -1,3 +1,13 @@
+2014-11-20  Jeffrey Pfau  <[email protected]>
+
+        Add cancelable version of willSendRequest
+        https://bugs.webkit.org/show_bug.cgi?id=138987
+
+        Reviewed by Anders Carlsson.
+
+        * WebProcess/Network/WebResourceLoader.cpp:
+        (WebKit::WebResourceLoader::willSendRequest):
+
 2014-12-01  Conrad Shultz  <[email protected]>
 
         Clients need a way to explicitly set the title of a page preview

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (176625 => 176626)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2014-12-02 04:09:24 UTC (rev 176625)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2014-12-02 04:28:25 UTC (rev 176626)
@@ -83,18 +83,21 @@
 {
     LOG(Network, "(WebProcess) WebResourceLoader::willSendRequest to '%s'", proposedRequest.url().string().utf8().data());
 
-    Ref<WebResourceLoader> protect(*this);
+    RefPtr<WebResourceLoader> protect(this);
 
     ResourceRequest newRequest = proposedRequest;
     if (m_coreLoader->documentLoader()->applicationCacheHost()->maybeLoadFallbackForRedirect(m_coreLoader.get(), newRequest, redirectResponse))
         return;
     // FIXME: Do we need to update NetworkResourceLoader clientCredentialPolicy in case loader policy is DoNotAskClientForCrossOriginCredentials?
-    m_coreLoader->willSendRequest(newRequest, redirectResponse);
-    
-    if (!m_coreLoader)
-        return;
-    
-    send(Messages::NetworkResourceLoader::ContinueWillSendRequest(newRequest));
+    m_coreLoader->willSendRequest(WTF::move(newRequest), redirectResponse, [protect](ResourceRequest& request) {
+        if (!protect->m_coreLoader)
+            return;
+
+        if (!request.isNull())
+            protect->send(Messages::NetworkResourceLoader::ContinueWillSendRequest(request));
+        else
+            protect->m_coreLoader->cancel();
+    });
 }
 
 void WebResourceLoader::didSendData(uint64_t bytesSent, uint64_t totalBytesToBeSent)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to