WebKit SPI fix for [ClickyOrb] Audio continues playing after dismissing a video previ...
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Jul 2019 20:38:52 +0000 (20:38 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 22 Jul 2019 20:38:52 +0000 (20:38 +0000)
https://bugs.webkit.org/show_bug.cgi?id=200011
<rdar://problem/53409457>

Reviewed by Tim Horton.

Don't check for the SPI @selector(_webView:contextMenuDidEndForElement:)
on the WKUIDelegate so that clients that got caught implementing the
SPI before moving to the real API can still clean-up state. In other words,
don't force a client that only implements that method to move completely
to the new API.

* UIProcess/ios/WKContentViewInteraction.mm:
(needsDeprecatedPreviewAPI):

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

Source/WebKit/ChangeLog
Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

index aa15567..8d87b9a 100644 (file)
@@ -1,3 +1,20 @@
+2019-07-22  Dean Jackson  <dino@apple.com>
+
+        WebKit SPI fix for [ClickyOrb] Audio continues playing after dismissing a video preview in Safari
+        https://bugs.webkit.org/show_bug.cgi?id=200011
+        <rdar://problem/53409457>
+
+        Reviewed by Tim Horton.
+
+        Don't check for the SPI @selector(_webView:contextMenuDidEndForElement:)
+        on the WKUIDelegate so that clients that got caught implementing the
+        SPI before moving to the real API can still clean-up state. In other words,
+        don't force a client that only implements that method to move completely
+        to the new API.
+
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (needsDeprecatedPreviewAPI):
+
 2019-07-22  Jer Noble  <jer.noble@apple.com>
 
         REGRESSION(rUnknown): YouTube playback pauses when switching to a new tab
index 8628121..6409ebc 100644 (file)
@@ -7640,6 +7640,9 @@ static NSString *previewIdentifierForElementAction(_WKElementAction *action)
 static bool needsDeprecatedPreviewAPI(id<WKUIDelegate> delegate)
 {
     // FIXME: Replace these with booleans in UIDelegate.h.
+    // Note that we explicitly do not test for @selector(_webView:contextMenuDidEndForElement:) since
+    // that's used by MobileSafari to clean up state even though they haven't moved to the new API.
+
     return delegate
     && ![delegate respondsToSelector:@selector(_webView:contextMenuConfigurationForElement:completionHandler:)]
     && ![delegate respondsToSelector:@selector(webView:contextMenuConfigurationForElement:completionHandler:)]
@@ -7647,7 +7650,6 @@ static bool needsDeprecatedPreviewAPI(id<WKUIDelegate> delegate)
     && ![delegate respondsToSelector:@selector(webView:contextMenuForElement:willCommitWithAnimator:)]
     && ![delegate respondsToSelector:@selector(_webView:contextMenuWillPresentForElement:)]
     && ![delegate respondsToSelector:@selector(webView:contextMenuWillPresentForElement:)]
-    && ![delegate respondsToSelector:@selector(_webView:contextMenuDidEndForElement:)]
     && ![delegate respondsToSelector:@selector(webView:contextMenuDidEndForElement:)]
     && ([delegate respondsToSelector:@selector(webView:shouldPreviewElement:)]
         || [delegate respondsToSelector:@selector(webView:previewingViewControllerForElement:defaultActions:)]