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

Reply via email to