Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 17897423938e86e276fab1d57b6ef0d99944e41d
      
https://github.com/WebKit/WebKit/commit/17897423938e86e276fab1d57b6ef0d99944e41d
  Author: Eric Carlson <eric.carl...@apple.com>
  Date:   2025-07-24 (Thu, 24 Jul 2025)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Modules/audiosession/DOMAudioSession.cpp
    M Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp
    M Source/WebCore/Modules/mediasession/MediaSession.cpp
    M Source/WebCore/Modules/mediasession/MediaSession.h
    M Source/WebCore/Modules/mediastream/MediaStream.cpp
    M Source/WebCore/Modules/mediastream/MediaStream.h
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
    M Source/WebCore/Modules/mediastream/MediaStreamTrack.h
    M Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
    M Source/WebCore/Modules/webaudio/AudioContext.cpp
    M Source/WebCore/Modules/webaudio/AudioContext.h
    M Source/WebCore/Modules/webaudio/BaseAudioContext.cpp
    M Source/WebCore/Modules/webaudio/BaseAudioContext.h
    M Source/WebCore/SaferCPPExpectations/UncheckedCallArgsCheckerExpectations
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLMediaElement.h
    M Source/WebCore/html/MediaElementSession.cpp
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebCore/page/PageConfiguration.h
    M Source/WebCore/page/SettingsBase.h
    M Source/WebCore/page/cocoa/PageCocoa.mm
    M Source/WebCore/platform/RemoteCommandListener.h
    M Source/WebCore/platform/audio/MediaSessionManagerInterface.h
    M Source/WebCore/platform/audio/PlatformMediaSession.cpp
    M Source/WebCore/platform/audio/PlatformMediaSession.h
    M Source/WebCore/platform/audio/PlatformMediaSessionInterface.cpp
    M Source/WebCore/platform/audio/PlatformMediaSessionInterface.h
    M Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp
    M Source/WebCore/platform/audio/PlatformMediaSessionManager.h
    A Source/WebCore/platform/audio/PlatformMediaSessionTypes.h
    M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h
    M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm
    M Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.cpp
    M Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.h
    M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm
    M Source/WebCore/platform/graphics/MediaPlaybackTarget.h
    M 
Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp
    M Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h
    M 
Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp
    M 
Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h
    M Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp
    M Source/WebCore/testing/InternalSettings.cpp
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp
    M Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
    M Source/WebKit/WebProcess/WebProcess.cpp
    M Source/WebKit/WebProcess/WebProcess.h
    M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

  Log Message:
  -----------
  Remove PlatformMediaSessionManager::singleton
https://bugs.webkit.org/show_bug.cgi?id=292687
rdar://150885431

Reviewed by Andy Estes.

For site-isolation we will need to move MediaSessionManager and related classes 
to the
GPU process and have a different MediaSessionManagerInterface proxy for every 
Page. As a
step in this direction, get rid of PlatformMediaSessionManager::singleton and 
add
Page::mediaSessionManager and remove all PlatformMediaSessionManager static 
methods.

Add a factory function to PageConfiguration that WebProcess will use to create a
RemoveMediaSessionManager once it exists.

* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/audiosession/DOMAudioSession.cpp:
(WebCore::DOMAudioSession::setType): Use Page::mediaSessionManager instead of
PlatformMediaSessionManager::singleton.

* Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp:
(WebCore::gatherDecodingInfo): Ditto.

* Source/WebCore/Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::setActionHandler): Ditto.
(WebCore::MediaSession::protectedDocument const): Add Document RefPtr
(WebCore::MediaSession::sessionManager const): Add accessor.
(WebCore::MediaSession::activeMediaElement const):
(WebCore::MediaSession::updateNowPlayingInfo):
(WebCore::MediaSession::updateCaptureState):
(WebCore::MediaSession::document const): Deleted.
* Source/WebCore/Modules/mediasession/MediaSession.h:

* Source/WebCore/Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::startProducingData): Call 
`sessionCanProduceAudioChanged` if the
stream has an audio track so we don't need to do call it from the Mock audio 
source.
(WebCore::MediaStream::mediaSessionManager const):
* Source/WebCore/Modules/mediastream/MediaStream.h:

* Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::MediaStreamTrack): Use Page::mediaSessionManager 
instead of
PlatformMediaSessionManager::singleton.
(WebCore::MediaStreamTrack::~MediaStreamTrack): Ditto.
(WebCore::MediaStreamTrack::stopTrack): Ditto.
(WebCore::MediaStreamTrack::trackEnded): Ditto.
(WebCore::MediaStreamTrack::trackMutedChanged): Ditto.
(WebCore::MediaStreamTrack::mediaSessionManager const):
* Source/WebCore/Modules/mediastream/MediaStreamTrack.h:

* Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::start): Ditto.

* Source/WebCore/Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::defaultDestinationWillBecomeConnected): Ditto.
(WebCore::AudioContext::sessionManager const): Ditto.
* Source/WebCore/Modules/webaudio/AudioContext.h:

* Source/WebCore/Modules/webaudio/BaseAudioContext.cpp:
(WebCore::BaseAudioContext::setState): Ditto.
(WebCore::BaseAudioContext::mediaSessionManager const):
* Source/WebCore/Modules/webaudio/BaseAudioContext.h:

* Source/WebCore/WebCore.xcodeproj/project.pbxproj:

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Ditto.

* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::bestMediaElementForRemoteControls): Deleted.
(WebCore::HTMLMediaElement::seekToPlaybackPositionEndedTimerFired): Use
Page::mediaSessionManager instead of PlatformMediaSessionManager::singleton.
(WebCore::HTMLMediaElement::couldPlayIfEnoughData const): Ditto.
(WebCore::HTMLMediaElement::shouldDisableSleep const): Ditto.
(WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const): 
Ditto.
(WebCore::HTMLMediaElement::sessionManager const):
* Source/WebCore/html/HTMLMediaElement.h:

* Source/WebCore/html/MediaElementSession.cpp:
(WebCore::MediaElementSession::isVisibleInViewportChanged): Use
PlatformMediaSessionClient::sessionManager instead of 
PlatformMediaSessionManager::singleton.
(WebCore::MediaElementSession::clientDataBufferingTimerFired): Ditto.
(WebCore::MediaElementSession::updateClientDataBuffering): Ditto.
(WebCore::MediaElementSession::canShowControlsManager const): Ditto.
(WebCore::MediaElementSession::setHasPlaybackTargetAvailabilityListeners): 
Ditto.

* Source/WebCore/page/Page.cpp:
(WebCore::Page::bestMediaElementForRemoteControls): Move from HTMLMediaElement.
(WebCore::Page::mediaPlaybackExists): Use mediaSessionManager instance variable 
instead of
PlatformMediaSessionManager::singletonIfExists.
(WebCore::Page::mediaPlaybackIsPaused): Ditto.
(WebCore::Page::pauseAllMediaPlayback): Ditto.
(WebCore::Page::suspendAllMediaPlayback): Ditto.
(WebCore::Page::resumeAllMediaPlayback): Ditto.
(WebCore::Page::suspendAllMediaBuffering): Ditto.
(WebCore::Page::resumeAllMediaBuffering): Ditto.
(WebCore::Page::setActivityState): Ditto.
(WebCore::Page::activeNowPlayingSessionUpdateTimerFired): Ditto.
(WebCore::Page::setPresentingApplicationAuditToken): Ditto.
(WebCore::Page::mediaSessionManager): Allocate `m_mediaSessionManager` with the 
factory
function if it doesn't exist. If m_mediaSessionManagerFactory is null, true for 
WK1 and
WK2 until we move the session manager to the GPU process, create a factory that 
allocates
and instance of PlatformMediaSessionManager.
(WebCore::Page::mediaSessionManagerIfExists const):
(WebCore::Page::mediaSessionManagerForPageIdentifier):
* Source/WebCore/page/Page.h:

* Source/WebCore/page/PageConfiguration.h: Add MediaSessionManagerFactory.

* Source/WebCore/page/cocoa/PageCocoa.mm:
(WebCore::Page::setPresentingApplicationBundleIdentifier): Use 
mediaSessionManager() instead
of PlatformMediaSessionManager directly.

* Source/WebCore/platform/RemoteCommandListener.h:
* Source/WebCore/platform/audio/MediaSessionManagerInterface.h: Inherit from
ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr.
(WebCore::MediaSessionManagerInterface::addSupportedCommand):
(WebCore::MediaSessionManagerInterface::removeSupportedCommand):
(WebCore::MediaSessionManagerInterface::supportedCommands const):

* Source/WebCore/platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::setActive): Use the client's 
mediaSessionManager instead of
PlatformMediaSessionManager::singleton.
(WebCore::PlatformMediaSession::setState): Ditto.
(WebCore::PlatformMediaSession::clientWillBeginPlayback): Ditto.
(WebCore::PlatformMediaSession::processClientWillPausePlayback): Ditto.
(WebCore::PlatformMediaSession::stopSession): Ditto.
(WebCore::PlatformMediaSession::isPlayingToWirelessPlaybackTargetChanged): 
Ditto.
(WebCore::PlatformMediaSession::canProduceAudioChanged): Ditto.
(WebCore::PlatformMediaSession::clientCharacteristicsChanged): Ditto.

* Source/WebCore/platform/audio/PlatformMediaSessionInterface.cpp:
* Source/WebCore/platform/audio/PlatformMediaSessionInterface.h: Move structs, 
classes,
and enums used by both PlatformMediaSessionInterface andn 
MediaSessionManagerInterface to
PlatformMediaSessionTypes.h to avoid recursive includes.
(WebCore::PlatformMediaSessionInterface::sessionManager const):

* Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::create): Add optional PageIdentifier 
parameter.
(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary): Make 
not static.
(WebCore::PlatformMediaSessionManager::updateAudioSessionCategoryIfNecessary): 
Ditto.
(WebCore::sharedPlatformMediaSessionManager): Deleted.
(WebCore::PlatformMediaSessionManager::singleton): Deleted.
(WebCore::PlatformMediaSessionManager::singletonIfExists): Deleted.
(WebCore::PlatformMediaSessionManager::setAlternateWebMPlayerEnabled): Deleted.
(WebCore::PlatformMediaSessionManager::alternateWebMPlayerEnabled): Deleted.
* Source/WebCore/platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::ref const): Deleted.
(WebCore::PlatformMediaSessionManager::deref const): Deleted.

* Source/WebCore/platform/audio/PlatformMediaSessionTypes.h: Added.

* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h:
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::MediaSessionManagerCocoa): Don't initialize 
m_defaultBufferSize
as it requires a sync call to the GPU process.
(WebCore::MediaSessionManagerCocoa::updateSessionState): Initialize 
m_defaultBufferSize if
necessary.
(WebCore::PlatformMediaSessionManager::create): Add optional PageIdentifier 
parameter.

* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::PlatformMediaSessionManager::create): Ditto.

* Source/WebCore/platform/graphics/MediaPlayer.cpp:
(WebCore::cocoaWebMPlayerEnabled):
(WebCore::MediaPlayer::setCocoaWebMPlayerEnabled):
* Source/WebCore/platform/graphics/MediaPlayer.h:

* 
Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
(WebCore::computeMediaCapabilitiesInfo): Use the factory function to look up 
the correct
media session for the configuration page identifier.
* Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h: Add 
optional
page identifier.

* Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
(WebCore::mediaSessionManagerProvider):
(WebCore::MediaEngineConfigurationFactory::setMediaSessionManagerProvider):
(WebCore::MediaEngineConfigurationFactory::mediaSessionManagerForPageIdentifier):
* Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h:

* Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::startProducingData): Remove the call to
PlatformMediaSessionManager::singleton().sessionCanProduceAudioChanged, it is 
done in
MediaStream::startProducingData. Remove the asserts about audio session 
category and mode
because they will be changed asynchronously.

* Source/WebCore/testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettingsWrapper::InternalSettingsWrapper): Deleted.
(WebCore::InternalSettingsWrapper::~InternalSettingsWrapper): Deleted.
(): Deleted.
(WebCore::InternalSettingsWrapper::internalSettings const): Deleted.
(WebCore::InternalSettings::supplementName): Deleted.
(WebCore::InternalSettings::from): Deleted.
(WebCore::InternalSettings::hostDestroyed): Deleted.
(WebCore::InternalSettings::InternalSettings): Deleted.
(WebCore::InternalSettings::create): Deleted.
(WebCore::InternalSettings::resetToConsistentState): Deleted.
(WebCore::InternalSettings::settings const): Deleted.
(WebCore::InternalSettings::setStandardFontFamily): Deleted.
(WebCore::InternalSettings::setSerifFontFamily): Deleted.
(WebCore::InternalSettings::setSansSerifFontFamily): Deleted.
(WebCore::InternalSettings::setFixedFontFamily): Deleted.
(WebCore::InternalSettings::setCursiveFontFamily): Deleted.
(WebCore::InternalSettings::setFantasyFontFamily): Deleted.
(WebCore::InternalSettings::setPictographFontFamily): Deleted.
(WebCore::InternalSettings::setTextAutosizingWindowSizeOverride): Deleted.
(WebCore::InternalSettings::setEditingBehavior): Deleted.
(WebCore::InternalSettings::setStorageBlockingPolicy): Deleted.
(WebCore::InternalSettings::setMinimumTimerInterval): Deleted.
(WebCore::InternalSettings::setTimeWithoutMouseMovementBeforeHidingControls): 
Deleted.
(WebCore::InternalSettings::setFontLoadTimingOverride): Deleted.
(WebCore::InternalSettings::setAllowAnimationControlsOverride): Deleted.
(WebCore::InternalSettings::setUserInterfaceDirectionPolicy): Deleted.
(WebCore::InternalSettings::setSystemLayoutDirection): Deleted.
(WebCore::InternalSettings::forcedColorsAreInvertedAccessibilityValue const): 
Deleted.
(WebCore::InternalSettings::setForcedColorsAreInvertedAccessibilityValue): 
Deleted.
(WebCore::InternalSettings::forcedDisplayIsMonochromeAccessibilityValue const): 
Deleted.
(WebCore::InternalSettings::setForcedDisplayIsMonochromeAccessibilityValue): 
Deleted.
(WebCore::InternalSettings::forcedPrefersContrastAccessibilityValue const): 
Deleted.
(WebCore::InternalSettings::setForcedPrefersContrastAccessibilityValue): 
Deleted.
(WebCore::InternalSettings::forcedPrefersReducedMotionAccessibilityValue 
const): Deleted.
(WebCore::InternalSettings::setForcedPrefersReducedMotionAccessibilityValue): 
Deleted.
(WebCore::InternalSettings::forcedSupportsHighDynamicRangeValue const): Deleted.
(WebCore::InternalSettings::setForcedSupportsHighDynamicRangeValue): Deleted.
(WebCore::InternalSettings::vp9DecoderEnabled const): Deleted.
(WebCore::InternalSettings::setCustomPasteboardDataEnabled): Deleted.
(WebCore::InternalSettings::setShouldManageAudioSessionCategory): Deleted.
(WebCore::InternalSettings::setShouldDisplayTrackKind): Deleted.
(WebCore::InternalSettings::shouldDisplayTrackKind): Deleted.
(WebCore::InternalSettings::setEditableRegionEnabled): Deleted.
(WebCore::InternalSettings::setCanStartMedia): Deleted.
(WebCore::InternalSettings::setUseDarkAppearance): Deleted.
(WebCore::InternalSettings::setUseElevatedUserInterfaceLevel): Deleted.
(WebCore::InternalSettings::setAllowUnclampedScrollPosition): Deleted.
(WebCore::InternalSettings::setShouldDeactivateAudioSession): Deleted.
(WebCore::InternalSettings::setShouldMockBoldSystemFontForAccessibility): 
Deleted.
(WebCore::InternalSettings::setDefaultAudioContextSampleRate): Deleted.
(WebCore::InternalSettings::setAllowedMediaContainerTypes): Deleted.
(WebCore::InternalSettings::setAllowedMediaCodecTypes): Deleted.
(WebCore::InternalSettings::setAllowedMediaVideoCodecIDs): Deleted.
(WebCore::InternalSettings::setAllowedMediaAudioCodecIDs): Deleted.
(WebCore::InternalSettings::setAllowedMediaCaptionFormatTypes): Deleted.
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::beginMediaSessionInterruption):
(WebCore::Internals::endMediaSessionInterruption):
(WebCore::Internals::applicationWillBecomeInactive):
(WebCore::Internals::applicationDidBecomeActive):
(WebCore::Internals::applicationWillEnterForeground const):
(WebCore::Internals::applicationDidEnterBackground const):
(WebCore::Internals::setMediaSessionRestrictions):
(WebCore::Internals::mediaSessionRestrictions const):
(WebCore::Internals::postRemoteControlCommand):
(WebCore::Internals::simulateSystemSleep const):
(WebCore::Internals::simulateSystemWake const):
(WebCore::Internals::nowPlayingMetadata const):
(WebCore::Internals::nowPlayingState const):
(WebCore::Internals::isMonitoringWirelessRoutes const):
(WebCore::Internals::audioCaptureSourceCount const):
(WebCore::Internals::processWillSuspend):
(WebCore::Internals::processDidResume):
(WebCore::Internals::setIsPlayingToAutomotiveHeadUnit):
(WebCore::Internals::platformSupportedCommands const):
(WebCore::Internals::sessionManager const):
* Source/WebCore/testing/Internals.h:

* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::updateGPUProcessPreferences): 
setAlternateWebMPlayerEnabled moved from
PlatformMediaSessionManager to MediaPlayer.

* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processWillSuspend): Added, used to
(WebKit::WebPageProxy::processDidResume):
* Source/WebKit/UIProcess/WebPageProxy.h:

* Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:
(WebKit::GPUProcessConnection::didReceiveRemoteCommand): Pass the remote 
command to the
WebProcess, which will pass it to the each WebPage, which will pass it to the 
Page, which
will pass it to the media session manager.

* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::requestActiveNowPlayingSessionInfo):
(WebKit::WebPage::processSystemWillSleep const):
(WebKit::WebPage::processSystemDidWake const):

* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_textAnimationController):
(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::processWillSuspend):
(WebKit::WebPage::processDidResume):
(WebKit::WebPage::didReceiveRemoteCommand):
(WebKit::WebPage::startObservingNowPlayingMetadata):
(WebKit::WebPage::stopObservingNowPlayingMetadata):
(WebKit::WebPage::mediaSessionManager const):
(WebKit::WebPage::mediaSessionManagerIfExists const):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::applicationWillResignActive):
(WebKit::WebPage::applicationDidEnterBackground):
(WebKit::WebPage::applicationWillEnterForeground):
(WebKit::WebPage::applicationDidBecomeActive):
(WebKit::WebPage::applicationDidEnterBackgroundForMedia):
(WebKit::WebPage::applicationWillEnterForegroundForMedia):

* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::prepareToSuspend):
(WebKit::WebProcess::processDidResume):
(WebKit::WebProcess::didReceiveRemoteCommand):
* Source/WebKit/WebProcess/WebProcess.h:

* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::systemWillSleep):
(WebKit::WebProcess::systemDidWake):

Canonical link: https://commits.webkit.org/297837@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