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

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

Issue 2426653002: Adding mojo MediaSessionClient to support media controls (Closed)
Patch Set: Still rough, depends on "blink media controls" CL Created 4 years, 2 months 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/MediaSession.cpp
diff --git a/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp b/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
index 2c909379aa49f3c1ed6526496fea06ee59cebce0..6c91cf55f22318676b917bdc4e348936726df6a4 100644
--- a/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
+++ b/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
@@ -7,6 +7,7 @@
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/Document.h"
#include "core/dom/ExecutionContext.h"
+#include "core/events/Event.h"
#include "core/frame/LocalFrame.h"
#include "modules/EventTargetModules.h"
#include "modules/mediasession/MediaMetadata.h"
@@ -17,7 +18,7 @@
namespace blink {
MediaSession::MediaSession(ScriptState* scriptState)
- : m_scriptState(scriptState) {}
+ : m_scriptState(scriptState), m_clientBinding(this) {}
MediaSession* MediaSession::create(ScriptState* scriptState) {
return new MediaSession(scriptState);
@@ -55,18 +56,23 @@ mojom::blink::MediaSessionService* MediaSession::getService(
if (interfaceProvider)
interfaceProvider->getInterface(mojo::GetProxy(&m_service));
+
+ m_service->SetClient(m_clientBinding.CreateInterfacePtrAndBind());
}
return m_service.get();
}
-// TODO(zqzhang): register listener to MediaSessionService. See
-// https://crbug.com/xxxxxx
-#define DEFINE_MEDIA_SESSION_ATTRIBUTE_EVENT_LISTENER(attribute) \
- EventListener* MediaSession::on##attribute() { \
- return getAttributeEventListener(EventTypeNames::attribute); \
- } \
- void MediaSession::setOn##attribute(EventListener* listener) { \
- setAttributeEventListener(EventTypeNames::attribute, listener); \
+#define DEFINE_MEDIA_SESSION_ATTRIBUTE_EVENT_LISTENER(attribute) \
+ EventListener* MediaSession::on##attribute() { \
+ return getAttributeEventListener(EventTypeNames::attribute); \
+ } \
+ void MediaSession::setOn##attribute(EventListener* listener) { \
+ setAttributeEventListener(EventTypeNames::attribute, listener); \
+ if (mojom::blink::MediaSessionService* service = \
+ getService(m_scriptState.get())) { \
+ service->DidSetEventHandlerForAction(EventTypeNames::attribute, \
+ static_cast<bool>(listener)); \
+ } \
}
DEFINE_MEDIA_SESSION_ATTRIBUTE_EVENT_LISTENER(play);
@@ -77,6 +83,11 @@ DEFINE_MEDIA_SESSION_ATTRIBUTE_EVENT_LISTENER(nexttrack);
DEFINE_MEDIA_SESSION_ATTRIBUTE_EVENT_LISTENER(seekforward);
DEFINE_MEDIA_SESSION_ATTRIBUTE_EVENT_LISTENER(seekbackward);
+void MediaSession::DidReceivedAction(const WTF::String& action) {
+ StringView view(action);
+ dispatchEvent(Event::create(view.toAtomicString()));
+}
+
DEFINE_TRACE(MediaSession) {
visitor->trace(m_metadata);
EventTargetWithInlineData::trace(visitor);

Powered by Google App Engine
This is Rietveld 408576698