Changeset 188615 in webkit


Ignore:
Timestamp:
Aug 18, 2015 6:04:56 PM (9 years ago)
Author:
mrajca@apple.com
Message:

Media Session: don't begin listening for interruptions when an interruption provider is created
https://bugs.webkit.org/show_bug.cgi?id=148109

Reviewed by Eric Carlson.

If we call beginListeningForInterruption in MediaSessionInterruptionProvider's constructor, the current
class's implementation will get called, not implementations provided by subclasses (this makes sense since base
classes are initialized before derived classes). To fix this, we let clients of
MediaSessionInterruptionProvider start listening for interruptions instead. As a corollary of this, we can make
MediaSessionInterruptionProvider's methods pure virtual.

  • Modules/mediasession/MediaSessionManager.cpp:

(WebCore::MediaSessionManager::MediaSessionManager):

  • platform/mediasession/MediaSessionInterruptionProvider.h:
  • platform/mediasession/MediaSessionInterruptionProvider.cpp:

(WebCore::MediaSessionInterruptionProvider::MediaSessionInterruptionProvider):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r188612 r188615  
     12015-08-17  Matt Rajca  <mrajca@apple.com>
     2
     3        Media Session: don't begin listening for interruptions when an interruption provider is created
     4        https://bugs.webkit.org/show_bug.cgi?id=148109
     5
     6        Reviewed by Eric Carlson.
     7
     8        If we call `beginListeningForInterruption` in MediaSessionInterruptionProvider's constructor, the current
     9        class's implementation will get called, not implementations provided by subclasses (this makes sense since base
     10        classes are initialized before derived classes). To fix this, we let clients of
     11        MediaSessionInterruptionProvider start listening for interruptions instead. As a corollary of this, we can
     12        make MediaSessionInterruptionProvider's methods pure virtual.
     13
     14        * Modules/mediasession/MediaSessionManager.cpp:
     15        (WebCore::MediaSessionManager::MediaSessionManager):
     16        * platform/mediasession/MediaSessionInterruptionProvider.h:
     17        * platform/mediasession/MediaSessionInterruptionProvider.cpp:
     18        (WebCore::MediaSessionInterruptionProvider::MediaSessionInterruptionProvider):
     19
    1202015-08-18  Eric Carlson  <eric.carlson@apple.com>
    221
  • trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.cpp

    r187006 r188615  
    4646#if PLATFORM(MAC)
    4747    m_interruptionProvider = adoptRef(new MediaSessionInterruptionProviderMac(*this));
     48    m_interruptionProvider->beginListeningForInterruptions();
    4849#endif
    4950}
  • trunk/Source/WebCore/platform/mediasession/MediaSessionInterruptionProvider.cpp

    r186917 r188615  
    3434    : m_client(&client)
    3535{
    36     beginListeningForInterruptions();
    3736}
    3837
    3938MediaSessionInterruptionProvider::~MediaSessionInterruptionProvider()
    4039{
    41     stopListeningForInterruptions();
    42 }
    43 
    44 void MediaSessionInterruptionProvider::beginListeningForInterruptions()
    45 {
    46     ASSERT_NOT_REACHED();
    47 }
    48 
    49 void MediaSessionInterruptionProvider::stopListeningForInterruptions()
    50 {
    51     ASSERT_NOT_REACHED();
    5240}
    5341
  • trunk/Source/WebCore/platform/mediasession/MediaSessionInterruptionProvider.h

    r186917 r188615  
    5454
    5555    // To be overriden by subclasses.
    56     virtual void beginListeningForInterruptions();
    57     virtual void stopListeningForInterruptions();
     56    virtual void beginListeningForInterruptions() = 0;
     57    virtual void stopListeningForInterruptions() = 0;
    5858
    5959    MediaSessionInterruptionProviderClient& client() const { return *m_client; }
Note: See TracChangeset for help on using the changeset viewer.