Title: [192447] trunk
Revision
192447
Author
timothy_hor...@apple.com
Date
2015-11-13 16:00:56 -0800 (Fri, 13 Nov 2015)

Log Message

Support printing in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=151276
<rdar://problem/23525715>

Reviewed by Beth Dakin.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _printOperationWithPrintInfo:]):
(-[WKWebView _printOperationWithPrintInfo:forFrame:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Expose SPI similar to what we have on WKView.

* MiniBrowser/mac/MainMenu.xib:
* MiniBrowser/mac/WK1BrowserWindowController.m:
(-[WK1BrowserWindowController printWebView:]):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController printWebView:]):
Hook up printing to Minibrowser!

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (192446 => 192447)


--- trunk/Source/WebKit2/ChangeLog	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Source/WebKit2/ChangeLog	2015-11-14 00:00:56 UTC (rev 192447)
@@ -1,3 +1,17 @@
+2015-11-13  Tim Horton  <timothy_hor...@apple.com>
+
+        Support printing in WKWebView
+        https://bugs.webkit.org/show_bug.cgi?id=151276
+        <rdar://problem/23525715>
+
+        Reviewed by Beth Dakin.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _printOperationWithPrintInfo:]):
+        (-[WKWebView _printOperationWithPrintInfo:forFrame:]):
+        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+        Expose SPI similar to what we have on WKView.
+
 2015-11-13  Joseph Pecoraro  <pecor...@apple.com>
 
         Follow-up to r192437. Add availability macros.

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (192446 => 192447)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2015-11-14 00:00:56 UTC (rev 192447)
@@ -76,6 +76,7 @@
 #import "_WKDiagnosticLoggingDelegate.h"
 #import "_WKFindDelegate.h"
 #import "_WKFormDelegate.h"
+#import "_WKFrameHandleInternal.h"
 #import "_WKHitTestResultInternal.h"
 #import "_WKInputDelegate.h"
 #import "_WKRemoteObjectRegistryInternal.h"
@@ -92,7 +93,6 @@
 #import <wtf/TemporaryChange.h>
 
 #if PLATFORM(IOS)
-#import "_WKFrameHandleInternal.h"
 #import "_WKWebViewPrintFormatter.h"
 #import "PrintInfo.h"
 #import "ProcessThrottler.h"
@@ -4066,6 +4066,20 @@
     _impl->setClipsToVisibleRect(expandsToFit);
 }
 
+- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo
+{
+    if (auto webFrameProxy = _page->mainFrame())
+        return _impl->printOperationWithPrintInfo(printInfo, *webFrameProxy);
+    return nil;
+}
+
+- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo forFrame:(_WKFrameHandle *)frameHandle
+{
+    if (auto webFrameProxy = _page->process().webFrame(frameHandle._frameID))
+        return _impl->printOperationWithPrintInfo(printInfo, *webFrameProxy);
+    return nil;
+}
+
 #endif
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (192446 => 192447)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h	2015-11-14 00:00:56 UTC (rev 192447)
@@ -49,6 +49,7 @@
 } WK_AVAILABLE(WK_MAC_TBA, NA);
 
 @class WKBrowsingContextHandle;
+@class _WKFrameHandle;
 @class _WKHitTestResult;
 @class _WKRemoteObjectRegistry;
 @class _WKSessionState;
@@ -188,6 +189,9 @@
 
 @property (nonatomic, setter=_setMinimumLayoutWidth:) CGFloat _minimumLayoutWidth WK_AVAILABLE(WK_MAC_TBA, NA);
 
+- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo;
+- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo forFrame:(_WKFrameHandle *)frameHandle WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+
 #endif
 
 - (WKNavigation *)_reloadWithoutContentBlockers WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);

Modified: trunk/Tools/ChangeLog (192446 => 192447)


--- trunk/Tools/ChangeLog	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Tools/ChangeLog	2015-11-14 00:00:56 UTC (rev 192447)
@@ -1,5 +1,20 @@
 2015-11-13  Tim Horton  <timothy_hor...@apple.com>
 
+        Support printing in WKWebView
+        https://bugs.webkit.org/show_bug.cgi?id=151276
+        <rdar://problem/23525715>
+
+        Reviewed by Beth Dakin.
+
+        * MiniBrowser/mac/MainMenu.xib:
+        * MiniBrowser/mac/WK1BrowserWindowController.m:
+        (-[WK1BrowserWindowController printWebView:]):
+        * MiniBrowser/mac/WK2BrowserWindowController.m:
+        (-[WK2BrowserWindowController printWebView:]):
+        Hook up printing to Minibrowser!
+
+2015-11-13  Tim Horton  <timothy_hor...@apple.com>
+
         Hardware keyboard spacebar scrolls too far on iOS
         https://bugs.webkit.org/show_bug.cgi?id=151227
         <rdar://problem/23500681>

Modified: trunk/Tools/MiniBrowser/mac/MainMenu.xib (192446 => 192447)


--- trunk/Tools/MiniBrowser/mac/MainMenu.xib	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Tools/MiniBrowser/mac/MainMenu.xib	2015-11-14 00:00:56 UTC (rev 192447)
@@ -140,7 +140,7 @@
                             </menuItem>
                             <menuItem title="Print…" keyEquivalent="p" id="78">
                                 <connections>
-                                    <action selector="print:" target="-1" id="86"/>
+                                    <action selector="printWebView:" target="-1" id="86"/>
                                 </connections>
                             </menuItem>
                         </items>

Modified: trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m (192446 => 192447)


--- trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m	2015-11-14 00:00:56 UTC (rev 192447)
@@ -283,6 +283,11 @@
     }
 }
 
+- (IBAction)printWebView:(id)sender
+{
+    [[[[_webView mainFrame] frameView] printOperationWithPrintInfo:[NSPrintInfo sharedPrintInfo]] runOperationModalForWindow:self.window delegate:nil didRunSelector:nil contextInfo:nil];
+}
+
 - (void)webView:(WebView *)sender didLayout:(WebLayoutMilestones)milestones
 {
     if (milestones & WebDidFirstLayout)

Modified: trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m (192446 => 192447)


--- trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m	2015-11-13 23:47:01 UTC (rev 192446)
+++ trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m	2015-11-14 00:00:56 UTC (rev 192447)
@@ -501,6 +501,11 @@
     }];
 }
 
+- (IBAction)printWebView:(id)sender
+{
+    [[_webView _printOperationWithPrintInfo:[NSPrintInfo sharedPrintInfo] forFrame:nil] runOperationModalForWindow:self.window delegate:nil didRunSelector:nil contextInfo:nil];
+}
+
 #pragma mark WKNavigationDelegate
 
 - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to