Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(592)

Unified Diff: third_party/WebKit/Source/modules/mediasession/MediaMetadata.cpp

Issue 2584703002: Media Session API: make MediaMetadata mutable. (Closed)
Patch Set: review comments and tests Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/mediasession/MediaMetadata.cpp
diff --git a/third_party/WebKit/Source/modules/mediasession/MediaMetadata.cpp b/third_party/WebKit/Source/modules/mediasession/MediaMetadata.cpp
index 3915d544a905fd5a5d69bfcdb07da07f3e00c6c8..a3b93e1c3c2ce2c85782cb27ec1e0b50e8c7d27a 100644
--- a/third_party/WebKit/Source/modules/mediasession/MediaMetadata.cpp
+++ b/third_party/WebKit/Source/modules/mediasession/MediaMetadata.cpp
@@ -7,6 +7,7 @@
#include "core/dom/ExecutionContext.h"
#include "modules/mediasession/MediaImage.h"
#include "modules/mediasession/MediaMetadataInit.h"
+#include "modules/mediasession/MediaSession.h"
namespace blink {
@@ -17,7 +18,8 @@ MediaMetadata* MediaMetadata::create(ExecutionContext* context,
}
MediaMetadata::MediaMetadata(ExecutionContext* context,
- const MediaMetadataInit& metadata) {
+ const MediaMetadataInit& metadata)
+ : m_notifySessionTimer(this, &MediaMetadata::notifySessionTimerFired) {
m_title = metadata.title();
m_artist = metadata.artist();
m_album = metadata.album();
@@ -41,8 +43,45 @@ const HeapVector<Member<MediaImage>>& MediaMetadata::artwork() const {
return m_artwork;
}
+void MediaMetadata::setTitle(const String& title) {
+ m_title = title;
+ notifySessionAsync();
+}
+
+void MediaMetadata::setArtist(const String& artist) {
+ m_artist = artist;
+ notifySessionAsync();
+}
+
+void MediaMetadata::setAlbum(const String& album) {
+ m_album = album;
+ notifySessionAsync();
+}
+
+void MediaMetadata::setArtwork(const HeapVector<Member<MediaImage>>& artwork) {
+ m_artwork = artwork;
+ notifySessionAsync();
+}
+
+void MediaMetadata::setSession(MediaSession* session) {
+ m_session = session;
+}
+
+void MediaMetadata::notifySessionAsync() {
+ if (!m_session || m_notifySessionTimer.isActive())
+ return;
+ m_notifySessionTimer.startOneShot(0, BLINK_FROM_HERE);
+}
+
+void MediaMetadata::notifySessionTimerFired(TimerBase*) {
+ if (!m_session)
+ return;
+ m_session->onMetadataChanged();
+}
+
DEFINE_TRACE(MediaMetadata) {
visitor->trace(m_artwork);
+ visitor->trace(m_session);
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698