Title: [175858] branches/safari-600.3-branch/Source/WebKit2
- Revision
- 175858
- Author
- matthew_han...@apple.com
- Date
- 2014-11-11 00:03:25 -0800 (Tue, 11 Nov 2014)
Log Message
Merged r175732. rdar://problems/18889231
Modified Paths
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