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

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: Created 4 years, 11 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 224a8f123a4dbc6186071a538f6707598d4e3990..472101c246cd3cd0f4a102639194e49ec4ac8cea 100644
--- a/content/browser/media/android/media_web_contents_observer_android.cc
+++ b/content/browser/media/android/media_web_contents_observer_android.cc
@@ -6,11 +6,13 @@
#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_observer.h"
#include "content/browser/media/cdm/browser_cdm_manager.h"
#include "content/browser/web_contents/web_contents_impl.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"
@@ -58,6 +60,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;
+}
+
#if defined(VIDEO_HOLE)
void MediaWebContentsObserverAndroid::OnFrameInfoUpdated() {
for (auto it = media_player_managers_.begin();
@@ -75,6 +90,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.
@@ -102,6 +118,9 @@ bool MediaWebContentsObserverAndroid::OnMessageReceived(
if (OnMediaSessionMessageReceived(msg, render_frame_host))
return true;
+ if (OnSurfaceViewManagerMessageReceived(msg, render_frame_host))
+ return true;
+
return false;
}
@@ -187,6 +206,19 @@ 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_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