Title: [246546] trunk/Source/WebKit
- Revision
- 246546
- Author
- timothy_hor...@apple.com
- Date
- 2019-06-18 10:02:06 -0700 (Tue, 18 Jun 2019)
Log Message
Expose DataDetectors context generation on WKContentViewInteraction
https://bugs.webkit.org/show_bug.cgi?id=198950
<rdar://problem/51116021>
Reviewed by Andy Estes.
* UIProcess/ios/WKActionSheetAssistant.h:
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant currentPositionInformation]):
(-[WKActionSheetAssistant showDataDetectorsSheet]):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dataDetectionContextForPositionInformation:]):
(-[WKContentView dataDetectionContextForActionSheetAssistant:]):
For use by other clients, add -dataDetectionContextForPositionInformation:
and make -dataDetectionContextForActionSheetAssistant: use it.
Also, pull the code to augment the context with surrounding text out of
from WKActionSheetAssistant.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (246545 => 246546)
--- trunk/Source/WebKit/ChangeLog 2019-06-18 16:52:21 UTC (rev 246545)
+++ trunk/Source/WebKit/ChangeLog 2019-06-18 17:02:06 UTC (rev 246546)
@@ -1,3 +1,24 @@
+2019-06-18 Tim Horton <timothy_hor...@apple.com>
+
+ Expose DataDetectors context generation on WKContentViewInteraction
+ https://bugs.webkit.org/show_bug.cgi?id=198950
+ <rdar://problem/51116021>
+
+ Reviewed by Andy Estes.
+
+ * UIProcess/ios/WKActionSheetAssistant.h:
+ * UIProcess/ios/WKActionSheetAssistant.mm:
+ (-[WKActionSheetAssistant currentPositionInformation]):
+ (-[WKActionSheetAssistant showDataDetectorsSheet]):
+ * UIProcess/ios/WKContentViewInteraction.h:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView dataDetectionContextForPositionInformation:]):
+ (-[WKContentView dataDetectionContextForActionSheetAssistant:]):
+ For use by other clients, add -dataDetectionContextForPositionInformation:
+ and make -dataDetectionContextForActionSheetAssistant: use it.
+ Also, pull the code to augment the context with surrounding text out of
+ from WKActionSheetAssistant.
+
2019-06-18 Adrian Perez de Castro <ape...@igalia.com>
[WPE] Fix building the documentation
Modified: trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h (246545 => 246546)
--- trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h 2019-06-18 16:52:21 UTC (rev 246545)
+++ trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h 2019-06-18 17:02:06 UTC (rev 246546)
@@ -82,6 +82,7 @@
- (BOOL)isShowingSheet;
- (void)interactionDidStartWithPositionInformation:(const WebKit::InteractionInformationAtPosition&)information;
- (NSArray *)currentAvailableActionTitles;
+- (Optional<WebKit::InteractionInformationAtPosition>)currentPositionInformation;
@end
#endif // PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm (246545 => 246546)
--- trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm 2019-06-18 16:52:21 UTC (rev 246545)
+++ trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm 2019-06-18 17:02:06 UTC (rev 246546)
@@ -325,6 +325,11 @@
return array;
}
+- (Optional<WebKit::InteractionInformationAtPosition>)currentPositionInformation
+{
+ return _positionInformation;
+}
+
- (void)_createSheetWithElementActions:(NSArray *)actions defaultTitle:(NSString *)defaultTitle showLinkTitle:(BOOL)showLinkTitle
{
auto delegate = _delegate.get();
@@ -646,22 +651,11 @@
DDDetectionController *controller = [getDDDetectionControllerClass() sharedController];
NSDictionary *context = nil;
NSString *textAtSelection = nil;
- RetainPtr<NSMutableDictionary> extendedContext;
if ([_delegate respondsToSelector:@selector(dataDetectionContextForActionSheetAssistant:)])
context = [_delegate dataDetectionContextForActionSheetAssistant:self];
if ([_delegate respondsToSelector:@selector(selectedTextForActionSheetAssistant:)])
textAtSelection = [_delegate selectedTextForActionSheetAssistant:self];
- if (!_positionInformation->textBefore.isEmpty() || !_positionInformation->textAfter.isEmpty()) {
- extendedContext = adoptNS([@{
- getkDataDetectorsLeadingText() : _positionInformation->textBefore,
- getkDataDetectorsTrailingText() : _positionInformation->textAfter,
- } mutableCopy]);
-
- if (context)
- [extendedContext addEntriesFromDictionary:context];
- context = extendedContext.get();
- }
if ([controller respondsToSelector:@selector(shouldImmediatelyLaunchDefaultActionForURL:)] && [controller shouldImmediatelyLaunchDefaultActionForURL:targetURL]) {
auto action = "" defaultActionForURL:targetURL results:nil context:context];
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (246545 => 246546)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2019-06-18 16:52:21 UTC (rev 246545)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2019-06-18 17:02:06 UTC (rev 246546)
@@ -470,6 +470,7 @@
- (void)_accessibilityClearSelection;
- (WKFormInputSession *)_formInputSession;
- (void)_didChangeWebViewEditability;
+- (NSDictionary *)dataDetectionContextForPositionInformation:(WebKit::InteractionInformationAtPosition)positionInformation;
- (void)willFinishIgnoringCalloutBarFadeAfterPerformingAction;
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (246545 => 246546)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2019-06-18 16:52:21 UTC (rev 246545)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2019-06-18 17:02:06 UTC (rev 246546)
@@ -6139,15 +6139,31 @@
_page->stopInteraction();
}
-- (NSDictionary *)dataDetectionContextForActionSheetAssistant:(WKActionSheetAssistant *)assistant
+- (NSDictionary *)dataDetectionContextForPositionInformation:(WebKit::InteractionInformationAtPosition)positionInformation
{
- NSDictionary *context = nil;
+ RetainPtr<NSMutableDictionary> context;
id <WKUIDelegatePrivate> uiDelegate = static_cast<id <WKUIDelegatePrivate>>([_webView UIDelegate]);
if ([uiDelegate respondsToSelector:@selector(_dataDetectionContextForWebView:)])
- context = [uiDelegate _dataDetectionContextForWebView:_webView];
- return context;
+ context = adoptNS([[uiDelegate _dataDetectionContextForWebView:_webView] mutableCopy]);
+
+ if (!context)
+ context = adoptNS([[NSMutableDictionary alloc] init]);
+
+#if ENABLE(DATA_DETECTION)
+ if (!positionInformation.textBefore.isEmpty())
+ context.get()[getkDataDetectorsLeadingText()] = positionInformation.textBefore;
+ if (!positionInformation.textAfter.isEmpty())
+ context.get()[getkDataDetectorsTrailingText()] = positionInformation.textAfter;
+#endif
+
+ return context.autorelease();
}
+- (NSDictionary *)dataDetectionContextForActionSheetAssistant:(WKActionSheetAssistant *)assistant
+{
+ return [self dataDetectionContextForPositionInformation:assistant.currentPositionInformation.valueOr(_positionInformation)];
+}
+
- (NSString *)selectedTextForActionSheetAssistant:(WKActionSheetAssistant *)assistant
{
return [self selectedText];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes