Diff
Modified: tags/Safari-538.27.2/Source/WebKit2/ChangeLog (166774 => 166775)
--- tags/Safari-538.27.2/Source/WebKit2/ChangeLog 2014-04-04 07:50:59 UTC (rev 166774)
+++ tags/Safari-538.27.2/Source/WebKit2/ChangeLog 2014-04-04 07:54:40 UTC (rev 166775)
@@ -1,5 +1,33 @@
2014-04-04 Babak Shafiei <[email protected]>
+ Merge r166767
+
+ 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-04 Babak Shafiei <[email protected]>
+
Merge r166769
2014-04-03 Chris Fleizach <[email protected]>
Modified: tags/Safari-538.27.2/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (166774 => 166775)
--- tags/Safari-538.27.2/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-04-04 07:50:59 UTC (rev 166774)
+++ tags/Safari-538.27.2/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-04-04 07:54:40 UTC (rev 166775)
@@ -400,7 +400,7 @@
- (void)_didFinishLoadingDataForCustomContentProviderWithSuggestedFilename:(const String&)suggestedFilename data:(NSData *)data
{
ASSERT(_customContentView);
- [_customContentView web_setContentProviderData:data];
+ [_customContentView web_setContentProviderData:data suggestedFilename:suggestedFilename];
}
- (void)_didCommitLoadForMainFrame
@@ -1236,6 +1236,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: tags/Safari-538.27.2/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (166774 => 166775)
--- tags/Safari-538.27.2/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2014-04-04 07:50:59 UTC (rev 166774)
+++ tags/Safari-538.27.2/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2014-04-04 07:54:40 UTC (rev 166775)
@@ -99,7 +99,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: tags/Safari-538.27.2/Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProvider.h (166774 => 166775)
--- tags/Safari-538.27.2/Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProvider.h 2014-04-04 07:50:59 UTC (rev 166774)
+++ tags/Safari-538.27.2/Source/WebKit2/UIProcess/Cocoa/WKWebViewContentProvider.h 2014-04-04 07:54:40 UTC (rev 166775)
@@ -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: tags/Safari-538.27.2/Source/WebKit2/UIProcess/ios/WKPDFView.h (166774 => 166775)
--- tags/Safari-538.27.2/Source/WebKit2/UIProcess/ios/WKPDFView.h 2014-04-04 07:50:59 UTC (rev 166774)
+++ tags/Safari-538.27.2/Source/WebKit2/UIProcess/ios/WKPDFView.h 2014-04-04 07:54:40 UTC (rev 166775)
@@ -30,6 +30,9 @@
@interface WKPDFView : UIView <WKWebViewContentProvider>
+@property (nonatomic, readonly) NSData *documentData;
+@property (nonatomic, readonly) NSString *suggestedFilename;
+
@end
#endif // PLATFORM(IOS)
Modified: tags/Safari-538.27.2/Source/WebKit2/UIProcess/ios/WKPDFView.mm (166774 => 166775)
--- tags/Safari-538.27.2/Source/WebKit2/UIProcess/ios/WKPDFView.mm 2014-04-04 07:50:59 UTC (rev 166774)
+++ tags/Safari-538.27.2/Source/WebKit2/UIProcess/ios/WKPDFView.mm 2014-04-04 07:54:40 UTC (rev 166775)
@@ -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];