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