Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 02f6442f3dc239e88c1c75520e4502875d7f9028
      
https://github.com/WebKit/WebKit/commit/02f6442f3dc239e88c1c75520e4502875d7f9028
  Author: Jer Noble <jer.no...@apple.com>
  Date:   2024-04-23 (Tue, 23 Apr 2024)

  Changed paths:
    R 
LayoutTests/media/modern-media-controls/controls-visibility-support/controls-visibility-support-fullscreen-on-video-expected.txt
    R 
LayoutTests/media/modern-media-controls/controls-visibility-support/controls-visibility-support-fullscreen-on-video.html
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/ios/TestExpectations
    M Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js
    M Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js
    M 
Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js
    M 
Source/WebCore/Modules/modern-media-controls/controls/vision-layout-traits.js
    M 
Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js
    M Source/WebCore/Modules/modern-media-controls/media/media-controller.js
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLMediaElement.h

  Log Message:
  -----------
  [visionOS] Sometimes native inline controls appear after exiting fullscreen, 
conflicting with page-implemented controls
https://bugs.webkit.org/show_bug.cgi?id=273013
rdar://125878487

Reviewed by Andy Estes.

Previously on visionOS, video fullscreen used element fullscreen as an 
implementation detail, and so
VisionLayoutTraits.controlsAlwaysAvailable() would return true to force native 
controls to be visible in
video fullscreen mode. However with the introduction of WKLinearMediaPlayer, 
this is no longer true;
video fullscreen will use LinearMediaKit rather than element fullscreen. So the 
constant answer from
LayoutTraits became incorrect.

Rather than hard-code these values per-LayoutTraits subclass, just ask the 
HTMLMediaElement, which knows
whether `videoFullscreenRequiresElementFullscreen()` has been set to true.

Refactor things into a new private HTMLMediaElement function 
videoUsesElementFullscreen(), which can be
used from many places inside HTMLMediaElement, including 
shouldForceControlsDisplay(). This ensures the
controls will be visible when videoUsesElementFullscreen() is enabled, hidden 
when linearMediaPlayerEnabled()
is enabled, and always on macOS.

* Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js:
(IOSLayoutTraits.prototype.controlsAlwaysAvailable): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js:
(LayoutTraits.prototype.controlsAlwaysAvailable): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js:
(MacOSLayoutTraits.prototype.controlsAlwaysAvailable): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/vision-layout-traits.js:
(VisionLayoutTraits.prototype.controlsAlwaysAvailable): Deleted.
* 
Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js:
(WatchOSLayoutTraits.prototype.controlsAlwaysAvailable): Deleted.
* Source/WebCore/Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype._shouldControlsBeAvailable):
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::videoUsesElementFullscreen const):
(WebCore::HTMLMediaElement::enterFullscreen):
(WebCore::HTMLMediaElement::shouldForceControlsDisplay const):
(WebCore::HTMLMediaElement::configureMediaControls):
* Source/WebCore/html/HTMLMediaElement.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to