Title: [238937] trunk/Source/WebKit
Revision
238937
Author
[email protected]
Date
2018-12-06 12:07:38 -0800 (Thu, 06 Dec 2018)

Log Message

-[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view
https://bugs.webkit.org/show_bug.cgi?id=192411
rdar://problem/46492487

Reviewed by Alex Christensen.

* UIProcess/API/C/WKContext.cpp:
(WKContextResumeDownload):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _resumeDownloadFromData:path:originatingWebView:]):
(-[WKProcessPool _resumeDownloadFromData:path:]): Deleted.
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::resumeDownload):
 - Set the originating page of the DownloadProxy.
 - If the originating page is non-null, use its session ID for the download.
 - Remove a FIXME. It's possible to do this now by providing the web view whose session
   should be used for the download.
* UIProcess/WebProcessPool.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (238936 => 238937)


--- trunk/Source/WebKit/ChangeLog	2018-12-06 19:35:35 UTC (rev 238936)
+++ trunk/Source/WebKit/ChangeLog	2018-12-06 20:07:38 UTC (rev 238937)
@@ -1,3 +1,25 @@
+2018-12-06  David Quesada  <[email protected]>
+
+        -[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view
+        https://bugs.webkit.org/show_bug.cgi?id=192411
+        rdar://problem/46492487
+
+        Reviewed by Alex Christensen.
+
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextResumeDownload):
+        * UIProcess/API/Cocoa/WKProcessPool.mm:
+        (-[WKProcessPool _resumeDownloadFromData:path:originatingWebView:]):
+        (-[WKProcessPool _resumeDownloadFromData:path:]): Deleted.
+        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::resumeDownload):
+         - Set the originating page of the DownloadProxy.
+         - If the originating page is non-null, use its session ID for the download.
+         - Remove a FIXME. It's possible to do this now by providing the web view whose session
+           should be used for the download.
+        * UIProcess/WebProcessPool.h:
+
 2018-12-06  Jiewen Tan  <[email protected]>
 
         Unreviewed, a quick fix after r238919

Modified: trunk/Source/WebKit/UIProcess/API/C/WKContext.cpp (238936 => 238937)


--- trunk/Source/WebKit/UIProcess/API/C/WKContext.cpp	2018-12-06 19:35:35 UTC (rev 238936)
+++ trunk/Source/WebKit/UIProcess/API/C/WKContext.cpp	2018-12-06 20:07:38 UTC (rev 238937)
@@ -282,7 +282,7 @@
 
 WKDownloadRef WKContextResumeDownload(WKContextRef contextRef, WKDataRef resumeData, WKStringRef path)
 {
-    return toAPI(toImpl(contextRef)->resumeDownload(toImpl(resumeData), toWTFString(path)));
+    return toAPI(toImpl(contextRef)->resumeDownload(nullptr, toImpl(resumeData), toWTFString(path)));
 }
 
 void WKContextSetInitializationUserDataForInjectedBundle(WKContextRef contextRef,  WKTypeRef userDataRef)

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (238936 => 238937)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm	2018-12-06 19:35:35 UTC (rev 238936)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm	2018-12-06 20:07:38 UTC (rev 238937)
@@ -576,9 +576,9 @@
     return (_WKDownload *)_processPool->download([webView _page], request)->wrapper();
 }
 
-- (_WKDownload *)_resumeDownloadFromData:(NSData *)resumeData path:(NSString *)path
+- (_WKDownload *)_resumeDownloadFromData:(NSData *)resumeData path:(NSString *)path originatingWebView:(WKWebView *)webView
 {
-    return wrapper(_processPool->resumeDownload(API::Data::createWithoutCopying(resumeData).ptr(), path));
+    return wrapper(_processPool->resumeDownload([webView _page], API::Data::createWithoutCopying(resumeData).ptr(), path));
 }
 
 - (void)_getActivePagesOriginsInWebProcessForTesting:(pid_t)pid completionHandler:(void(^)(NSArray<NSString *> *))completionHandler

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (238936 => 238937)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h	2018-12-06 19:35:35 UTC (rev 238936)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h	2018-12-06 20:07:38 UTC (rev 238937)
@@ -82,7 +82,7 @@
 - (void)_registerURLSchemeAsCanDisplayOnlyIfCanRequest:(NSString *)scheme WK_API_AVAILABLE(macosx(10.14), ios(12.0));
 
 - (_WKDownload *)_downloadURLRequest:(NSURLRequest *)request originatingWebView:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
-- (_WKDownload *)_resumeDownloadFromData:(NSData *)resumeData path:(NSString *)path WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+- (_WKDownload *)_resumeDownloadFromData:(NSData *)resumeData path:(NSString *)path originatingWebView:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
 
 // Test only. Should be called only while no web content processes are running.
 - (void)_terminateNetworkProcess;

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (238936 => 238937)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-12-06 19:35:35 UTC (rev 238936)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-12-06 20:07:38 UTC (rev 238937)
@@ -1261,9 +1261,10 @@
     return downloadProxy;
 }
 
-DownloadProxy* WebProcessPool::resumeDownload(const API::Data* resumeData, const String& path)
+DownloadProxy* WebProcessPool::resumeDownload(WebPageProxy* initiatingPage, const API::Data* resumeData, const String& path)
 {
-    auto* downloadProxy = createDownloadProxy(ResourceRequest(), nullptr);
+    auto* downloadProxy = createDownloadProxy(ResourceRequest(), initiatingPage);
+    PAL::SessionID sessionID = initiatingPage ? initiatingPage->sessionID() : PAL::SessionID::defaultSessionID();
 
     SandboxExtension::Handle sandboxExtensionHandle;
     if (!path.isEmpty())
@@ -1270,8 +1271,7 @@
         SandboxExtension::createHandle(path, SandboxExtension::Type::ReadWrite, sandboxExtensionHandle);
 
     if (networkProcess()) {
-        // FIXME: If we started a download in an ephemeral session and that session still exists, we should find a way to use that same session.
-        networkProcess()->send(Messages::NetworkProcess::ResumeDownload(PAL::SessionID::defaultSessionID(), downloadProxy->downloadID(), resumeData->dataReference(), path, sandboxExtensionHandle), 0);
+        networkProcess()->send(Messages::NetworkProcess::ResumeDownload(sessionID, downloadProxy->downloadID(), resumeData->dataReference(), path, sandboxExtensionHandle), 0);
         return downloadProxy;
     }
 

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (238936 => 238937)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2018-12-06 19:35:35 UTC (rev 238936)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2018-12-06 20:07:38 UTC (rev 238937)
@@ -189,7 +189,7 @@
     const String& injectedBundlePath() const { return m_configuration->injectedBundlePath(); }
 
     DownloadProxy* download(WebPageProxy* initiatingPage, const WebCore::ResourceRequest&, const String& suggestedFilename = { });
-    DownloadProxy* resumeDownload(const API::Data* resumeData, const String& path);
+    DownloadProxy* resumeDownload(WebPageProxy* initiatingPage, const API::Data* resumeData, const String& path);
 
     void setInjectedBundleInitializationUserData(RefPtr<API::Object>&& userData) { m_injectedBundleInitializationUserData = WTFMove(userData); }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to