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

Side by Side Diff: content/browser/media/media_web_contents_observer.cc

Issue 2003803002: Remove dependency of power_save_blocker_android on various content bits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@power-save-task-runners
Patch Set: back to weakptr Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/media/media_web_contents_observer.h" 5 #include "content/browser/media/media_web_contents_observer.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 17 matching lines...) Expand all
28 } // anonymous namespace 28 } // anonymous namespace
29 29
30 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents) 30 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents)
31 : WebContentsObserver(web_contents), 31 : WebContentsObserver(web_contents),
32 session_controllers_manager_(this) {} 32 session_controllers_manager_(this) {}
33 33
34 MediaWebContentsObserver::~MediaWebContentsObserver() {} 34 MediaWebContentsObserver::~MediaWebContentsObserver() {}
35 35
36 void MediaWebContentsObserver::WebContentsDestroyed() { 36 void MediaWebContentsObserver::WebContentsDestroyed() {
37 g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false); 37 g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false);
38 #if defined(OS_ANDROID)
39 if (view_weak_factory_)
40 view_weak_factory_->InvalidateWeakPtrs();
41 #endif
38 } 42 }
39 43
40 void MediaWebContentsObserver::RenderFrameDeleted( 44 void MediaWebContentsObserver::RenderFrameDeleted(
41 RenderFrameHost* render_frame_host) { 45 RenderFrameHost* render_frame_host) {
42 ClearPowerSaveBlockers(render_frame_host); 46 ClearPowerSaveBlockers(render_frame_host);
43 session_controllers_manager_.RenderFrameDeleted(render_frame_host); 47 session_controllers_manager_.RenderFrameDeleted(render_frame_host);
44 } 48 }
45 49
46 void MediaWebContentsObserver::MaybeUpdateAudibleState() { 50 void MediaWebContentsObserver::MaybeUpdateAudibleState() {
47 if (!AudioStreamMonitor::monitoring_available()) 51 if (!AudioStreamMonitor::monitoring_available())
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 PowerSaveBlocker::kReasonAudioPlayback, "Playing audio"); 190 PowerSaveBlocker::kReasonAudioPlayback, "Playing audio");
187 } 191 }
188 192
189 void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() { 193 void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() {
190 DCHECK(!video_power_save_blocker_); 194 DCHECK(!video_power_save_blocker_);
191 DCHECK(!active_video_players_.empty()); 195 DCHECK(!active_video_players_.empty());
192 video_power_save_blocker_ = CreatePowerSaveBlocker( 196 video_power_save_blocker_ = CreatePowerSaveBlocker(
193 PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, 197 PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep,
194 PowerSaveBlocker::kReasonVideoPlayback, "Playing video"); 198 PowerSaveBlocker::kReasonVideoPlayback, "Playing video");
195 #if defined(OS_ANDROID) 199 #if defined(OS_ANDROID)
196 static_cast<PowerSaveBlockerImpl*>(video_power_save_blocker_.get()) 200 if (web_contents()->GetNativeView()) {
197 ->InitDisplaySleepBlocker(web_contents()); 201 view_weak_factory_.reset(new base::WeakPtrFactory<ui::ViewAndroid>(
202 web_contents()->GetNativeView()));
203 static_cast<PowerSaveBlockerImpl*>(video_power_save_blocker_.get())
204 ->InitDisplaySleepBlocker(view_weak_factory_->GetWeakPtr());
205 }
198 #endif 206 #endif
199 } 207 }
200 208
201 void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() { 209 void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() {
202 // If there are no more audio players and we don't have audio stream 210 // If there are no more audio players and we don't have audio stream
203 // monitoring, release the audio power save blocker here instead of during 211 // monitoring, release the audio power save blocker here instead of during
204 // NotifyNavigationStateChanged(). 212 // NotifyNavigationStateChanged().
205 if (active_audio_players_.empty() && 213 if (active_audio_players_.empty() &&
206 !AudioStreamMonitor::monitoring_available()) { 214 !AudioStreamMonitor::monitoring_available()) {
207 audio_power_save_blocker_.reset(); 215 audio_power_save_blocker_.reset();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 if (it == player_map->end()) 253 if (it == player_map->end())
246 return; 254 return;
247 255
248 for (int delegate_id : it->second) 256 for (int delegate_id : it->second)
249 removed_players->insert(MediaPlayerId(render_frame_host, delegate_id)); 257 removed_players->insert(MediaPlayerId(render_frame_host, delegate_id));
250 258
251 player_map->erase(it); 259 player_map->erase(it);
252 } 260 }
253 261
254 } // namespace content 262 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698