Title: [166775] tags/Safari-538.27.2/Source/WebKit2

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];
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to