Title: [175858] branches/safari-600.3-branch/Source/WebKit2

Diff

Modified: branches/safari-600.3-branch/Source/WebKit2/ChangeLog (175857 => 175858)


--- branches/safari-600.3-branch/Source/WebKit2/ChangeLog	2014-11-11 07:59:19 UTC (rev 175857)
+++ branches/safari-600.3-branch/Source/WebKit2/ChangeLog	2014-11-11 08:03:25 UTC (rev 175858)
@@ -1,3 +1,30 @@
+2014-11-11  Matthew Hanson  <matthew_han...@apple.com>
+
+        Merge r175732. <rdar://problem/18889231>
+
+    2014-11-06  Conrad Shultz  <conrad_shu...@apple.com>
+    
+            Clients should be able to customize the view used for page previews
+            https://bugs.webkit.org/show_bug.cgi?id=138447
+    
+            Reviewed by Tim Horton.
+    
+            Add SPI to WKView that clients can use to customize the view used in the page preview popover.
+    
+            * UIProcess/API/Cocoa/WKViewPrivate.h:
+            Declare -_viewForPreviewingURL:initialFrameSize:.
+    
+            * UIProcess/API/mac/WKView.mm:
+            (-[WKView _viewForPreviewingURL:initialFrameSize:]):
+            Return nil in the default implementation.
+    
+            * UIProcess/mac/WKActionMenuController.mm:
+            (-[WKPagePreviewViewController loadView]):
+            Only spin up a WKWebView if the delegate (and, therefore, the presenting WKView) doesn't supply a custom view.
+            (-[WKActionMenuController pagePreviewViewController:viewForPreviewingURL:initialFrameSize:]):
+            WKPagePreviewViewControllerDelegate method; wrap the WKView SPI.
+    
+
 2014-11-10  Matthew Hanson  <matthew_han...@apple.com>
 
         Merge r175711. <rdar://problem/18893079>

Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (175857 => 175858)


--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h	2014-11-11 07:59:19 UTC (rev 175857)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h	2014-11-11 08:03:25 UTC (rev 175858)
@@ -120,6 +120,8 @@
 
 - (NSArray *)_actionMenuItemsForHitTestResult:(WKHitTestResultRef)hitTestResult withType:(_WKActionMenuType)type defaultActionMenuItems:(NSArray *)defaultMenuItems;
 - (NSArray *)_actionMenuItemsForHitTestResult:(WKHitTestResultRef)hitTestResult withType:(_WKActionMenuType)type defaultActionMenuItems:(NSArray *)defaultMenuItems userData:(WKTypeRef)userData;
+
+- (NSView *)_viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
 #endif
 
 @end

Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm (175857 => 175858)


--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm	2014-11-11 07:59:19 UTC (rev 175857)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm	2014-11-11 08:03:25 UTC (rev 175858)
@@ -4174,6 +4174,11 @@
     return [self _actionMenuItemsForHitTestResult:hitTestResult withType:type defaultActionMenuItems:defaultMenuItems];
 }
 
+- (NSView *)_viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize
+{
+    return nil;
+}
+
 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
 
 - (void)_setAutomaticallyAdjustsContentInsets:(BOOL)automaticallyAdjustsContentInsets

Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm (175857 => 175858)


--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm	2014-11-11 07:59:19 UTC (rev 175857)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm	2014-11-11 08:03:25 UTC (rev 175858)
@@ -77,6 +77,7 @@
 @class WKPagePreviewViewController;
 
 @protocol WKPagePreviewViewControllerDelegate <NSObject>
+- (NSView *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
 - (void)pagePreviewViewControllerWasClicked:(WKPagePreviewViewController *)pagePreviewViewController;
 @end
 
@@ -108,19 +109,24 @@
 
 - (void)loadView
 {
-    RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, _mainViewSize.width, _mainViewSize.height)]);
-    [webView _setIgnoresNonWheelMouseEvents:YES];
-    if (_url) {
-        NSURLRequest *request = [NSURLRequest requestWithURL:_url.get()];
-        [webView loadRequest:request];
+    NSRect defaultFrame = NSMakeRect(0, 0, _mainViewSize.width, _mainViewSize.height);
+    RetainPtr<NSView> previewView = [_delegate pagePreviewViewController:self viewForPreviewingURL:_url.get() initialFrameSize:defaultFrame.size];
+    if (!previewView) {
+        RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:defaultFrame]);
+        [webView _setIgnoresNonWheelMouseEvents:YES];
+        if (_url) {
+            NSURLRequest *request = [NSURLRequest requestWithURL:_url.get()];
+            [webView loadRequest:request];
+        }
+        previewView = webView;
     }
 
-    // Setting the webView bounds will scale it to 75% of the _mainViewSize. 
-    [webView setBounds:NSMakeRect(0, 0, _mainViewSize.width / _popoverToViewScale, _mainViewSize.height / _popoverToViewScale)];
+    // Setting the webView bounds will scale it to 75% of the _mainViewSize.
+    [previewView setBounds:NSMakeRect(0, 0, _mainViewSize.width / _popoverToViewScale, _mainViewSize.height / _popoverToViewScale)];
 
     RetainPtr<NSClickGestureRecognizer> clickRecognizer = adoptNS([[NSClickGestureRecognizer alloc] initWithTarget:self action:@selector(_clickRecognized:)]);
-    [webView addGestureRecognizer:clickRecognizer.get()];
-    self.view = webView.get();
+    [previewView addGestureRecognizer:clickRecognizer.get()];
+    self.view = previewView.get();
 }
 
 - (void)_clickRecognized:(NSGestureRecognizer *)gestureRecognizer
@@ -833,6 +839,11 @@
 
 #pragma mark WKPagePreviewViewControllerDelegate
 
+- (NSView *)pagePreviewViewController:(WKPagePreviewViewController *)pagePreviewViewController viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize
+{
+    return [_wkView _viewForPreviewingURL:url initialFrameSize:initialFrameSize];
+}
+
 - (void)pagePreviewViewControllerWasClicked:(WKPagePreviewViewController *)pagePreviewViewController
 {
     if (NSURL *url = ""
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to