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