Title: [197496] trunk/Source/WebKit2
Revision
197496
Author
[email protected]
Date
2016-03-02 23:36:17 -0800 (Wed, 02 Mar 2016)

Log Message

Properly cancel downloads when using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=154893

Patch by Alex Christensen <[email protected]> on 2016-03-02
Reviewed by Brady Eidson.

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::Download):
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
(WebKit::Download::cancel):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (197495 => 197496)


--- trunk/Source/WebKit2/ChangeLog	2016-03-03 06:37:30 UTC (rev 197495)
+++ trunk/Source/WebKit2/ChangeLog	2016-03-03 07:36:17 UTC (rev 197496)
@@ -1,3 +1,18 @@
+2016-03-02  Alex Christensen  <[email protected]>
+
+        Properly cancel downloads when using NetworkSession
+        https://bugs.webkit.org/show_bug.cgi?id=154893
+
+        Reviewed by Brady Eidson.
+
+        * NetworkProcess/Downloads/Download.cpp:
+        (WebKit::Download::Download):
+        * NetworkProcess/Downloads/Download.h:
+        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
+        (WebKit::Download::cancel):
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):
+
 2016-03-01  Ada Chan  <[email protected]>
 
         Update the media element's presentation mode properly after going in and out of full screen via the Full Screen API

Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp (197495 => 197496)


--- trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp	2016-03-03 06:37:30 UTC (rev 197495)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/Download.cpp	2016-03-03 07:36:17 UTC (rev 197496)
@@ -43,8 +43,8 @@
 
 namespace WebKit {
 
-#if USE(NETWORK_SESSION)
-Download::Download(DownloadManager& downloadManager, DownloadID downloadID)
+#if USE(NETWORK_SESSION) && PLATFORM(COCOA)
+Download::Download(DownloadManager& downloadManager, DownloadID downloadID, NSURLSessionDownloadTask* download)
 #else
 Download::Download(DownloadManager& downloadManager, DownloadID downloadID, const ResourceRequest& request)
 #endif
@@ -53,6 +53,9 @@
 #if !USE(NETWORK_SESSION)
     , m_request(request)
 #endif
+#if USE(NETWORK_SESSION) && PLATFORM(COCOA)
+    , m_download(download)
+#endif
 {
     ASSERT(m_downloadID.downloadID());
 

Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h (197495 => 197496)


--- trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h	2016-03-03 06:37:30 UTC (rev 197495)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/Download.h	2016-03-03 07:36:17 UTC (rev 197496)
@@ -75,8 +75,8 @@
 class Download : public IPC::MessageSender {
     WTF_MAKE_NONCOPYABLE(Download);
 public:
-#if USE(NETWORK_SESSION)
-    Download(DownloadManager&, DownloadID);
+#if USE(NETWORK_SESSION) && PLATFORM(COCOA)
+    Download(DownloadManager&, DownloadID, NSURLSessionDownloadTask*);
 #else
     Download(DownloadManager&, DownloadID, const WebCore::ResourceRequest&);
 #endif

Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm (197495 => 197496)


--- trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm	2016-03-03 06:37:30 UTC (rev 197495)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm	2016-03-03 07:36:17 UTC (rev 197496)
@@ -40,9 +40,13 @@
     
 void Download::cancel()
 {
-    [m_download cancelByProducingResumeData: ^(NSData *resumeData)
+    ASSERT(m_download);
+    [m_download cancelByProducingResumeData: ^(NSData * _Nullable resumeData)
     {
-        didCancel(IPC::DataReference(reinterpret_cast<const uint8_t*>([resumeData bytes]), [resumeData length]));
+        if (resumeData && resumeData.bytes && resumeData.length)
+            didCancel(IPC::DataReference(reinterpret_cast<const uint8_t*>(resumeData.bytes), resumeData.length));
+        else
+            didCancel({ });
     }];
 }
 

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (197495 => 197496)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2016-03-03 06:37:30 UTC (rev 197495)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2016-03-03 07:36:17 UTC (rev 197496)
@@ -197,7 +197,7 @@
     if (auto* networkDataTask = _session->dataTaskForIdentifier([dataTask taskIdentifier], storedCredentials)) {
         auto downloadID = networkDataTask->pendingDownloadID();
         auto& downloadManager = WebKit::NetworkProcess::singleton().downloadManager();
-        auto download = std::make_unique<WebKit::Download>(downloadManager, downloadID);
+        auto download = std::make_unique<WebKit::Download>(downloadManager, downloadID, downloadTask);
         networkDataTask->transferSandboxExtensionToDownload(*download);
         ASSERT(WebCore::fileExists(networkDataTask->pendingDownloadLocation()));
         download->didCreateDestination(networkDataTask->pendingDownloadLocation());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to