Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index f37da15b1152ff40856cfe74aec26c7026c2a298..b8cf2111f18d7a331a40508a4156f3e79822dab7 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -188,6 +188,7 @@ |
#if defined(OS_ANDROID) |
#include "webkit/media/android/webmediaplayer_android.h" |
+#include "webkit/media/android/webmediaplayer_manager_android.h" |
#elif defined(OS_WIN) |
// TODO(port): these files are currently Windows only because they concern: |
// * theming |
@@ -611,6 +612,11 @@ RenderViewImpl::RenderViewImpl( |
new TextInputClientObserver(this); |
#endif // defined(OS_MACOSX) |
+#if defined(OS_ANDROID) |
+ media_player_manager_.reset( |
+ new webkit_media::WebMediaPlayerManagerAndroid()); |
+#endif |
+ |
// The next group of objects all implement RenderViewObserver, so are deleted |
// along with the RenderView automatically. |
devtools_agent_ = new DevToolsAgent(this); |
@@ -2302,8 +2308,10 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer( |
RenderViewObserver, observers_, WillCreateMediaPlayer(frame, client)); |
#if defined(OS_ANDROID) |
+ // TODO(qinmin): upstream the implementation of StreamTextureFactoryImpl |
+ // to replace the NULL param here. |
return new webkit_media::WebMediaPlayerAndroid( |
- client, cookieJar(frame)); |
+ frame, client, cookieJar(frame), media_player_manager_.get(), NULL); |
#endif |
media::MessageLoopFactory* message_loop_factory = |
@@ -5040,6 +5048,11 @@ void RenderViewImpl::DidHandleTouchEvent(const WebTouchEvent& event) { |
void RenderViewImpl::OnWasHidden() { |
RenderWidget::OnWasHidden(); |
+#if defined(OS_ANDROID) |
+ // Inform WebMediaPlayerManagerAndroid to release all media player resources. |
+ media_player_manager_->ReleaseMediaResources(); |
+#endif |
+ |
if (webview()) { |
webview()->settings()->setMinimumTimerInterval( |
webkit_glue::kBackgroundTabTimerInterval); |