Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4d134575ba2efbde2d21a489d7aca35831e0f1eb
      
https://github.com/WebKit/WebKit/commit/4d134575ba2efbde2d21a489d7aca35831e0f1eb
  Author: Andy Estes <[email protected]>
  Date:   2024-08-05 (Mon, 05 Aug 2024)

  Changed paths:
    M Source/WebCore/DerivedSources-input.xcfilelist
    M Source/WebCore/DerivedSources.make
    M Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp
    M Source/WebCore/Modules/mediacontrols/MediaControlsHost.h
    M Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl
    M Source/WebCore/Modules/mediasession/MediaSession.cpp
    M Source/WebCore/Modules/mediasession/MediaSession.h
    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
    A 
Source/WebCore/Modules/modern-media-controls/controls/metadata-container.css
    A 
Source/WebCore/Modules/modern-media-controls/controls/metadata-container.js
    M 
Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js
    M 
Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css
    M 
Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.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
    A Source/WebCore/Modules/modern-media-controls/media/metadata-support.js
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/dom/EventNames.json
    M Source/WebCore/en.lproj/modern-media-controls-localized-strings.js

  Log Message:
  -----------
  [tvOS] Present title and artist metadata in media controls
https://bugs.webkit.org/show_bug.cgi?id=277641
rdar://133226960

Reviewed by Jer Noble.

Taught TVOSMediaControls to present title and artist metadata when the website 
makes this
information available via MediaSession.

This is accomplished by adding a new MetadataSupport support class that is 
installed when
TVOSMediaControls are enabled. MetadataSupport asks MediaControlsHost to add 
itself as a
MediaSessionObserver. When MediaSession metadata changes MediaControlsHost 
dispatches a new
webkitmediasessionmetadatachanged event to the User-Agent shadow root, and when 
MetadataSupport
observes this event it syncs TVOSMediaControls' metadataContainer control by 
updating its title and
artist labels.

To make it easier to specify supporting object classes for a given platform,
supportingObjectClasses was moved from MediaController to LayoutTraits so that 
LayoutTraits
subclasses can override it. Since this serves the purpose of 
overridenSupportingObjectClasses (but
with more flexibility), overridenSupportingObjectClasses was removed.

* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp:
(WebCore::MediaControlsHost::mediaSession const):
(WebCore::MediaControlsHost::ensureMediaSessionObserver):
(WebCore::MediaControlsHost::metadataChanged):
* Source/WebCore/Modules/mediacontrols/MediaControlsHost.h:
* Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl:
* Source/WebCore/Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::hasObserver const):
* Source/WebCore/Modules/mediasession/MediaSession.h:
* Source/WebCore/Modules/modern-media-controls/controls/ios-layout-traits.js:
(IOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/layout-traits.js:
(LayoutTraits.prototype.supportingObjectClasses):
(LayoutTraits.prototype.overridenSupportingObjectClasses): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/macos-layout-traits.js:
(MacOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/metadata-container.css: 
Added.
(.media-controls.fullscreen.tvos > .metadata-container > .title-label):
(.media-controls.fullscreen.tvos > .metadata-container > .artist-label):
* Source/WebCore/Modules/modern-media-controls/controls/metadata-container.js: 
Added.
(MetadataContainer.prototype.get title):
(MetadataContainer.prototype.set title):
(MetadataContainer.prototype.get artist):
(MetadataContainer.prototype.set artist):
(MetadataContainer.prototype.commitProperty):
* Source/WebCore/Modules/modern-media-controls/controls/tvos-layout-traits.js:
(TVOSLayoutTraits.prototype.supportingObjectClasses):
(TVOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.css:
(.media-controls.fullscreen.tvos):
(.media-controls.fullscreen.tvos > .metadata-container):
(.media-controls.fullscreen.tvos > .controls-bar): Deleted.
* Source/WebCore/Modules/modern-media-controls/controls/tvos-media-controls.js:
(TVOSMediaControls.prototype.layout):
* Source/WebCore/Modules/modern-media-controls/controls/vision-layout-traits.js:
(VisionLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted.
* 
Source/WebCore/Modules/modern-media-controls/controls/watchos-layout-traits.js:
(WatchOSLayoutTraits.prototype.overridenSupportingObjectClasses): Deleted.
* Source/WebCore/Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype._updateControlsIfNeeded):
(MediaController.prototype._supportingObjectClasses): Deleted.
* Source/WebCore/Modules/modern-media-controls/media/metadata-support.js: Added.
(MetadataSupport.prototype.enable):
(MetadataSupport.prototype.disable):
(MetadataSupport.prototype.get control):
(MetadataSupport.prototype.syncControl):
(MetadataSupport):
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/EventNames.json:
* Source/WebCore/en.lproj/modern-media-controls-localized-strings.js:

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



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

Reply via email to