Commit a6e21c37 authored by gunsch@chromium.org's avatar gunsch@chromium.org

Ties RenderFrameImpl VIDEO_HOLE observer to lifetime of RenderWidget.

This allows using the VIDEO_HOLE outside of Android.

R=xhwang,damienv1
BUG=392993

Review URL: https://codereview.chromium.org/375713002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282783 0039d316-1c4b-4281-b951-d872f2087c98
parent c1277862
...@@ -405,6 +405,9 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) ...@@ -405,6 +405,9 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id)
#endif #endif
#if defined(ENABLE_BROWSER_CDMS) #if defined(ENABLE_BROWSER_CDMS)
cdm_manager_(NULL), cdm_manager_(NULL),
#endif
#if defined(VIDEO_HOLE)
contains_media_player_(false),
#endif #endif
geolocation_dispatcher_(NULL), geolocation_dispatcher_(NULL),
push_messaging_dispatcher_(NULL), push_messaging_dispatcher_(NULL),
...@@ -431,8 +434,8 @@ RenderFrameImpl::~RenderFrameImpl() { ...@@ -431,8 +434,8 @@ RenderFrameImpl::~RenderFrameImpl() {
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone());
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct());
#if defined(OS_ANDROID) && defined(VIDEO_HOLE) #if defined(VIDEO_HOLE)
if (media_player_manager_) if (contains_media_player_)
render_view_->UnregisterVideoHoleFrame(this); render_view_->UnregisterVideoHoleFrame(this);
#endif #endif
...@@ -1374,6 +1377,13 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( ...@@ -1374,6 +1377,13 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
blink::WebLocalFrame* frame, blink::WebLocalFrame* frame,
const blink::WebURL& url, const blink::WebURL& url,
blink::WebMediaPlayerClient* client) { blink::WebMediaPlayerClient* client) {
#if defined(VIDEO_HOLE)
if (!contains_media_player_) {
render_view_->RegisterVideoHoleFrame(this);
contains_media_player_ = true;
}
#endif // defined(VIDEO_HOLE)
blink::WebMediaStream web_stream( blink::WebMediaStream web_stream(
blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url));
if (!web_stream.isNull()) if (!web_stream.isNull())
...@@ -3560,12 +3570,8 @@ WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( ...@@ -3560,12 +3570,8 @@ WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer(
} }
RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() {
if (!media_player_manager_) { if (!media_player_manager_)
media_player_manager_ = new RendererMediaPlayerManager(this); media_player_manager_ = new RendererMediaPlayerManager(this);
#if defined(VIDEO_HOLE)
render_view_->RegisterVideoHoleFrame(this);
#endif // defined(VIDEO_HOLE)
}
return media_player_manager_; return media_player_manager_;
} }
......
...@@ -638,6 +638,12 @@ class CONTENT_EXPORT RenderFrameImpl ...@@ -638,6 +638,12 @@ class CONTENT_EXPORT RenderFrameImpl
RendererCdmManager* cdm_manager_; RendererCdmManager* cdm_manager_;
#endif #endif
#if defined(VIDEO_HOLE)
// Whether or not this RenderFrameImpl contains a media player. Used to
// register as an observer for video-hole-specific events.
bool contains_media_player_;
#endif
// The geolocation dispatcher attached to this frame, lazily initialized. // The geolocation dispatcher attached to this frame, lazily initialized.
GeolocationDispatcher* geolocation_dispatcher_; GeolocationDispatcher* geolocation_dispatcher_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment