Changeset 256904 in webkit


Ignore:
Timestamp:
Feb 18, 2020 8:50:31 PM (4 years ago)
Author:
youenn@apple.com
Message:

Reduce use of PlatformMediaSessionManager::sharedManager()
https://bugs.webkit.org/show_bug.cgi?id=207924

Reviewed by Eric Carlson.

The plan is to be able to have PlatformMediaSession in GPU process which might have different managers,
typically a manager per connection to web process.
For that reason, reduce the use of the sharedManager to classes that can only live in WebProcess.
No change of behavior.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::AudioContext):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::clientDataBufferingTimerFired):
(WebCore::MediaElementSession::setHasPlaybackTargetAvailabilityListeners):

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::create):
(WebCore::PlatformMediaSession::PlatformMediaSession):
(WebCore::PlatformMediaSession::~PlatformMediaSession):
(WebCore::PlatformMediaSession::setState):
(WebCore::PlatformMediaSession::clientWillBeginPlayback):
(WebCore::PlatformMediaSession::processClientWillPausePlayback):
(WebCore::PlatformMediaSession::stopSession):
(WebCore::PlatformMediaSession::isPlayingToWirelessPlaybackTargetChanged):
(WebCore::PlatformMediaSession::canProduceAudioChanged):
(WebCore::PlatformMediaSession::clientCharacteristicsChanged):
(WebCore::PlatformMediaSession::manager):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.h:
Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r256903 r256904  
     12020-02-18  Youenn Fablet  <youenn@apple.com>
     2
     3        Reduce use of PlatformMediaSessionManager::sharedManager()
     4        https://bugs.webkit.org/show_bug.cgi?id=207924
     5
     6        Reviewed by Eric Carlson.
     7
     8        The plan is to be able to have PlatformMediaSession in GPU process which might have different managers,
     9        typically a manager per connection to web process.
     10        For that reason, reduce the use of the sharedManager to classes that can only live in WebProcess.
     11        No change of behavior.
     12
     13        * Modules/mediastream/MediaStreamTrack.cpp:
     14        (WebCore::MediaStreamTrack::MediaStreamTrack):
     15        * Modules/webaudio/AudioContext.cpp:
     16        (WebCore::AudioContext::AudioContext):
     17        * html/MediaElementSession.cpp:
     18        (WebCore::MediaElementSession::MediaElementSession):
     19        (WebCore::MediaElementSession::clientDataBufferingTimerFired):
     20        (WebCore::MediaElementSession::setHasPlaybackTargetAvailabilityListeners):
     21        * platform/audio/PlatformMediaSession.cpp:
     22        (WebCore::PlatformMediaSession::create):
     23        (WebCore::PlatformMediaSession::PlatformMediaSession):
     24        (WebCore::PlatformMediaSession::~PlatformMediaSession):
     25        (WebCore::PlatformMediaSession::setState):
     26        (WebCore::PlatformMediaSession::clientWillBeginPlayback):
     27        (WebCore::PlatformMediaSession::processClientWillPausePlayback):
     28        (WebCore::PlatformMediaSession::stopSession):
     29        (WebCore::PlatformMediaSession::isPlayingToWirelessPlaybackTargetChanged):
     30        (WebCore::PlatformMediaSession::canProduceAudioChanged):
     31        (WebCore::PlatformMediaSession::clientCharacteristicsChanged):
     32        (WebCore::PlatformMediaSession::manager):
     33        * platform/audio/PlatformMediaSession.h:
     34        * platform/audio/PlatformMediaSessionManager.h:
     35
    1362020-02-18  Wenson Hsieh  <wenson_hsieh@apple.com>
    237
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r256901 r256904  
    4646#include "OverconstrainedError.h"
    4747#include "Page.h"
     48#include "PlatformMediaSessionManager.h"
    4849#include "RealtimeMediaSourceCenter.h"
    4950#include "ScriptExecutionContext.h"
     
    7576    , m_private(WTFMove(privateTrack))
    7677    , m_isCaptureTrack(m_private->isCaptureTrack())
    77     , m_mediaSession(PlatformMediaSession::create(*this))
     78    , m_mediaSession(PlatformMediaSession::create(PlatformMediaSessionManager::sharedManager(), *this))
    7879{
    7980    ALWAYS_LOG(LOGIDENTIFIER);
  • trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp

    r256901 r256904  
    6464#include "PannerNode.h"
    6565#include "PeriodicWave.h"
     66#include "PlatformMediaSessionManager.h"
    6667#include "ScriptController.h"
    6768#include "ScriptProcessorNode.h"
     
    140141    , m_logIdentifier(uniqueLogIdentifier())
    141142#endif
    142     , m_mediaSession(PlatformMediaSession::create(*this))
     143    , m_mediaSession(PlatformMediaSession::create(PlatformMediaSessionManager::sharedManager(), *this))
    143144    , m_eventQueue(MainThreadGenericEventQueue::create(*this))
    144145{
     
    166167#endif
    167168    , m_isOfflineContext(true)
    168     , m_mediaSession(PlatformMediaSession::create(*this))
     169    , m_mediaSession(PlatformMediaSession::create(PlatformMediaSessionManager::sharedManager(), *this))
    169170    , m_eventQueue(MainThreadGenericEventQueue::create(*this))
    170171    , m_renderTarget(renderTarget)
  • trunk/Source/WebCore/html/MediaElementSession.cpp

    r253397 r256904  
    106106
    107107MediaElementSession::MediaElementSession(HTMLMediaElement& element)
    108     : PlatformMediaSession(element)
     108    : PlatformMediaSession(PlatformMediaSessionManager::sharedManager(), element)
    109109    , m_element(element)
    110110    , m_restrictions(NoRestrictions)
    111111#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    112112    , m_targetAvailabilityChangedTimer(*this, &MediaElementSession::targetAvailabilityChangedTimerFired)
    113     , m_hasPlaybackTargets(PlatformMediaSessionManager::sharedManager().hasWirelessTargetsAvailable())
     113    , m_hasPlaybackTargets(manager().hasWirelessTargetsAvailable())
    114114#endif
    115115    , m_mainContentCheckTimer(*this, &MediaElementSession::mainContentCheckTimerFired)
     
    202202
    203203#if PLATFORM(IOS_FAMILY)
    204     PlatformMediaSessionManager::sharedManager().configureWireLessTargetMonitoring();
     204    manager().configureWireLessTargetMonitoring();
    205205#endif
    206206
     
    208208        return;
    209209
    210     PlatformMediaSessionManager::SessionRestrictions restrictions = PlatformMediaSessionManager::sharedManager().restrictions(mediaType());
     210    PlatformMediaSessionManager::SessionRestrictions restrictions = manager().restrictions(mediaType());
    211211    if ((restrictions & PlatformMediaSessionManager::BackgroundTabPlaybackRestricted) == PlatformMediaSessionManager::BackgroundTabPlaybackRestricted)
    212212        pauseSession();
     
    637637#if PLATFORM(IOS_FAMILY)
    638638    m_hasPlaybackTargetAvailabilityListeners = hasListeners;
    639     PlatformMediaSessionManager::sharedManager().configureWireLessTargetMonitoring();
     639    manager().configureWireLessTargetMonitoring();
    640640#else
    641641    UNUSED_PARAM(hasListeners);
  • trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp

    r256844 r256904  
    108108#endif
    109109
    110 std::unique_ptr<PlatformMediaSession> PlatformMediaSession::create(PlatformMediaSessionClient& client)
    111 {
    112     return makeUnique<PlatformMediaSession>(client);
    113 }
    114 
    115 PlatformMediaSession::PlatformMediaSession(PlatformMediaSessionClient& client)
    116     : m_client(client)
     110std::unique_ptr<PlatformMediaSession> PlatformMediaSession::create(PlatformMediaSessionManager& manager, PlatformMediaSessionClient& client)
     111{
     112    return std::unique_ptr<PlatformMediaSession>(new PlatformMediaSession(manager, client));
     113}
     114
     115PlatformMediaSession::PlatformMediaSession(PlatformMediaSessionManager& manager, PlatformMediaSessionClient& client)
     116    : m_manager(makeWeakPtr(manager))
     117    , m_client(client)
    117118    , m_state(Idle)
    118119    , m_stateToRestore(Idle)
     
    124125{
    125126    ASSERT(m_client.mediaType() >= None && m_client.mediaType() <= MediaStreamCapturingAudio);
    126     PlatformMediaSessionManager::sharedManager().addSession(*this);
     127    manager.addSession(*this);
    127128}
    128129
    129130PlatformMediaSession::~PlatformMediaSession()
    130131{
    131     PlatformMediaSessionManager::sharedManager().removeSession(*this);
     132    if (m_manager)
     133        m_manager->removeSession(*this);
    132134}
    133135
     
    141143    if (m_state == State::Playing)
    142144        m_hasPlayedSinceLastInterruption = true;
    143     PlatformMediaSessionManager::sharedManager().sessionStateChanged(*this);
     145    m_manager->sessionStateChanged(*this);
    144146}
    145147
     
    215217    INFO_LOG(LOGIDENTIFIER, "state = ", m_state);
    216218
    217     if (!PlatformMediaSessionManager::sharedManager().sessionWillBeginPlayback(*this)) {
     219    if (!m_manager->sessionWillBeginPlayback(*this)) {
    218220        if (state() == Interrupted)
    219221            m_stateToRestore = Playing;
     
    238240   
    239241    setState(Paused);
    240     PlatformMediaSessionManager::sharedManager().sessionWillEndPlayback(*this, shouldDelayCallingUpdateNowPlaying);
     242    m_manager->sessionWillEndPlayback(*this, shouldDelayCallingUpdateNowPlaying);
    241243    return true;
    242244}
     
    262264    INFO_LOG(LOGIDENTIFIER);
    263265    m_client.suspendPlayback();
    264     PlatformMediaSessionManager::sharedManager().removeSession(*this);
     266    m_manager->removeSession(*this);
    265267}
    266268
     
    344346    // if we in the background.
    345347    int interruptionCount = m_interruptionCount;
    346     PlatformMediaSessionManager::sharedManager().sessionIsPlayingToWirelessPlaybackTargetChanged(*this);
     348    m_manager->sessionIsPlayingToWirelessPlaybackTargetChanged(*this);
    347349    m_interruptionCount = interruptionCount;
    348350}
     
    369371void PlatformMediaSession::canProduceAudioChanged()
    370372{
    371     PlatformMediaSessionManager::sharedManager().sessionCanProduceAudioChanged();
     373    m_manager->sessionCanProduceAudioChanged();
    372374}
    373375
     
    396398void PlatformMediaSession::clientCharacteristicsChanged()
    397399{
    398     PlatformMediaSessionManager::sharedManager().clientCharacteristicsChanged(*this);
     400    m_manager->clientCharacteristicsChanged(*this);
    399401}
    400402
     
    407409{
    408410    return m_client.shouldOverridePauseDuringRouteChange();
     411}
     412
     413PlatformMediaSessionManager& PlatformMediaSession::manager()
     414{
     415    return *m_manager;
    409416}
    410417
  • trunk/Source/WebCore/platform/audio/PlatformMediaSession.h

    r256901 r256904  
    4242class MediaPlaybackTarget;
    4343class PlatformMediaSessionClient;
     44class PlatformMediaSessionManager;
    4445enum class DelayCallingUpdateNowPlaying { No, Yes };
    4546
     
    5556    WTF_MAKE_FAST_ALLOCATED;
    5657public:
    57     static std::unique_ptr<PlatformMediaSession> create(PlatformMediaSessionClient&);
    58 
    59     PlatformMediaSession(PlatformMediaSessionClient&);
     58    static std::unique_ptr<PlatformMediaSession> create(PlatformMediaSessionManager&, PlatformMediaSessionClient&);
     59
    6060    virtual ~PlatformMediaSession();
    6161
     
    200200
    201201protected:
     202    PlatformMediaSession(PlatformMediaSessionManager&, PlatformMediaSessionClient&);
    202203    PlatformMediaSessionClient& client() const { return m_client; }
     204
     205    PlatformMediaSessionManager& manager();
    203206
    204207private:
    205208    bool processClientWillPausePlayback(DelayCallingUpdateNowPlaying);
    206209
     210    WeakPtr<PlatformMediaSessionManager> m_manager;
    207211    PlatformMediaSessionClient& m_client;
    208212    State m_state;
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h

    r256844 r256904  
    3535#include <wtf/AggregateLogger.h>
    3636#include <wtf/Vector.h>
     37#include <wtf/WeakPtr.h>
    3738
    3839namespace WebCore {
     
    4849    , private LoggerHelper
    4950#endif
     51    , public CanMakeWeakPtr<PlatformMediaSessionManager>
    5052{
    5153    WTF_MAKE_FAST_ALLOCATED;
Note: See TracChangeset for help on using the changeset viewer.