Title: [197656] trunk/Source/WebKit2
- Revision
- 197656
- Author
- [email protected]
- Date
- 2016-03-06 19:36:53 -0800 (Sun, 06 Mar 2016)
Log Message
Support preview on attachment elements.
https://bugs.webkit.org/show_bug.cgi?id=155074
rdar://problem/24806079
Reviewed by Sam Weinig.
Allowing preview to start on attachment elements.
Adding a private UIDelegate method to provide the data for the preview.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _dataForPreviewItemController:atPosition:type:]):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (197655 => 197656)
--- trunk/Source/WebKit2/ChangeLog 2016-03-07 03:21:08 UTC (rev 197655)
+++ trunk/Source/WebKit2/ChangeLog 2016-03-07 03:36:53 UTC (rev 197656)
@@ -1,3 +1,19 @@
+2016-03-05 Enrica Casucci <[email protected]>
+
+ Support preview on attachment elements.
+ https://bugs.webkit.org/show_bug.cgi?id=155074
+ rdar://problem/24806079
+
+ Reviewed by Sam Weinig.
+
+ Allowing preview to start on attachment elements.
+ Adding a private UIDelegate method to provide the data for the preview.
+
+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
+ (-[WKContentView _dataForPreviewItemController:atPosition:type:]):
+
2016-03-06 Andreas Kling <[email protected]>
Reduce page cache capacity from 3 to 2.
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (197655 => 197656)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2016-03-07 03:21:08 UTC (rev 197655)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2016-03-07 03:36:53 UTC (rev 197656)
@@ -72,6 +72,8 @@
- (void)_webView:(WKWebView *)webView didDismissPreviewViewController:(UIViewController *)previewedViewController committing:(BOOL)committing WK_AVAILABLE(NA, 9_0);
- (void)_webView:(WKWebView *)webView didDismissPreviewViewController:(UIViewController *)previewedViewController WK_AVAILABLE(NA, 9_0);
- (BOOL)_webView:(WKWebView *)webView showCustomSheetForElement:(_WKActivatedElementInfo *)element WK_AVAILABLE(NA, WK_IOS_TBA);
+- (NSArray *)_attachmentListForWebView:(WKWebView *)webView WK_AVAILABLE(NA, WK_IOS_TBA);
+- (NSUInteger)_webView:(WKWebView *)webView indexIntoAttachmentListForElement:(_WKActivatedElementInfo *)element WK_AVAILABLE(NA, WK_IOS_TBA);
- (UIEdgeInsets)_webView:(WKWebView *)webView finalObscuredInsetsForScrollView:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset WK_AVAILABLE(NA, 9_0);
- (UIViewController *)_webView:(WKWebView *)webView previewViewControllerForURL:(NSURL *)url defaultActions:(WK_ARRAY(_WKElementAction *) *)actions elementInfo:(_WKActivatedElementInfo *)elementInfo WK_AVAILABLE(NA, 9_0);
- (UIViewController *)_webView:(WKWebView *)webView previewViewControllerForAnimatedImageAtURL:(NSURL *)url defaultActions:(WK_ARRAY(_WKElementAction *) *)actions elementInfo:(_WKActivatedElementInfo *)elementInfo imageSize:(CGSize)imageSize WK_AVAILABLE(NA, 9_0);
Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (197655 => 197656)
--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2016-03-07 03:21:08 UTC (rev 197655)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2016-03-07 03:36:53 UTC (rev 197656)
@@ -3632,7 +3632,7 @@
return NO;
[self ensurePositionInformationIsUpToDate:position];
- if (!_positionInformation.isLink && !_positionInformation.isImage)
+ if (!_positionInformation.isLink && !_positionInformation.isImage && !_positionInformation.isAttachment)
return NO;
String absoluteLinkURL = _positionInformation.url;
@@ -3663,6 +3663,8 @@
BOOL canShowImagePreview = _positionInformation.isImage && supportsImagePreview;
BOOL canShowLinkPreview = _positionInformation.isLink || canShowImagePreview;
BOOL useImageURLForLink = NO;
+ BOOL supportsAttachmentPreview = [uiDelegate respondsToSelector:@selector(_attachmentListForWebView:)] && [uiDelegate respondsToSelector:@selector(_webView:indexIntoAttachmentListForElement:)];
+ BOOL canShowAttachmentPreview = _positionInformation.isAttachment && supportsAttachmentPreview;
if (canShowImagePreview && _positionInformation.isAnimatedImage) {
canShowImagePreview = NO;
@@ -3670,7 +3672,7 @@
useImageURLForLink = YES;
}
- if (!canShowLinkPreview && !canShowImagePreview)
+ if (!canShowLinkPreview && !canShowImagePreview && !canShowAttachmentPreview)
return nil;
String absoluteLinkURL = _positionInformation.url;
@@ -3689,7 +3691,6 @@
dataForPreview[UIPreviewDataLink] = [NSURL _web_URLWithWTFString:_positionInformation.url];
if (_positionInformation.isDataDetectorLink) {
NSDictionary *context = nil;
- id <WKUIDelegatePrivate> uiDelegate = static_cast<id <WKUIDelegatePrivate>>([_webView UIDelegate]);
if ([uiDelegate respondsToSelector:@selector(_dataDetectionContextForWebView:)])
context = [uiDelegate _dataDetectionContextForWebView:_webView];
@@ -3706,6 +3707,13 @@
} else if (canShowImagePreview) {
*type = UIPreviewItemTypeImage;
dataForPreview[UIPreviewDataLink] = [NSURL _web_URLWithWTFString:_positionInformation.imageURL];
+ } else if (canShowAttachmentPreview) {
+ // FIXME: Should use UIKit constants.
+ enum { WKUIPreviewItemTypeAttachment = 5 };
+ *type = static_cast<UIPreviewItemType>(WKUIPreviewItemTypeAttachment);
+ const auto& element = [[_WKActivatedElementInfo alloc] _initWithType:_WKActivatedElementTypeAttachment URL:[NSURL _web_URLWithWTFString:_positionInformation.url] location:_positionInformation.point title:_positionInformation.title rect:_positionInformation.bounds image:nil];
+ dataForPreview[@"UIPreviewDataAttachmentList"] = [uiDelegate _attachmentListForWebView:_webView];
+ dataForPreview[@"UIPreviewDataAttachmentIndex"] = [NSNumber numberWithUnsignedInteger:[uiDelegate _webView:_webView indexIntoAttachmentListForElement:element]];
}
return dataForPreview;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes