[WK2] Add a UI delegate hook for custom handling of data interaction operations
authorwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Mar 2017 21:24:36 +0000 (21:24 +0000)
committerwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Mar 2017 21:24:36 +0000 (21:24 +0000)
https://bugs.webkit.org/show_bug.cgi?id=169430
<rdar://problem/30954654>

Reviewed by Tim Horton.

Source/WebCore:

Ensure that m_documentUnderMouse is properly cleaned up even in the case where no drag operation was performed
due to the drop bailing at the client layer.

* page/DragController.cpp:
(WebCore::DragController::dragEnded):

Source/WebKit2:

Introduce a new SPI method on the UI delegate for clients who need to override data interaction operation behaviors.
Note that implementing this delegate method and returning YES will not propagate a `drop` event to the page.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@213662 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/page/DragController.cpp
Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

index aa56627..ace7599 100644 (file)
@@ -1,3 +1,17 @@
+2017-03-09  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [WK2] Add a UI delegate hook for custom handling of data interaction operations
+        https://bugs.webkit.org/show_bug.cgi?id=169430
+        <rdar://problem/30954654>
+
+        Reviewed by Tim Horton.
+
+        Ensure that m_documentUnderMouse is properly cleaned up even in the case where no drag operation was performed
+        due to the drop bailing at the client layer.
+
+        * page/DragController.cpp:
+        (WebCore::DragController::dragEnded):
+
 2017-03-08  Matt Rajca  <mrajca@apple.com>
 
         Let clients control autoplay quirks with website policies.
index a8d102d..fba66a1 100644 (file)
@@ -184,6 +184,7 @@ void DragController::dragEnded()
 {
     m_dragInitiator = nullptr;
     m_didInitiateDrag = false;
+    m_documentUnderMouse = nullptr;
     clearDragCaret();
     
     m_client.dragEnded();
index f733288..fc37ca4 100644 (file)
@@ -1,3 +1,16 @@
+2017-03-09  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [WK2] Add a UI delegate hook for custom handling of data interaction operations
+        https://bugs.webkit.org/show_bug.cgi?id=169430
+        <rdar://problem/30954654>
+
+        Reviewed by Tim Horton.
+
+        Introduce a new SPI method on the UI delegate for clients who need to override data interaction operation behaviors.
+        Note that implementing this delegate method and returning YES will not propagate a `drop` event to the page.
+
+        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+
 2017-03-08  Matt Rajca  <mrajca@apple.com>
 
         Let clients control autoplay quirks with website policies.
index 361a5ca..e352c70 100644 (file)
@@ -88,6 +88,7 @@ struct UIEdgeInsets;
 - (void)_webView:(WKWebView *)webView getAlternateURLFromImage:(UIImage *)image completionHandler:(void (^)(NSURL *alternateURL, NSDictionary *userInfo))completionHandler WK_API_AVAILABLE(ios(WK_IOS_TBA));
 - (NSURL *)_webView:(WKWebView *)webView alternateURLFromImage:(UIImage *)image userInfo:(NSDictionary **)userInfo WK_API_AVAILABLE(ios(WK_IOS_TBA));
 - (NSArray<UIItemProvider *> *)_webView:(WKWebView *)webView adjustedDataInteractionItemProviders:(NSArray<UIItemProvider *> *)originalItemProviders WK_API_AVAILABLE(ios(WK_IOS_TBA));
+- (BOOL)_webView:(WKWebView *)webView performDataInteractionOperationWithItemProviders:(NSArray<UIItemProvider *> *)itemProviders WK_API_AVAILABLE(ios(WK_IOS_TBA));
 #else
 - (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element WK_API_AVAILABLE(macosx(10.12));
 - (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element userInfo:(id <NSSecureCoding>)userInfo WK_API_AVAILABLE(macosx(10.12));