Title: [186064] trunk/Source/WebCore
Revision
186064
Author
[email protected]
Date
2015-06-28 22:29:04 -0700 (Sun, 28 Jun 2015)

Log Message

Add support for 'Default' media session types
https://bugs.webkit.org/show_bug.cgi?id=146355

Reviewed by Darin Adler.

* Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::MediaSession): Added a new constructor for creating 'Default' media sessions.
(WebCore::MediaSession::kind): 'Default' media sessions are represented by an empty string.
* Modules/mediasession/MediaSession.h:
* dom/Document.cpp:
(WebCore::Document::defaultMediaSession): Lazily construct the default media session.
* dom/Document.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement): New media elements are assigned to the 'Default' media session.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (186063 => 186064)


--- trunk/Source/WebCore/ChangeLog	2015-06-29 05:05:37 UTC (rev 186063)
+++ trunk/Source/WebCore/ChangeLog	2015-06-29 05:29:04 UTC (rev 186064)
@@ -1,3 +1,20 @@
+2015-06-26  Matt Rajca  <[email protected]>
+
+        Add support for 'Default' media session types
+        https://bugs.webkit.org/show_bug.cgi?id=146355
+
+        Reviewed by Darin Adler.
+
+        * Modules/mediasession/MediaSession.cpp:
+        (WebCore::MediaSession::MediaSession): Added a new constructor for creating 'Default' media sessions.
+        (WebCore::MediaSession::kind): 'Default' media sessions are represented by an empty string.
+        * Modules/mediasession/MediaSession.h:
+        * dom/Document.cpp:
+        (WebCore::Document::defaultMediaSession): Lazily construct the default media session.
+        * dom/Document.h:
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::HTMLMediaElement): New media elements are assigned to the 'Default' media session.
+
 2015-06-28  Andreas Kling  <[email protected]>
 
         [iOS] Drop buffered data in paused media elements on memory pressure.

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp (186063 => 186064)


--- trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp	2015-06-29 05:05:37 UTC (rev 186063)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp	2015-06-29 05:29:04 UTC (rev 186064)
@@ -37,6 +37,7 @@
 
 namespace WebCore {
 
+static const char* defaultKind = "";
 static const char* ambientKind = "ambient";
 static const char* transientKind = "transient";
 static const char* transientSoloKind = "transient-solo";
@@ -56,6 +57,12 @@
     return MediaSession::Kind::Content;
 }
 
+MediaSession::MediaSession(Document& document)
+    : m_document(document)
+{
+    MediaSessionManager::singleton().addMediaSession(*this);
+}
+
 MediaSession::MediaSession(ScriptExecutionContext& context, const String& kind)
     : m_document(downcast<Document>(context))
     , m_kind(parseKind(kind))
@@ -77,6 +84,8 @@
 String MediaSession::kind() const
 {
     switch (m_kind) {
+    case MediaSession::Kind::Default:
+        return defaultKind;
     case MediaSession::Kind::Ambient:
         return ambientKind;
     case MediaSession::Kind::Transient:

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSession.h (186063 => 186064)


--- trunk/Source/WebCore/Modules/mediasession/MediaSession.h	2015-06-29 05:05:37 UTC (rev 186063)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSession.h	2015-06-29 05:29:04 UTC (rev 186064)
@@ -50,6 +50,7 @@
         return adoptRef(*new MediaSession(context, kind));
     }
 
+    explicit MediaSession(Document&);
     MediaSession(ScriptExecutionContext&, const String&);
     ~MediaSession();
 
@@ -73,6 +74,7 @@
     friend class HTMLMediaElement;
 
     enum class Kind {
+        Default,
         Content,
         Transient,
         TransientSolo,
@@ -94,7 +96,7 @@
     HashSet<HTMLMediaElement*>* m_iteratedActiveParticipatingElements { nullptr };
 
     Document& m_document;
-    const Kind m_kind;
+    const Kind m_kind { Kind::Default };
     RefPtr<MediaRemoteControls> m_controls;
     MediaSessionMetadata m_metadata;
 };

Modified: trunk/Source/WebCore/dom/Document.cpp (186063 => 186064)


--- trunk/Source/WebCore/dom/Document.cpp	2015-06-29 05:05:37 UTC (rev 186063)
+++ trunk/Source/WebCore/dom/Document.cpp	2015-06-29 05:29:04 UTC (rev 186064)
@@ -233,6 +233,10 @@
 #include "MediaPlaybackTargetClient.h"
 #endif
 
+#if ENABLE(MEDIA_SESSION)
+#include "MediaSession.h"
+#endif
+
 using namespace WTF;
 using namespace Unicode;
 
@@ -6650,6 +6654,16 @@
 }
 #endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
 
+#if ENABLE(MEDIA_SESSION)
+MediaSession& Document::defaultMediaSession()
+{
+    if (!m_defaultMediaSession)
+        m_defaultMediaSession = adoptRef(*new MediaSession(*this));
+
+    return *m_defaultMediaSession;
+}
+#endif
+
 ShouldOpenExternalURLsPolicy Document::shouldOpenExternalURLsPolicyToPropagate() const
 {
     if (DocumentLoader* documentLoader = loader())

Modified: trunk/Source/WebCore/dom/Document.h (186063 => 186064)


--- trunk/Source/WebCore/dom/Document.h	2015-06-29 05:05:37 UTC (rev 186063)
+++ trunk/Source/WebCore/dom/Document.h	2015-06-29 05:29:04 UTC (rev 186064)
@@ -222,6 +222,10 @@
 };
 #endif
 
+#if ENABLE(MEDIA_SESSION)
+class MediaSession;
+#endif
+
 enum PageshowEventPersistence {
     PageshowEventNotPersisted = 0,
     PageshowEventPersisted = 1
@@ -980,6 +984,10 @@
     void unregisterForMediaVolumeCallbacks(Element*);
     void mediaVolumeDidChange();
 
+#if ENABLE(MEDIA_SESSION)
+    MediaSession& defaultMediaSession();
+#endif
+
     void registerForPrivateBrowsingStateChangedCallbacks(Element*);
     void unregisterForPrivateBrowsingStateChangedCallbacks(Element*);
     void storageBlockingStateDidChange();
@@ -1706,6 +1714,10 @@
     typedef HashMap<WebCore::MediaPlaybackTargetClient*, uint64_t> TargetClientToIdMap;
     TargetClientToIdMap m_clientToIDMap;
 #endif
+
+#if ENABLE(MEDIA_SESSION)
+    RefPtr<MediaSession> m_defaultMediaSession;
+#endif
 };
 
 inline void Document::notifyRemovePendingSheetIfNeeded()

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (186063 => 186064)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2015-06-29 05:05:37 UTC (rev 186063)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2015-06-29 05:29:04 UTC (rev 186064)
@@ -409,6 +409,10 @@
         m_captionDisplayMode = document.page()->group().captionPreferences()->captionDisplayMode();
 #endif
 
+#if ENABLE(MEDIA_SESSION)
+    m_session = &document.defaultMediaSession();
+#endif
+
     registerWithDocument(document);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to