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

Unified Diff: content/browser/media/android/media_web_contents_observer_android.cc

Issue 1655083002: Enable SurfaceView fullscreen video on Android with WebMediaPlayerImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@avda-sv
Patch Set: cleaned up Created 4 years, 10 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/browser/media/android/media_web_contents_observer_android.cc
diff --git a/content/browser/media/android/media_web_contents_observer_android.cc b/content/browser/media/android/media_web_contents_observer_android.cc
index f5f53b36459d8f185b7164d162338c8414864424..5db78e73b36473893ff6b553d14a86fd99ad8eee 100644
--- a/content/browser/media/android/media_web_contents_observer_android.cc
+++ b/content/browser/media/android/media_web_contents_observer_android.cc
@@ -6,6 +6,7 @@
#include "content/browser/media/android/browser_media_player_manager.h"
#include "content/browser/media/android/browser_media_session_manager.h"
+#include "content/browser/media/android/browser_surface_view_manager.h"
#include "content/browser/media/android/media_session.h"
#include "content/browser/media/android/media_session_controller.h"
#include "content/browser/media/android/media_session_observer.h"
@@ -14,6 +15,7 @@
#include "content/common/media/media_player_delegate_messages.h"
#include "content/common/media/media_player_messages_android.h"
#include "content/common/media/media_session_messages_android.h"
+#include "content/common/media/surface_view_manager_messages_android.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "ipc/ipc_message_macros.h"
@@ -61,6 +63,19 @@ MediaWebContentsObserverAndroid::GetMediaSessionManager(
return manager;
}
+BrowserSurfaceViewManager*
+MediaWebContentsObserverAndroid::GetSurfaceViewManager(
+ RenderFrameHost* render_frame_host) {
+ auto it = surface_view_managers_.find(render_frame_host);
+ if (it != surface_view_managers_.end())
+ return it->second;
+
+ BrowserSurfaceViewManager* manager =
+ new BrowserSurfaceViewManager(render_frame_host);
+ surface_view_managers_.set(render_frame_host, make_scoped_ptr(manager));
+ return manager;
+}
+
bool MediaWebContentsObserverAndroid::RequestPlay(
RenderFrameHost* render_frame_host,
int delegate_id,
@@ -98,6 +113,7 @@ void MediaWebContentsObserverAndroid::RenderFrameDeleted(
// detaching CDMs from media players yet. See http://crbug.com/330324
media_player_managers_.erase(render_frame_host);
media_session_managers_.erase(render_frame_host);
+ surface_view_managers_.erase(render_frame_host);
// TODO(xhwang): Currently MediaWebContentsObserver, BrowserMediaPlayerManager
// and BrowserCdmManager all run on browser UI thread. So this call is okay.
@@ -129,6 +145,9 @@ bool MediaWebContentsObserverAndroid::OnMessageReceived(
if (OnMediaSessionMessageReceived(msg, render_frame_host))
return true;
+ if (OnSurfaceViewManagerMessageReceived(msg, render_frame_host))
+ return true;
+
return false;
}
@@ -227,6 +246,22 @@ bool MediaWebContentsObserverAndroid::OnMediaSessionMessageReceived(
return handled;
}
+bool MediaWebContentsObserverAndroid::OnSurfaceViewManagerMessageReceived(
+ const IPC::Message& msg,
+ RenderFrameHost* render_frame_host) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(MediaWebContentsObserverAndroid, msg)
+ IPC_MESSAGE_FORWARD(BrowserSurfaceViewManagerMsg_CreateFullscreenSurface,
+ GetSurfaceViewManager(render_frame_host),
+ BrowserSurfaceViewManager::OnCreateFullscreenSurface)
+ IPC_MESSAGE_FORWARD(BrowserSurfaceViewManagerMsg_FullscreenVideoSizeChanged,
+ GetSurfaceViewManager(render_frame_host),
+ BrowserSurfaceViewManager::OnFullscreenVideoSizeChanged)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
void MediaWebContentsObserverAndroid::OnSetCdm(
RenderFrameHost* render_frame_host,
int player_id,

Powered by Google App Engine
This is Rietveld 408576698