Title: [166767] trunk/Source/WebKit2
- Revision
- 166767
- Author
- [email protected]
- Date
- 2014-04-03 22:23:52 -0700 (Thu, 03 Apr 2014)
Log Message
[Cocoa] Add additional WKWebView SPI for clients that interact with PDFs
https://bugs.webkit.org/show_bug.cgi?id=131206
Reviewed by Dan Bernstein.
Add _dataForDisplayedPDF and _suggestedFilenameForDisplayedPDF to
support clients that wish to save a copy of the currently displayed PDF
to disk. Ultimately we should support this use case by exposing something
like WKWebViewContentProvider, but for now let's do something simple.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didFinishLoadingDataForCustomContentProviderWithSuggestedFilename:data:]):
(-[WKWebView _dataForDisplayedPDF]):
(-[WKWebView _suggestedFilenameForDisplayedPDF]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/WKWebViewContentProvider.h:
* UIProcess/ios/WKPDFView.h:
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView documentData]):
(-[WKPDFView suggestedFilename]):
(-[WKPDFView web_setContentProviderData:suggestedFilename:]):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (166766 => 166767)
--- trunk/Source/WebKit2/ChangeLog 2014-04-04 05:04:56 UTC (rev 166766)
+++ trunk/Source/WebKit2/ChangeLog 2014-04-04 05:23:52 UTC (rev 166767)
@@ -1,3 +1,27 @@
+2014-04-03 Andy Estes <[email protected]>
+
+ [Cocoa] Add additional WKWebView SPI for clients that interact with PDFs
+ https://bugs.webkit.org/show_bug.cgi?id=131206
+
+ Reviewed by Dan Bernstein.
+
+ Add _dataForDisplayedPDF and _suggestedFilenameForDisplayedPDF to
+ support clients that wish to save a copy of the currently displayed PDF
+ to disk. Ultimately we should support this use case by exposing something
+ like WKWebViewContentProvider, but for now let's do something simple.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _didFinishLoadingDataForCustomContentProviderWithSuggestedFilename:data:]):
+ (-[WKWebView _dataForDisplayedPDF]):
+ (-[WKWebView _suggestedFilenameForDisplayedPDF]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/Cocoa/WKWebViewContentProvider.h:
+ * UIProcess/ios/WKPDFView.h:
+ * UIProcess/ios/WKPDFView.mm:
+ (-[WKPDFView documentData]):
+ (-[WKPDFView suggestedFilename]):
+ (-[WKPDFView web_setContentProviderData:suggestedFilename:]):
+
2014-04-03 Eunmi Lee <[email protected]>
[EFL][WK2] Add API to get contents size of current web page.
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (166766 => 166767)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-04-04 05:04:56 UTC (rev 166766)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-04-04 05:23:52 UTC (rev 166767)
@@ -399,7 +399,7 @@
- (void)_didFinishLoadingDataForCustomContentProviderWithSuggestedFilename:(const String&)suggestedFilename data:(NSData *)data
{
ASSERT(_customContentView);
- [_customContentView web_setContentProviderData:data];
+ [_customContentView web_setContentProviderData:data suggestedFilename:suggestedFilename];
}
- (void)_didCommitLoadForMainFrame
@@ -1270,6 +1270,20 @@
return [_customContentView isKindOfClass:[WKPDFView class]];
}
+- (NSData *)_dataForDisplayedPDF
+{
+ if (![self _isDisplayingPDF])
+ return nil;
+ return [(WKPDFView *)_customContentView.get() documentData];
+}
+
+- (NSString *)_suggestedFilenameForDisplayedPDF
+{
+ if (![self _isDisplayingPDF])
+ return nil;
+ return [(WKPDFView *)_customContentView.get() suggestedFilename];
+}
+
// FIXME: Remove this once nobody uses it.
- (NSURL *)activeURL
{
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (166766 => 166767)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2014-04-04 05:04:56 UTC (rev 166766)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2014-04-04 05:23:52 UTC (rev 166767)
@@ -98,7 +98,11 @@
@property (nonatomic, setter=_setBackgroundExtendsBeyondPage:) BOOL _backgroundExtendsBeyondPage;
+// FIXME: Remove these three properties once we expose WKWebViewContentProvider as API.
@property (nonatomic, readonly, getter=_isDisplayingPDF) BOOL _displayingPDF;
+@property (nonatomic, readonly) NSData *_dataForDisplayedPDF;
+// FIXME: This can be removed once WKNavigation's response property is implemented.
+@property (nonatomic, readonly) NSString *_suggestedFilenameForDisplayedPDF;
- (void)_beginInteractiveObscuredInsetsChange;
- (void)_endInteractiveObscuredInsetsChange;
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProvider.h (166766 => 166767)
--- trunk/Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProvider.h 2014-04-04 05:04:56 UTC (rev 166766)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProvider.h 2014-04-04 05:23:52 UTC (rev 166767)
@@ -37,7 +37,7 @@
// FIXME: This should be API.
@protocol WKWebViewContentProvider <NSObject>
-- (void)web_setContentProviderData:(NSData *)data;
+- (void)web_setContentProviderData:(NSData *)data suggestedFilename:(NSString *)filename;
- (void)web_setMinimumSize:(CGSize)size;
- (void)web_setScrollView:(UIScrollView *)scrollView;
Modified: trunk/Source/WebKit2/UIProcess/ios/WKPDFView.h (166766 => 166767)
--- trunk/Source/WebKit2/UIProcess/ios/WKPDFView.h 2014-04-04 05:04:56 UTC (rev 166766)
+++ trunk/Source/WebKit2/UIProcess/ios/WKPDFView.h 2014-04-04 05:23:52 UTC (rev 166767)
@@ -30,6 +30,9 @@
@interface WKPDFView : UIView <WKWebViewContentProvider>
+@property (nonatomic, readonly) NSData *documentData;
+@property (nonatomic, readonly) NSString *suggestedFilename;
+
@end
#endif // PLATFORM(IOS)
Modified: trunk/Source/WebKit2/UIProcess/ios/WKPDFView.mm (166766 => 166767)
--- trunk/Source/WebKit2/UIProcess/ios/WKPDFView.mm 2014-04-04 05:04:56 UTC (rev 166766)
+++ trunk/Source/WebKit2/UIProcess/ios/WKPDFView.mm 2014-04-04 05:23:52 UTC (rev 166767)
@@ -28,6 +28,7 @@
#if PLATFORM(IOS)
+#import <CoreGraphics/CGPDFDocumentPrivate.h>
#import <CorePDF/UIPDFDocument.h>
#import <CorePDF/UIPDFPageView.h>
#import <wtf/RetainPtr.h>
@@ -39,6 +40,7 @@
@implementation WKPDFView {
RetainPtr<UIPDFDocument> _pdfDocument;
+ RetainPtr<NSString> _suggestedFilename;
Vector<UIPDFPageView*> _pageViews;
CGSize _minimumSize;
UIScrollView *_scrollView;
@@ -54,8 +56,20 @@
return self;
}
-- (void)web_setContentProviderData:(NSData *)data
+- (NSData *)documentData
+{
+ return [(NSData *)CGDataProviderCopyData(CGPDFDocumentGetDataProvider([_pdfDocument CGDocument])) autorelease];
+}
+
+- (NSString *)suggestedFilename
{
+ return _suggestedFilename.get();
+}
+
+- (void)web_setContentProviderData:(NSData *)data suggestedFilename:(NSString *)filename
+{
+ _suggestedFilename = adoptNS([filename copy]);
+
for (auto& pageView : _pageViews)
[pageView removeFromSuperview];
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes