- 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)