| Index: content/browser/media/media_web_contents_observer.cc
|
| diff --git a/content/browser/media/media_web_contents_observer.cc b/content/browser/media/media_web_contents_observer.cc
|
| index 14251a7c6f5daf223744b61bbe41cf6c2c27e9ae..ccf3c88d1c889837524c58fc97cb69ef4827ee26 100644
|
| --- a/content/browser/media/media_web_contents_observer.cc
|
| +++ b/content/browser/media/media_web_contents_observer.cc
|
| @@ -35,6 +35,10 @@ MediaWebContentsObserver::~MediaWebContentsObserver() {}
|
|
|
| void MediaWebContentsObserver::WebContentsDestroyed() {
|
| g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false);
|
| +#if defined(OS_ANDROID)
|
| + if (view_weak_factory_)
|
| + view_weak_factory_->InvalidateWeakPtrs();
|
| +#endif
|
| }
|
|
|
| void MediaWebContentsObserver::RenderFrameDeleted(
|
| @@ -193,8 +197,12 @@ void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() {
|
| PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep,
|
| PowerSaveBlocker::kReasonVideoPlayback, "Playing video");
|
| #if defined(OS_ANDROID)
|
| - static_cast<PowerSaveBlockerImpl*>(video_power_save_blocker_.get())
|
| - ->InitDisplaySleepBlocker(web_contents());
|
| + if (web_contents()->GetNativeView()) {
|
| + view_weak_factory_.reset(new base::WeakPtrFactory<ui::ViewAndroid>(
|
| + web_contents()->GetNativeView()));
|
| + static_cast<PowerSaveBlockerImpl*>(video_power_save_blocker_.get())
|
| + ->InitDisplaySleepBlocker(view_weak_factory_->GetWeakPtr());
|
| + }
|
| #endif
|
| }
|
|
|
|
|