Title: [295052] trunk/Source
Revision
295052
Author
wenson_hs...@apple.com
Date
2022-05-31 08:22:39 -0700 (Tue, 31 May 2022)

Log Message

[iOS] Refactor some logic around `VideoFullscreenInterfaceAVKit`
https://bugs.webkit.org/show_bug.cgi?id=241113

Reviewed by Eric Carlson.

Adjust the window level of `VideoFullscreenInterfaceAVKit`'s window. No change in behavior.

* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::doSetup):
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didEnterFullscreen):
(WebKit::WebPageProxy::didExitFullscreen):

Also refactor `WebPageProxy::did(Enter|Exit)Fullscreen`, such that we implement
`didExitFullscreen(PlaybackSessionContextIdentifier)` in the case where
`ENABLE(VIDEO_PRESENTATION_MODE)` is enabled, and `didExitFullscreen()` (with no arguments) in the
case where it's disabled.

Currently both versions of `did(Enter|Exit)Fullscreen()` exist if `ENABLE(VIDEO_PRESENTATION_MODE)`
is set, even though we only expect to call into `did(Enter|Exit)Fullscreen()` from outside of
`WebPageProxy`.

* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didEnterFullscreen):
(WebKit::PageClientImpl::didExitFullscreen):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _didEnterFullscreen]):
(-[WKContentView _didExitFullscreen]):
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:

Canonical link: https://commits.webkit.org/251147@main

Modified Paths

Diff

Modified: trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm (295051 => 295052)


--- trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm	2022-05-31 15:22:39 UTC (rev 295052)
@@ -1371,7 +1371,7 @@
         [[m_viewController view] setFrame:[m_window bounds]];
         [m_viewController _setIgnoreAppSupportedOrientations:YES];
         [m_window setRootViewController:m_viewController.get()];
-        [m_window setWindowLevel:PAL::get_UIKit_UITextEffectsBeneathStatusBarWindowLevel() + 1];
+        [m_window setWindowLevel:PAL::get_UIKit_UITextEffectsBeneathStatusBarWindowLevel() - 1];
         [m_window makeKeyAndVisible];
     }
 #endif

Modified: trunk/Source/WebKit/UIProcess/PageClient.h (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/PageClient.h	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/PageClient.h	2022-05-31 15:22:39 UTC (rev 295052)
@@ -658,6 +658,11 @@
 #if USE(GRAPHICS_LAYER_WC)
     virtual bool usesOffscreenRendering() const = 0;
 #endif
+
+#if ENABLE(VIDEO_PRESENTATION_MODE)
+    virtual void didEnterFullscreen() = 0;
+    virtual void didExitFullscreen() = 0;
+#endif
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2022-05-31 15:22:39 UTC (rev 295052)
@@ -6081,21 +6081,11 @@
     m_uiClient->fullscreenMayReturnToInline(this);
 }
 
-void WebPageProxy::didEnterFullscreen()
-{
-    m_uiClient->didEnterFullscreen(this);
-}
-
-void WebPageProxy::didExitFullscreen()
-{
-    m_uiClient->didExitFullscreen(this);
-}
-
 #if ENABLE(VIDEO_PRESENTATION_MODE)
 
 void WebPageProxy::didEnterFullscreen(PlaybackSessionContextIdentifier identifier)
 {
-    didEnterFullscreen();
+    m_uiClient->didEnterFullscreen(this);
 
     m_currentFullscreenVideoSessionIdentifier = identifier;
     updateFullscreenVideoExtraction();
@@ -6103,7 +6093,7 @@
 
 void WebPageProxy::didExitFullscreen(PlaybackSessionContextIdentifier identifier)
 {
-    didExitFullscreen();
+    m_uiClient->didExitFullscreen(this);
 
     if (m_currentFullscreenVideoSessionIdentifier == identifier) {
         m_currentFullscreenVideoSessionIdentifier = std::nullopt;
@@ -6111,8 +6101,20 @@
     }
 }
 
-#endif // ENABLE(VIDEO_PRESENTATION_MODE)
+#else
 
+void WebPageProxy::didEnterFullscreen()
+{
+    m_uiClient->didEnterFullscreen(this);
+}
+
+void WebPageProxy::didExitFullscreen()
+{
+    m_uiClient->didExitFullscreen(this);
+}
+
+#endif
+
 void WebPageProxy::closePage()
 {
     if (isClosed())

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2022-05-31 15:22:39 UTC (rev 295052)
@@ -522,9 +522,6 @@
     void exitFullscreenImmediately();
     void fullscreenMayReturnToInline();
 
-    void didEnterFullscreen();
-    void didExitFullscreen();
-
     void suspend(CompletionHandler<void(bool)>&&);
     void resume(CompletionHandler<void(bool)>&&);
     bool isSuspended() const { return m_isSuspended; }
@@ -1971,6 +1968,9 @@
     void didExitFullscreen(PlaybackSessionContextIdentifier);
     void didChangePlaybackRate(PlaybackSessionContextIdentifier);
     void didChangeCurrentTime(PlaybackSessionContextIdentifier);
+#else
+    void didEnterFullscreen();
+    void didExitFullscreen();
 #endif
 
     void setHasExecutedAppBoundBehaviorBeforeNavigation() { m_hasExecutedAppBoundBehaviorBeforeNavigation = true; }

Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h	2022-05-31 15:22:39 UTC (rev 295052)
@@ -312,6 +312,11 @@
 
     bool isInMultitaskingMode() const final;
 
+#if ENABLE(VIDEO_PRESENTATION_MODE)
+    void didEnterFullscreen() final;
+    void didExitFullscreen() final;
+#endif
+
     WeakObjCPtr<WKContentView> m_contentView;
     RetainPtr<WKEditorUndoTarget> m_undoTarget;
 };

Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm	2022-05-31 15:22:39 UTC (rev 295052)
@@ -983,6 +983,20 @@
     [m_contentView _showDataDetectorsUIForPositionInformation:positionInformation];
 }
 
