WebKit Bugzilla
Attachment 356621 Details for
Bug 192411
: -[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
file_192411.txt (text/plain), 7.68 KB, created by
David Quesada
on 2018-12-05 10:59:04 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
David Quesada
Created:
2018-12-05 10:59:04 PST
Size:
7.68 KB
patch
obsolete
>commit 22a3f4663ddadd8a1f8d1e7fbc3bec77805b684d >Author: David Quesada <david_quesada@apple.com> >Date: Wed Dec 5 10:58:07 2018 -0800 > > -[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view > https://bugs.webkit.org/show_bug.cgi?id=192411 > rdar://problem/46492487 > > Reviewed by NOBODY (OOPS!). > > * 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: > >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index aa5837d8334..348827b9d48 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,25 @@ >+2018-12-05 David Quesada <david_quesada@apple.com> >+ >+ -[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view >+ https://bugs.webkit.org/show_bug.cgi?id=192411 >+ rdar://problem/46492487 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * 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-04 Alex Christensen <achristensen@webkit.org> > > Remove source application identifiers from NetworkProcessCreationParameters >diff --git a/Source/WebKit/UIProcess/API/C/WKContext.cpp b/Source/WebKit/UIProcess/API/C/WKContext.cpp >index 87016ab758e..e3b468b8011 100644 >--- a/Source/WebKit/UIProcess/API/C/WKContext.cpp >+++ b/Source/WebKit/UIProcess/API/C/WKContext.cpp >@@ -282,7 +282,7 @@ WKDownloadRef WKContextDownloadURLRequest(WKContextRef contextRef, WKURLRequestR > > 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) >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm >index 60face0cea2..a18381ab35a 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm >@@ -576,9 +576,9 @@ - (_WKDownload *)_downloadURLRequest:(NSURLRequest *)request originatingWebView: > 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 >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h >index 8977510717f..3de2c0362bf 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h >@@ -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; >diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp >index 413a9746ec3..981566e2b26 100644 >--- a/Source/WebKit/UIProcess/WebProcessPool.cpp >+++ b/Source/WebKit/UIProcess/WebProcessPool.cpp >@@ -1258,17 +1258,17 @@ DownloadProxy* WebProcessPool::download(WebPageProxy* initiatingPage, const Reso > 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()) > 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; > } > >diff --git a/Source/WebKit/UIProcess/WebProcessPool.h b/Source/WebKit/UIProcess/WebProcessPool.h >index 03da3890ff2..1fa38360b09 100644 >--- a/Source/WebKit/UIProcess/WebProcessPool.h >+++ b/Source/WebKit/UIProcess/WebProcessPool.h >@@ -189,7 +189,7 @@ public: > 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); } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192411
: 356621