- 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); }