Title: [185394] trunk/Source/WebCore
Revision
185394
Author
[email protected]
Date
2015-06-09 17:43:05 -0700 (Tue, 09 Jun 2015)

Log Message

Add support for toggling playback in MediaSessions and MediaSessionManagers.
https://bugs.webkit.org/show_bug.cgi?id=145822

Patch by Matt Rajca <[email protected]> on 2015-06-09
Reviewed by Eric Carlson.

* Modules/mediasession/MediaSession.cpp: Toggle playback of all active media elements.
(WebCore::MediaSession::togglePlayback):
* Modules/mediasession/MediaSession.h:
* Modules/mediasession/MediaSessionManager.cpp: Toggle playback of all media sessions as described in the
  Media Session spec.
(WebCore::MediaSessionManager::togglePlayback):
* Modules/mediasession/MediaSessionManager.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (185393 => 185394)


--- trunk/Source/WebCore/ChangeLog	2015-06-09 23:49:49 UTC (rev 185393)
+++ trunk/Source/WebCore/ChangeLog	2015-06-10 00:43:05 UTC (rev 185394)
@@ -1,3 +1,18 @@
+2015-06-09  Matt Rajca  <[email protected]>
+
+        Add support for toggling playback in MediaSessions and MediaSessionManagers.
+        https://bugs.webkit.org/show_bug.cgi?id=145822
+
+        Reviewed by Eric Carlson.
+
+        * Modules/mediasession/MediaSession.cpp: Toggle playback of all active media elements.
+        (WebCore::MediaSession::togglePlayback):
+        * Modules/mediasession/MediaSession.h:
+        * Modules/mediasession/MediaSessionManager.cpp: Toggle playback of all media sessions as described in the
+          Media Session spec.
+        (WebCore::MediaSessionManager::togglePlayback):
+        * Modules/mediasession/MediaSessionManager.h:
+
 2015-06-09  Darin Adler  <[email protected]>
 
         Takes two delete key presses to delete pasted emoji up-pointing index finger with skin tone

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp (185393 => 185394)


--- trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp	2015-06-09 23:49:49 UTC (rev 185393)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp	2015-06-10 00:43:05 UTC (rev 185394)
@@ -82,6 +82,16 @@
 {
 }
 
+void MediaSession::togglePlayback()
+{
+    for (auto* element : activeParticipatingElements()) {
+        if (element->paused())
+            element->play();
+        else
+            element->pause();
+    }
 }
 
+}
+
 #endif /* ENABLE(MEDIA_SESSION) */

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSession.h (185393 => 185394)


--- trunk/Source/WebCore/Modules/mediasession/MediaSession.h	2015-06-09 23:49:49 UTC (rev 185393)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSession.h	2015-06-10 00:43:05 UTC (rev 185394)
@@ -36,6 +36,12 @@
 
 class MediaSession final : public RefCounted<MediaSession> {
 public:
+    enum class State {
+        Idle,
+        Active,
+        Interrupted
+    };
+    
     static Ref<MediaSession> create(ScriptExecutionContext& context, const String& kind)
     {
         return adoptRef(*new MediaSession(context, kind));
@@ -46,16 +52,14 @@
 
     String kind() const { return m_kind; }
     MediaRemoteControls* controls(bool& isNull);
+    
+    State currentState() const { return m_currentState; }
 
     void releaseSession();
 
+    void togglePlayback();
+
 private:
-    enum class State {
-        Idle,
-        Active,
-        Interrupted
-    };
-
     friend class HTMLMediaElement;
 
     void addMediaElement(HTMLMediaElement&);

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.cpp (185393 => 185394)


--- trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.cpp	2015-06-09 23:49:49 UTC (rev 185393)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.cpp	2015-06-10 00:43:05 UTC (rev 185394)
@@ -49,6 +49,15 @@
     m_sessions.remove(&session);
 }
 
+void MediaSessionManager::togglePlayback()
+{
+    for (auto* session : m_sessions) {
+        String sessionKind = session->kind();
+        if (session->currentState() == MediaSession::State::Active && (sessionKind == "content" || sessionKind == ""))
+            session->togglePlayback();
+    }
 }
 
+}
+
 #endif /* ENABLE(MEDIA_SESSION) */

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.h (185393 => 185394)


--- trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.h	2015-06-09 23:49:49 UTC (rev 185393)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.h	2015-06-10 00:43:05 UTC (rev 185394)
@@ -38,6 +38,8 @@
 public:
     static MediaSessionManager& singleton();
 
+    void togglePlayback();
+    
 private:
     friend class MediaSession;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to