+#if ENABLE(VIDEO_PRESENTATION_MODE)
+
+void PageClientImpl::didEnterFullscreen()
+{
+    [m_contentView _didEnterFullscreen];
+}
+
+void PageClientImpl::didExitFullscreen()
+{
+    [m_contentView _didExitFullscreen];
+}
+
+#endif // ENABLE(VIDEO_PRESENTATION_MODE)
+
 #if ENABLE(ATTACHMENT_ELEMENT)
 
 void PageClientImpl::writePromisedAttachmentToPasteboard(WebCore::PromisedAttachmentInfo&& info)

Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h	2022-05-31 15:22:39 UTC (rev 295052)
@@ -224,6 +224,7 @@
     EditableRootIsTransparentOrFullyClipped = 1 << 0,
     FocusedElementIsTooSmall = 1 << 1,
     InteractionIsHappening = 1 << 2,
+    ShowingFullscreenVideo = 1 << 3,
 };
 
 struct WKSelectionDrawingInfo {
@@ -728,6 +729,11 @@
 - (void)updateTextSuggestionsForInputDelegate;
 #endif
 
+#if ENABLE(VIDEO_PRESENTATION_MODE)
+- (void)_didEnterFullscreen;
+- (void)_didExitFullscreen;
+#endif
+
 - (void)_requestTextInputContextsInRect:(CGRect)rect completionHandler:(void (^)(NSArray<_WKTextInputContext *> *))completionHandler;
 - (void)_focusTextInputContext:(_WKTextInputContext *)context placeCaretAt:(CGPoint)point completionHandler:(void (^)(UIResponder<UITextInput> *))completionHandler;
 - (void)_willBeginTextInteractionInTextInputContext:(_WKTextInputContext *)context;

Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2022-05-31 15:22:39 UTC (rev 295052)
@@ -10207,6 +10207,20 @@
 
 #endif // HAVE(PENCILKIT_TEXT_INPUT)
 
+#if ENABLE(VIDEO_PRESENTATION_MODE)
+
+- (void)_didEnterFullscreen
+{
+    [self _startSuppressingSelectionAssistantForReason:WebKit::SuppressSelectionAssistantReason::ShowingFullscreenVideo];
+}
+
+- (void)_didExitFullscreen
+{
+    [self _stopSuppressingSelectionAssistantForReason:WebKit::SuppressSelectionAssistantReason::ShowingFullscreenVideo];
+}
+
+#endif // ENABLE(VIDEO_PRESENTATION_MODE)
+
 #if ENABLE(ATTACHMENT_ELEMENT)
 
 #if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)

Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h (295051 => 295052)


--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h	2022-05-31 13:41:03 UTC (rev 295051)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h	2022-05-31 15:22:39 UTC (rev 295052)
@@ -295,6 +295,11 @@
         
     void requestScrollToRect(const WebCore::FloatRect& targetRect, const WebCore::FloatPoint& origin) override;
 
+#if ENABLE(VIDEO_PRESENTATION_MODE)
+    void didEnterFullscreen() final { }
+    void didExitFullscreen() final { }
+#endif
+
     NSView *m_view;
     WeakPtr<WebViewImpl> m_impl;
 #if USE(AUTOCORRECTION_PANEL)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to