Title: [231729] trunk/Source/WebKit
- Revision
- 231729
- Author
- [email protected]
- Date
- 2018-05-11 19:11:05 -0700 (Fri, 11 May 2018)
Log Message
WKWebViewContentProvider should know what MIME type it was created to handle
https://bugs.webkit.org/show_bug.cgi?id=185574
<rdar://problem/40183049>
Reviewed by Tim Horton.
Pass the MIME type of the downloaded asset into the WKWebViewContentProvider's
init method, so it can choose to do something based on that information. The
PDF and LegacyPDF views don't care because they, clearly, only handle PDF. But
a WKSystemPreviewView can handle multiple types.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setHasCustomContentView:loadedMIMEType:]): Send the MIME type on
to the WKWebViewContentProvider.
* UIProcess/Cocoa/WKWebViewContentProvider.h: Add a new parameter to web_initWithFrame.
* UIProcess/ios/WKLegacyPDFView.mm:
(-[WKLegacyPDFView web_initWithFrame:webView:mimeType:]):
(-[WKLegacyPDFView web_initWithFrame:webView:]): Deleted.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_initWithFrame:webView:mimeType:]):
(-[WKPDFView web_initWithFrame:webView:]): Deleted.
* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView web_initWithFrame:webView:mimeType:]):
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]): Actually use
the MIME type to tell QuickLook what it will be getting, rather than basing it on
the file extension.
(-[WKSystemPreviewView web_initWithFrame:webView:]): Deleted.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (231728 => 231729)
--- trunk/Source/WebKit/ChangeLog 2018-05-12 00:39:09 UTC (rev 231728)
+++ trunk/Source/WebKit/ChangeLog 2018-05-12 02:11:05 UTC (rev 231729)
@@ -1,3 +1,33 @@
+2018-05-11 Dean Jackson <[email protected]>
+
+ WKWebViewContentProvider should know what MIME type it was created to handle
+ https://bugs.webkit.org/show_bug.cgi?id=185574
+ <rdar://problem/40183049>
+
+ Reviewed by Tim Horton.
+
+ Pass the MIME type of the downloaded asset into the WKWebViewContentProvider's
+ init method, so it can choose to do something based on that information. The
+ PDF and LegacyPDF views don't care because they, clearly, only handle PDF. But
+ a WKSystemPreviewView can handle multiple types.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _setHasCustomContentView:loadedMIMEType:]): Send the MIME type on
+ to the WKWebViewContentProvider.
+ * UIProcess/Cocoa/WKWebViewContentProvider.h: Add a new parameter to web_initWithFrame.
+ * UIProcess/ios/WKLegacyPDFView.mm:
+ (-[WKLegacyPDFView web_initWithFrame:webView:mimeType:]):
+ (-[WKLegacyPDFView web_initWithFrame:webView:]): Deleted.
+ * UIProcess/ios/WKPDFView.mm:
+ (-[WKPDFView web_initWithFrame:webView:mimeType:]):
+ (-[WKPDFView web_initWithFrame:webView:]): Deleted.
+ * UIProcess/ios/WKSystemPreviewView.mm:
+ (-[WKSystemPreviewView web_initWithFrame:webView:mimeType:]):
+ (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]): Actually use
+ the MIME type to tell QuickLook what it will be getting, rather than basing it on
+ the file extension.
+ (-[WKSystemPreviewView web_initWithFrame:webView:]): Deleted.
+
2018-05-11 Brent Fulgham <[email protected]>
Allow the WebContent process to read global ViewBridge preferences
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (231728 => 231729)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2018-05-12 00:39:09 UTC (rev 231728)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2018-05-12 02:11:05 UTC (rev 231729)
@@ -1457,7 +1457,7 @@
Class representationClass = [[_configuration _contentProviderRegistry] providerForMIMEType:mimeType];
ASSERT(representationClass);
- _customContentView = adoptNS([[representationClass alloc] web_initWithFrame:self.bounds webView:self]);
+ _customContentView = adoptNS([[representationClass alloc] web_initWithFrame:self.bounds webView:self mimeType:mimeType]);
_customContentFixedOverlayView = adoptNS([[UIView alloc] initWithFrame:self.bounds]);
[_customContentFixedOverlayView layer].name = @"CustomContentFixedOverlay";
[_customContentFixedOverlayView setUserInteractionEnabled:NO];
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h (231728 => 231729)
--- trunk/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h 2018-05-12 00:39:09 UTC (rev 231728)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h 2018-05-12 02:11:05 UTC (rev 231729)
@@ -42,7 +42,7 @@
@protocol WKWebViewContentProvider <NSObject>
-- (instancetype)web_initWithFrame:(CGRect) frame webView:(WKWebView *)webView;
+- (instancetype)web_initWithFrame:(CGRect) frame webView:(WKWebView *)webView mimeType:(NSString *)mimeType;
- (void)web_setContentProviderData:(NSData *)data suggestedFilename:(NSString *)filename;
- (void)web_setMinimumSize:(CGSize)size;
- (void)web_setOverlaidAccessoryViewsInset:(CGSize)inset;
Modified: trunk/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm (231728 => 231729)
--- trunk/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm 2018-05-12 00:39:09 UTC (rev 231728)
+++ trunk/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm 2018-05-12 02:11:05 UTC (rev 231729)
@@ -119,7 +119,7 @@
CGFloat _lastLayoutWidth;
}
-- (instancetype)web_initWithFrame:(CGRect)frame webView:(WKWebView *)webView
+- (instancetype)web_initWithFrame:(CGRect)frame webView:(WKWebView *)webView mimeType:(NSString *)mimeType
{
if (!(self = [super initWithFrame:frame webView:webView]))
return nil;
Modified: trunk/Source/WebKit/UIProcess/ios/WKPDFView.mm (231728 => 231729)
--- trunk/Source/WebKit/UIProcess/ios/WKPDFView.mm 2018-05-12 00:39:09 UTC (rev 231728)
+++ trunk/Source/WebKit/UIProcess/ios/WKPDFView.mm 2018-05-12 02:11:05 UTC (rev 231729)
@@ -79,7 +79,7 @@
#pragma mark WKWebViewContentProvider
-- (instancetype)web_initWithFrame:(CGRect)frame webView:(WKWebView *)webView
+- (instancetype)web_initWithFrame:(CGRect)frame webView:(WKWebView *)webView mimeType:(NSString *)mimeType
{
if (!(self = [super initWithFrame:frame webView:webView]))
return nil;
Modified: trunk/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm (231728 => 231729)
--- trunk/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm 2018-05-12 00:39:09 UTC (rev 231728)
+++ trunk/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm 2018-05-12 02:11:05 UTC (rev 231729)
@@ -57,12 +57,13 @@
RetainPtr<NSItemProvider> _itemProvider;
RetainPtr<NSData> _data;
RetainPtr<NSString> _suggestedFilename;
+ RetainPtr<NSString> _mimeType;
RetainPtr<QLItem> _item;
RetainPtr<ASVThumbnailView> _thumbnailView;
WKWebView *_webView;
}
-- (instancetype)web_initWithFrame:(CGRect)frame webView:(WKWebView *)webView
+- (instancetype)web_initWithFrame:(CGRect)frame webView:(WKWebView *)webView mimeType:(NSString *)mimeType
{
if (!(self = [super initWithFrame:frame]))
return nil;
@@ -71,6 +72,7 @@
self.backgroundColor = backgroundColor;
_webView = webView;
+ _mimeType = mimeType;
UIScrollView *scrollView = webView.scrollView;
[scrollView setMinimumZoomScale:1];
@@ -91,10 +93,16 @@
_suggestedFilename = adoptNS([filename copy]);
_data = adoptNS([data copy]);
+ NSString *contentType;
+#if USE(APPLE_INTERNAL_SDK)
+ contentType = WebKit::getUTIForMIMEType(_mimeType.get());
+#else
NSString *extension = [[_suggestedFilename.get() pathExtension] lowercaseString];
- RetainPtr<CFStringRef> contentType = adoptCF(UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, nil));
+ RetainPtr<CFStringRef> contentTypeCF = adoptCF(UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, nil));
+ contentType = (NSString *)contentTypeCF.get();
+#endif
- _item = adoptNS([allocQLItemInstance() initWithDataProvider:self contentType:(NSString *)contentType.get() previewTitle:_suggestedFilename.get()]);
+ _item = adoptNS([allocQLItemInstance() initWithDataProvider:self contentType:contentType previewTitle:_suggestedFilename.get()]);
[_item setUseLoadingTimeout:NO];
_thumbnailView = adoptNS([ASVThumbnailView new]);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes