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

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

Issue 2367393002: Migrating MediaSession messages to mojo (Closed)
Patch Set: fixed layout tests 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 858b93f1a23fbe2730bb5746a4b99f68787859a7..9396d06843e9e67f71baaef9ee3d97071b653a36 100644
--- a/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
+++ b/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
@@ -4,70 +4,50 @@
#include "modules/mediasession/MediaSession.h"
-#include "bindings/core/v8/CallbackPromiseAdapter.h"
-#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
-#include "core/dom/DOMException.h"
-#include "core/dom/ExceptionCode.h"
-#include "core/frame/LocalDOMWindow.h"
+#include "core/dom/Document.h"
+#include "core/dom/ExecutionContext.h"
#include "core/frame/LocalFrame.h"
-#include "core/loader/FrameLoaderClient.h"
#include "modules/mediasession/MediaMetadata.h"
-#include "modules/mediasession/MediaSessionError.h"
+#include "modules/mediasession/MediaMetadataSanitizer.h"
+#include "public/platform/InterfaceProvider.h"
#include <memory>
namespace blink {
-MediaSession::MediaSession(std::unique_ptr<WebMediaSession> webMediaSession)
- : m_webMediaSession(std::move(webMediaSession)) {
- DCHECK(m_webMediaSession);
-}
+MediaSession::MediaSession() = default;
-MediaSession* MediaSession::create(ExecutionContext* context,
- ExceptionState& exceptionState) {
- Document* document = toDocument(context);
- LocalFrame* frame = document->frame();
- FrameLoaderClient* client = frame->loader().client();
- std::unique_ptr<WebMediaSession> webMediaSession =
- client->createWebMediaSession();
- if (!webMediaSession) {
- exceptionState.throwDOMException(NotSupportedError,
- "Missing platform implementation.");
- return nullptr;
- }
- return new MediaSession(std::move(webMediaSession));
+MediaSession* MediaSession::create() {
+ return new MediaSession();
}
-ScriptPromise MediaSession::activate(ScriptState* scriptState) {
- ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
- ScriptPromise promise = resolver->promise();
-
- m_webMediaSession->activate(
- new CallbackPromiseAdapter<void, MediaSessionError>(resolver));
- return promise;
+void MediaSession::setMetadata(ScriptState* scriptState,
+ MediaMetadata* metadata) {
+ if (getService(scriptState)) {
+ getService(scriptState)
+ ->SetMetadata(
+ MediaMetadataSanitizer::sanitizeAndConvertToMojo(metadata));
+ }
}
-ScriptPromise MediaSession::deactivate(ScriptState* scriptState) {
- ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
- ScriptPromise promise = resolver->promise();
-
- m_webMediaSession->deactivate(
- new CallbackPromiseAdapter<void, void>(resolver));
- return promise;
+MediaMetadata* MediaSession::metadata(ScriptState*) const {
+ return m_metadata;
}
-void MediaSession::setMetadata(MediaMetadata* metadata) {
- m_metadata = metadata;
- if (metadata) {
- WebMediaMetadata webMetadata = (WebMediaMetadata)*metadata;
- m_webMediaSession->setMetadata(&webMetadata);
- } else {
- m_webMediaSession->setMetadata(nullptr);
+mojom::blink::MediaSessionService* MediaSession::getService(
+ ScriptState* scriptState) {
+ if (!m_service) {
+ InterfaceProvider* interfaceProvider = nullptr;
+ DCHECK(scriptState->getExecutionContext()->isDocument())
+ << "MediaSession::getService() is only available from a frame";
+ Document* document = toDocument(scriptState->getExecutionContext());
+ if (document->frame())
+ interfaceProvider = document->frame()->interfaceProvider();
+
+ if (interfaceProvider)
+ interfaceProvider->getInterface(mojo::GetProxy(&m_service));
}
-}
-
-MediaMetadata* MediaSession::metadata() const {
- return m_metadata;
+ return m_service.get();
}
DEFINE_TRACE(MediaSession) {

Powered by Google App Engine
This is Rietveld 408576698