[webkit-changes] [WebKit/WebKit] 8df98d: Remove InjectedBundlePageFullScreenClient

Alex Christensen noreply at github.com
Wed Jan 29 08:13:52 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8df98d581790775b81cebfeec4469d3c2224a001
      https://github.com/WebKit/WebKit/commit/8df98d581790775b81cebfeec4469d3c2224a001
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/fullscreen/event-listener-prefixed-unprefixed-document.html
    M LayoutTests/fullscreen/exit-full-screen-video-crash.html
    M LayoutTests/fullscreen/full-screen-enter-while-exiting-expected.txt
    M LayoutTests/fullscreen/full-screen-enter-while-exiting.html
    M LayoutTests/fullscreen/full-screen-min-max-width-height.html
    M LayoutTests/fullscreen/fullscreen-enter-bottom-padding-animation.html
    M LayoutTests/imported/w3c/web-platform-tests/fullscreen/api/document-exit-fullscreen-twice-expected.txt
    M LayoutTests/media/webkit-media-controls-not-visible-after-exiting-fullscreen.html
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl
    M Source/WebKit/Headers.cmake
    M Source/WebKit/Modules/OSX_Private.modulemap
    M Source/WebKit/Modules/iOS_Private.modulemap
    M Source/WebKit/Shared/API/c/wpe/WebKit.h
    M Source/WebKit/Sources.txt
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/C/WKPage.h
    A Source/WebKit/UIProcess/API/C/WKPageFullScreenClient.h
    M Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp
    M Source/WebKit/UIProcess/API/gtk/PageClientImpl.h
    M Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp
    M Source/WebKit/UIProcess/API/wpe/PageClientImpl.h
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm
    M Source/WebKit/UIProcess/PageClient.h
    M Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp
    M Source/WebKit/UIProcess/WebFullScreenManagerProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
    M Source/WebKit/UIProcess/mac/PageClientImplMac.h
    M Source/WebKit/UIProcess/mac/PageClientImplMac.mm
    M Source/WebKit/UIProcess/playstation/PageClientImpl.cpp
    M Source/WebKit/UIProcess/playstation/PageClientImpl.h
    M Source/WebKit/UIProcess/win/PageClientImpl.cpp
    M Source/WebKit/UIProcess/win/PageClientImpl.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp
    M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
    M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.h
    R Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h
    R Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.cpp
    R Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPageInternals.h
    M Tools/DumpRenderTree/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
    M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
    M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/TestInvocation.cpp
    M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm

  Log Message:
  -----------
  Remove InjectedBundlePageFullScreenClient
rdar://143581808
https://bugs.webkit.org/show_bug.cgi?id=286491

Reviewed by Jer Noble.

It was only used for WebKitTestRunner.
This makes us test functionality that is closer to what users actually see.
It also moves our test infrastructure to the UI process, which makes it
more straightforward to test fullscreen with site isolation.

A few minimal test changes were needed.  First, in order to make delegate callbacks
that used to be synchronous happen in a deterministic order, I needed to add
a call to await testRunner.updatePresentation() in a few places because
WebFullScreenManagerProxy::beganEnterFullScreen has a call to
WebPageProxy::callAfterNextPresentationUpdate in it, so the client is not called
until after a presentation update.  The test fullscreen/exit-full-screen-video-crash.html
needed a testRunner.waitUntilDone/notifyDone pair because the promises that are awaited
are no longer resolved synchronously.  The test fullscreen/full-screen-enter-while-exiting.html
had a lot of custom test infrastructure in internals and testRunner that used the
injected bundle a lot.  I replaced it with a call to testRunner.waitBeforeFinishingFullscreenExit
and a call to testRunner.finishFullscreenExit after we verify that we hit the
webkitfullscreenerror callback that happens when an element fullscreen is requested
during the transition away from fullscreen, which error callback was added in
the change that introduced that test (231317 at main).

A few WPT tests, especially in imported/w3c/web-platform-tests/html/semantics/popovers,
became flaky or fail in different ways now that the fullscreen API callbacks are actually
asynchronous.  These tests already show these issues on wpt.fyi.  This change
makes WebKitTestRunner more similar to a real browser, which reveals these failures.

