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)
#endif
#if defined(ENABLE_BROWSER_CDMS)
cdm_manager_(NULL),
#endif
#if defined(VIDEO_HOLE)
contains_media_player_(false),
#endif
geolocation_dispatcher_(NULL),
push_messaging_dispatcher_(NULL),
......@@ -431,8 +434,8 @@ RenderFrameImpl::~RenderFrameImpl() {
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone());
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct());
#if defined(OS_ANDROID) && defined(VIDEO_HOLE)
if (media_player_manager_)
#if defined(VIDEO_HOLE)
if (contains_media_player_)
render_view_->UnregisterVideoHoleFrame(this);
#endif
......@@ -1374,6 +1377,13 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
blink::WebLocalFrame* frame,
const blink::WebURL& url,
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::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url));
if (!web_stream.isNull())
......@@ -3560,12 +3570,8 @@ WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer(
}
RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() {
if (!media_player_manager_) {
if (!media_player_manager_)
media_player_manager_ = new RendererMediaPlayerManager(this);
#if defined(VIDEO_HOLE)
render_view_->RegisterVideoHoleFrame(this);
#endif // defined(VIDEO_HOLE)
}
return media_player_manager_;
}
......
......@@ -638,6 +638,12 @@ class CONTENT_EXPORT RenderFrameImpl
RendererCdmManager* cdm_manager_;
#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.
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