browser(webkit): build fix, switch to the new download API (#4621)

This commit is contained in:
Yury Semikhatsky 2020-12-07 10:10:32 -08:00 committed by GitHub
parent d8520f0695
commit 4be41f2571
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 12 deletions

View File

@ -1,2 +1,2 @@
1398
Changed: yurys@chromium.org Fri 04 Dec 2020 05:44:45 PM PST
1399
Changed: yurys@chromium.org Mon Dec 7 10:04:55 PST 2020

View File

@ -31,7 +31,7 @@
@property (nonatomic, copy) void (^completionHandler)(BOOL accept, NSString* value);
@end
@interface BrowserAppDelegate : NSObject <NSApplicationDelegate, WKNavigationDelegate, WKUIDelegate, _WKBrowserInspectorDelegate, _WKDownloadDelegate> {
@interface BrowserAppDelegate : NSObject <NSApplicationDelegate, WKNavigationDelegate, WKUIDelegate, _WKBrowserInspectorDelegate, WKDownloadDelegate> {
NSMutableSet *_headlessWindows;
NSMutableSet *_browserContexts;
bool _headless;

View File

@ -335,7 +335,6 @@ const NSActivityOptions ActivityOptions =
[dataStoreConfiguration setProxyConfiguration:[self proxyConfiguration:proxyServer WithBypassList:proxyBypassList]];
browserContext.dataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration] autorelease];
browserContext.processPool = [[[WKProcessPool alloc] _initWithConfiguration:processConfiguration] autorelease];
[browserContext.processPool _setDownloadDelegate:self];
[_browserContexts addObject:browserContext];
return browserContext;
}
@ -434,8 +433,8 @@ const NSActivityOptions ActivityOptions =
{
LOG(@"decidePolicyForNavigationAction");
if (navigationAction._shouldPerformDownload) {
decisionHandler(_WKNavigationActionPolicyDownload);
if (navigationAction.downloadAttribute) {
decisionHandler(WKNavigationActionPolicyBecomeDownload);
return;
}
if (navigationAction._canHandleRequest) {
@ -455,17 +454,27 @@ const NSActivityOptions ActivityOptions =
NSString *disposition = [[httpResponse allHeaderFields] objectForKey:@"Content-Disposition"];
if (disposition && [disposition hasPrefix:@"attachment"]) {
decisionHandler(_WKNavigationResponsePolicyBecomeDownload);
decisionHandler(WKNavigationResponsePolicyBecomeDownload);
return;
}
decisionHandler(WKNavigationResponsePolicyAllow);
}
#pragma mark _WKDownloadDelegate
- (void)_download:(_WKDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename completionHandler:(void (^)(BOOL allowOverwrite, NSString *destination))completionHandler
- (void)webView:(WKWebView *)webView navigationAction:(WKNavigationAction *)navigationAction didBecomeDownload:(WKDownload *)download
{
completionHandler(NO, @"");
download.delegate = self;
}
- (void)webView:(WKWebView *)webView navigationResponse:(WKNavigationResponse *)navigationResponse didBecomeDownload:(WKDownload *)download
{
download.delegate = self;
}
#pragma mark WKDownloadDelegate
- (void)download:(WKDownload *)download decideDestinationWithResponse:(NSURLResponse *)response suggestedFilename:(NSString *)suggestedFilename completionHandler:(void (^)(NSURL * _Nullable destination))completionHandler
{
completionHandler(nil);
}
@end

View File

@ -687,7 +687,7 @@ static NSSet *dataTypes()
NSString *disposition = [[httpResponse allHeaderFields] objectForKey:@"Content-Disposition"];
if (disposition && [disposition hasPrefix:@"attachment"]) {
decisionHandler(_WKNavigationResponsePolicyBecomeDownload);
decisionHandler(WKNavigationResponsePolicyBecomeDownload);
return;
}
decisionHandler(WKNavigationResponsePolicyAllow);