* LayoutTests/fullscreen/event-listener-prefixed-unprefixed-document.html:
* LayoutTests/fullscreen/exit-full-screen-video-crash.html:
* LayoutTests/fullscreen/full-screen-enter-while-exiting-expected.txt:
* LayoutTests/fullscreen/full-screen-enter-while-exiting.html:
* LayoutTests/fullscreen/full-screen-min-max-width-height.html:
* LayoutTests/fullscreen/fullscreen-enter-bottom-padding-animation.html:
* LayoutTests/imported/w3c/web-platform-tests/fullscreen/api/document-exit-fullscreen-twice-expected.txt:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::webkitWillEnterFullScreenForElement): Deleted.
(WebCore::Internals::webkitDidEnterFullScreenForElement): Deleted.
(WebCore::Internals::webkitWillExitFullScreenForElement): Deleted.
(WebCore::Internals::webkitDidExitFullScreenForElement): Deleted.
(WebCore::Internals::isAnimatingFullScreen const): Deleted.
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/Headers.cmake:
* Source/WebKit/Modules/OSX_Private.modulemap:
* Source/WebKit/Modules/iOS_Private.modulemap:
* Source/WebKit/Shared/API/c/wpe/WebKit.h:
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetFullScreenClientForTesting):
(WKPageDidEnterFullScreen):
(WKPageWillExitFullScreen):
(WKPageDidExitFullScreen):
(WKPageSaveScrollPositionForFullScreen):
(WKPageRestoreScrollPositionAfterFullScreen):
* Source/WebKit/UIProcess/API/C/WKPage.h:
* Source/WebKit/UIProcess/API/C/WKPageFullScreenClient.h: Added.
* Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::setFullScreenClientForTesting):
* Source/WebKit/UIProcess/API/gtk/PageClientImpl.h:
* Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::setFullScreenClientForTesting):
* Source/WebKit/UIProcess/API/wpe/PageClientImpl.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::setFullScreenClientForTesting):
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::attachToNewClient):
* Source/WebKit/UIProcess/WebFullScreenManagerProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setFullScreenClientForTesting):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::fullScreenManagerProxyClient):
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::fullScreenManagerProxyClient):
* Source/WebKit/UIProcess/playstation/PageClientImpl.cpp:
(WebKit::PageClientImpl::setFullScreenClientForTesting):
* Source/WebKit/UIProcess/playstation/PageClientImpl.h:
* Source/WebKit/UIProcess/win/PageClientImpl.cpp:
(WebKit::PageClientImpl::setFullScreenClientForTesting):
* Source/WebKit/UIProcess/win/PageClientImpl.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::supportsFullScreenForElement):
(WebKit::WebFullScreenManager::enterFullScreenForElement):
(WebKit::WebFullScreenManager::exitFullScreenForElement):
(WebKit::WebFullScreenManager::willEnterFullScreen):
(WebKit::WebFullScreenManager::didEnterFullScreen):
(WebKit::WebFullScreenManager::willExitFullScreen):
(WebKit::WebFullScreenManager::setAnimatingFullScreen):
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetFullScreenClient): Deleted.
(WKBundlePageWillEnterFullScreen): Deleted.
(WKBundlePageDidEnterFullScreen): Deleted.
(WKBundlePageWillExitFullScreen): Deleted.
(WKBundlePageDidExitFullScreen): Deleted.
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h: Removed.
* Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.cpp: Removed.
* Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h: Removed.
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
(WebKit::WebPage::closeFullScreen):
(WebKit::WebPage::initializeInjectedBundleFullScreenClient): Deleted.
(WebKit::WebPage::injectedBundleFullScreenClient): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPageInternals.h:
* Tools/DumpRenderTree/TestRunner.cpp:
(alwaysResolvePromiseCallback):
(TestRunner::staticFunctions):
(flushConsoleLogsCallback): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::InjectedBundlePage):
(WTR::InjectedBundlePage::supportsFullScreen): Deleted.
(WTR::InjectedBundlePage::enterFullScreenForElement): Deleted.
(WTR::InjectedBundlePage::exitFullScreenForElement): Deleted.
(WTR::InjectedBundlePage::beganEnterFullScreen): Deleted.
(WTR::InjectedBundlePage::beganExitFullScreen): Deleted.
(WTR::InjectedBundlePage::closeFullScreen): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::dumpFullScreenCallbacks):
(WTR::TestRunner::updatePresentation):
(WTR::TestRunner::waitBeforeFinishingFullscreenExit):
(WTR::TestRunner::finishFullscreenExit):
(WTR::TestRunner::setEnterFullscreenForElementCallback): Deleted.
(WTR::TestRunner::callEnterFullscreenForElementCallback): Deleted.
(WTR::TestRunner::setExitFullscreenForElementCallback): Deleted.
(WTR::TestRunner::callExitFullscreenForElementCallback): Deleted.
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::dumpFullScreenCallbacks): Deleted.
(WTR::TestRunner::shouldDumpFullScreenCallbacks const): Deleted.
(WTR::TestRunner::setHasCustomFullScreenBehavior): Deleted.
(WTR::TestRunner::hasCustomFullScreenBehavior const): Deleted.
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::willEnterFullScreen):
(WTR::TestController::beganEnterFullScreen):
(WTR::TestController::exitFullScreen):
(WTR::TestController::beganExitFullScreen):
(WTR::TestController::finishFullscreenExit):
(WTR::TestController::createOtherPlatformWebView):
(WTR::TestController::updatePresentation):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::didReceiveAsyncMessageFromInjectedBundle):
* Tools/WebKitTestRunner/TestController.h:
(WTR::TestController::dumpFullScreenCallbacks):
(WTR::TestController::waitBeforeFinishingFullscreenExit):
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::updatePresentation):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list