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

Unified Diff: content/renderer/media/android/renderer_media_session_manager.cc

Issue 2367393002: Migrating MediaSession messages to mojo (Closed)
Patch Set: fix build Created 4 years, 3 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: content/renderer/media/android/renderer_media_session_manager.cc
diff --git a/content/renderer/media/android/renderer_media_session_manager.cc b/content/renderer/media/android/renderer_media_session_manager.cc
index 3d53c5d13416d57d3464c3d393d032642b9743f0..c0cd47908e6547e8e85e5f1ae0cacb70e4449c37 100644
--- a/content/renderer/media/android/renderer_media_session_manager.cc
+++ b/content/renderer/media/android/renderer_media_session_manager.cc
@@ -6,14 +6,44 @@
#include "base/logging.h"
#include "base/optional.h"
+#include "base/strings/utf_string_conversions.h"
#include "content/common/media/media_metadata_sanitizer.h"
-#include "content/common/media/media_session_messages_android.h"
#include "content/public/common/media_metadata.h"
-#include "content/public/renderer/render_thread.h"
+#include "content/public/renderer/render_frame.h"
#include "content/renderer/media/android/webmediasession_android.h"
+#include "services/shell/public/cpp/interface_provider.h"
namespace content {
+namespace {
+
+blink::mojom::MediaMetadataIconPtr ToMojoMediaMetadataIcon(
+ const MediaMetadata::Artwork& icon) {
+ blink::mojom::MediaMetadataIconPtr mojo_icon
+ = blink::mojom::MediaMetadataIcon::New();
+ mojo_icon->src = icon.src;
+ mojo_icon->type = icon.type;
+ mojo_icon->sizes = icon.sizes;
+
+ return mojo_icon;
+}
+
+blink::mojom::MediaMetadataPtr ToMojoMediaMetadata(
+ const base::Optional<MediaMetadata>& metadata) {
+ blink::mojom::MediaMetadataPtr mojo_metadata;
+ if (!metadata.has_value())
+ return mojo_metadata;
+ mojo_metadata = blink::mojom::MediaMetadata::New();
+ mojo_metadata->title = metadata->title;
+ mojo_metadata->artist = metadata->artist;
+ mojo_metadata->album = metadata->album;
+ for (const auto& icon : metadata->artwork)
+ mojo_metadata->artwork.push_back(ToMojoMediaMetadataIcon(icon));
+ return mojo_metadata;
+}
+
+} // anonymous namespace
+
RendererMediaSessionManager::RendererMediaSessionManager(
RenderFrame* render_frame)
: RenderFrameObserver(render_frame),
@@ -25,16 +55,6 @@ RendererMediaSessionManager::~RendererMediaSessionManager() {
"destroyed only after all media sessions are destroyed.";
}
-bool RendererMediaSessionManager::OnMessageReceived(const IPC::Message& msg) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(RendererMediaSessionManager, msg)
- IPC_MESSAGE_HANDLER(MediaSessionMsg_DidActivate, OnDidActivate)
- IPC_MESSAGE_HANDLER(MediaSessionMsg_DidDeactivate, OnDidDeactivate)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
void RendererMediaSessionManager::OnDestruct() {
delete this;
}
@@ -52,48 +72,63 @@ void RendererMediaSessionManager::UnregisterMediaSession(int session_id) {
void RendererMediaSessionManager::Activate(
int session_id,
std::unique_ptr<blink::WebMediaSessionActivateCallback> callback) {
- int request_id = pending_activation_requests_.Add(callback.release());
- Send(new MediaSessionHostMsg_Activate(routing_id(), session_id, request_id));
+ if (GetMediaSessionService()) {
+ GetMediaSessionService()->Activate(
+ session_id,
+ base::Bind(&RendererMediaSessionManager::OnDidActivate,
+ base::Unretained(this), base::Passed(&callback)));
+ }
}
void RendererMediaSessionManager::Deactivate(
int session_id,
std::unique_ptr<blink::WebMediaSessionDeactivateCallback> callback) {
- int request_id = pending_deactivation_requests_.Add(callback.release());
- Send(
- new MediaSessionHostMsg_Deactivate(routing_id(), session_id, request_id));
+ if (GetMediaSessionService()) {
+ GetMediaSessionService()->Deactivate(
+ session_id,
+ base::Bind(&RendererMediaSessionManager::OnDidDeactivate,
+ base::Unretained(this), base::Passed(&callback)));
+ }
}
void RendererMediaSessionManager::SetMetadata(
int session_id, const base::Optional<MediaMetadata>& metadata) {
-
- // TODO(zqzhang): print a console warning when metadata is dirty. See
- // https://crbug.com/625244.
- Send(new MediaSessionHostMsg_SetMetadata(
- routing_id(), session_id,
+ base::Optional<MediaMetadata> sanitized_metadata =
(!metadata.has_value() ||
MediaMetadataSanitizer::CheckSanity(metadata.value()))
? metadata
- : MediaMetadataSanitizer::Sanitize(metadata.value())));
+ : MediaMetadataSanitizer::Sanitize(metadata.value());
+ // TODO(zqzhang): print a console warning when metadata is dirty. See
+ // https://crbug.com/625244.
+ if (GetMediaSessionService()) {
+ GetMediaSessionService()->SetMetadata(
+ session_id, ToMojoMediaMetadata(sanitized_metadata));
mlamouri (slow - plz ping) 2016/09/27 08:33:11 Could this call and the other mojo calls happen fr
+ }
}
-void RendererMediaSessionManager::OnDidActivate(int request_id, bool success) {
- DCHECK(pending_activation_requests_.Lookup(request_id)) << request_id;
- blink::WebMediaSessionActivateCallback* callback =
- pending_activation_requests_.Lookup(request_id);
+blink::mojom::MediaSessionServicePtr&
+RendererMediaSessionManager::GetMediaSessionService() {
+ if (render_frame() && !media_session_service_.get()) {
+ render_frame()->GetRemoteInterfaces()
+ ->GetInterface(&media_session_service_);
+ }
+ return media_session_service_;
+}
+
+void RendererMediaSessionManager::OnDidActivate(
+ std::unique_ptr<blink::WebMediaSessionActivateCallback> callback,
+ bool success) {
if (success) {
callback->onSuccess();
} else {
callback->onError(
blink::WebMediaSessionError(blink::WebMediaSessionError::Activate));
}
- pending_activation_requests_.Remove(request_id);
}
-void RendererMediaSessionManager::OnDidDeactivate(int request_id) {
- DCHECK(pending_deactivation_requests_.Lookup(request_id)) << request_id;
- pending_deactivation_requests_.Lookup(request_id)->onSuccess();
- pending_deactivation_requests_.Remove(request_id);
+void RendererMediaSessionManager::OnDidDeactivate(
+ std::unique_ptr<blink::WebMediaSessionDeactivateCallback> callback) {
+ callback->onSuccess();
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698