WebKit Bugzilla
Attachment 340238 Details for
Bug 185574
: WKWebViewContentProvider should know what MIME type it was created to handle
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185574-20180512120546.patch (text/plain), 7.23 KB, created by
Dean Jackson
on 2018-05-11 19:05:47 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Dean Jackson
Created:
2018-05-11 19:05:47 PDT
Size:
7.23 KB
patch
obsolete
>Subversion Revision: 231578 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 438cb3914df1c267a2824b0f7bf6dcff54c94d2f..4946dd32ac628424917e6841f21408de9b67b0ae 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,33 @@ >+2018-05-11 Dean Jackson <dino@apple.com> >+ >+ 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 NOBODY (OOPS!). >+ >+ 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-08 Dean Jackson <dino@apple.com> > > Download and present System Preview >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm b/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm >index 235a718444ce73fe90af4eca6b6a2d2439ad35e1..057c6359fc19c54c5c5862fa1c2b965e33665c8e 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm >@@ -1457,7 +1457,7 @@ static CGSize roundScrollViewContentSize(const WebKit::WebPageProxy& page, CGSiz > > 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]; >diff --git a/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h b/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h >index b7fc59ecdfe542f20ca13ebc80c4b3498dea7999..7b2f6b004b72ee066ea39816a1ffb68cf344b6fa 100644 >--- a/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h >+++ b/Source/WebKit/UIProcess/Cocoa/WKWebViewContentProvider.h >@@ -42,7 +42,7 @@ struct UIEdgeInsets; > > @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; >diff --git a/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm b/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm >index 7731b570d158a953d2a256b1cca59028400354a4..ec19b2935fce15b92123ae26a9033110762e094f 100644 >--- a/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm >+++ b/Source/WebKit/UIProcess/ios/WKLegacyPDFView.mm >@@ -119,7 +119,7 @@ typedef struct { > 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; >diff --git a/Source/WebKit/UIProcess/ios/WKPDFView.mm b/Source/WebKit/UIProcess/ios/WKPDFView.mm >index a6fec97f81d303301e5006f486a9b09eb4f2181b..aee40aec52ee9c3bccd5a7a676e566e718ef10c0 100644 >--- a/Source/WebKit/UIProcess/ios/WKPDFView.mm >+++ b/Source/WebKit/UIProcess/ios/WKPDFView.mm >@@ -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; >diff --git a/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm b/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm >index b279ea46aa6ec497c205796e88c0ee4f303e17fd..cae3b5c843a6a836c915e24afc44d569a4cbf3dd 100644 >--- a/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm >+++ b/Source/WebKit/UIProcess/ios/WKSystemPreviewView.mm >@@ -57,12 +57,13 @@ SOFT_LINK_CLASS(QuickLook, QLItem); > 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 @@ SOFT_LINK_CLASS(QuickLook, QLItem); > self.backgroundColor = backgroundColor; > > _webView = webView; >+ _mimeType = mimeType; > > UIScrollView *scrollView = webView.scrollView; > [scrollView setMinimumZoomScale:1]; >@@ -91,10 +93,16 @@ SOFT_LINK_CLASS(QuickLook, QLItem); > _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]);
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
Flags:
thorton
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185574
: 340238