[WK2] Add API to query if a download was user-initiated
https://bugs.webkit.org/show_bug.cgi?id=177435
<rdar://problem/
34498422>
Reviewed by Alex Christensen.
Source/WebKit:
Add C and Cocoa private API to query if a download was user-initiated.
For clarity, we now construct navigation object for subframe loads
as well (we used to do so only for main frame loads). This allows us
to store the user-intiated flag and the redirect chain on the navigation
object instead of the WebFrameProxy.
* UIProcess/API/APINavigation.cpp:
(API::Navigation::Navigation):
(API::Navigation::appendRedirectionURL):
* UIProcess/API/APINavigation.h:
(API::Navigation::takeRedirectChain):
(API::Navigation::setWasUserInitiated):
(API::Navigation::wasUserInitiated const):
* UIProcess/API/C/WKDownload.cpp:
(WKDownloadGetWasUserInitiated):
* UIProcess/API/C/WKDownload.h:
* UIProcess/API/Cocoa/_WKDownload.h:
* UIProcess/API/Cocoa/_WKDownload.mm:
(-[_WKDownload wasUserInitiated]):
* UIProcess/Downloads/DownloadProxy.h:
(WebKit::DownloadProxy::setWasUserInitiated):
(WebKit::DownloadProxy::wasUserInitiated const):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didStartProvisionalLoad):
(WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameProxy::didFailProvisionalLoad):
(WebKit::WebFrameProxy::didFinishLoad):
(WebKit::WebFrameProxy::didFailLoad):
* UIProcess/WebFrameProxy.h:
(WebKit::WebFrameProxy::title const):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::decidePolicyForResponseSync):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
Tools:
Add API test coverage.
* TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:
(TestWebKitAPI::decideDestinationWithSuggestedFilename):
* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[DownloadDelegate _downloadDidStart:]):
(-[DownloadDelegate _downloadDidFinish:]):
(runTest):
(TEST):
(-[BlobDownloadDelegate _downloadDidStart:]):
(-[BlobDownloadDelegate _downloadDidFinish:]):
(-[RedirectedDownloadDelegate _downloadDidStart:]):
(-[RedirectedDownloadDelegate _downloadDidFinish:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222468
268f45cc-cd09-0410-ab3c-
d52691b4dbfc