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

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

Issue 2371723002: Power Save Blocker: Eliminate passing ViewAndroid as WeakPtr (Closed)
Patch Set: Rebase Created 4 years, 2 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 16 matching lines...) Expand all
27 } // anonymous namespace 27 } // anonymous namespace
28 28
29 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents) 29 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents)
30 : WebContentsObserver(web_contents), 30 : WebContentsObserver(web_contents),
31 session_controllers_manager_(this) {} 31 session_controllers_manager_(this) {}
32 32
33 MediaWebContentsObserver::~MediaWebContentsObserver() {} 33 MediaWebContentsObserver::~MediaWebContentsObserver() {}
34 34
35 void MediaWebContentsObserver::WebContentsDestroyed() { 35 void MediaWebContentsObserver::WebContentsDestroyed() {
36 g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false); 36 g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false);
37 #if defined(OS_ANDROID)
38 view_weak_factory_.reset();
39 #endif
40 } 37 }
41 38
42 void MediaWebContentsObserver::RenderFrameDeleted( 39 void MediaWebContentsObserver::RenderFrameDeleted(
43 RenderFrameHost* render_frame_host) { 40 RenderFrameHost* render_frame_host) {
44 ClearPowerSaveBlockers(render_frame_host); 41 ClearPowerSaveBlockers(render_frame_host);
45 session_controllers_manager_.RenderFrameDeleted(render_frame_host); 42 session_controllers_manager_.RenderFrameDeleted(render_frame_host);
46 } 43 }
47 44
48 void MediaWebContentsObserver::MaybeUpdateAudibleState() { 45 void MediaWebContentsObserver::MaybeUpdateAudibleState() {
49 if (!AudioStreamMonitor::monitoring_available()) 46 if (!AudioStreamMonitor::monitoring_available())
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() { 190 void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() {
194 DCHECK(!video_power_save_blocker_); 191 DCHECK(!video_power_save_blocker_);
195 DCHECK(!active_video_players_.empty()); 192 DCHECK(!active_video_players_.empty());
196 video_power_save_blocker_.reset(new device::PowerSaveBlocker( 193 video_power_save_blocker_.reset(new device::PowerSaveBlocker(
197 device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, 194 device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep,
198 device::PowerSaveBlocker::kReasonVideoPlayback, "Playing video", 195 device::PowerSaveBlocker::kReasonVideoPlayback, "Playing video",
199 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), 196 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
200 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE))); 197 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)));
201 #if defined(OS_ANDROID) 198 #if defined(OS_ANDROID)
202 if (web_contents()->GetNativeView()) { 199 if (web_contents()->GetNativeView()) {
203 view_weak_factory_.reset(new base::WeakPtrFactory<ui::ViewAndroid>(
204 web_contents()->GetNativeView()));
205 video_power_save_blocker_.get()->InitDisplaySleepBlocker( 200 video_power_save_blocker_.get()->InitDisplaySleepBlocker(
206 view_weak_factory_->GetWeakPtr()); 201 web_contents()->GetNativeView());
207 } 202 }
208 #endif 203 #endif
209 } 204 }
210 205
211 void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() { 206 void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() {
212 // If there are no more audio players and we don't have audio stream 207 // If there are no more audio players and we don't have audio stream
213 // monitoring, release the audio power save blocker here instead of during 208 // monitoring, release the audio power save blocker here instead of during
214 // NotifyNavigationStateChanged(). 209 // NotifyNavigationStateChanged().
215 if (active_audio_players_.empty() && 210 if (active_audio_players_.empty() &&
216 !AudioStreamMonitor::monitoring_available()) { 211 !AudioStreamMonitor::monitoring_available()) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 if (it == player_map->end()) 250 if (it == player_map->end())
256 return; 251 return;
257 252
258 for (int delegate_id : it->second) 253 for (int delegate_id : it->second)
259 removed_players->insert(MediaPlayerId(render_frame_host, delegate_id)); 254 removed_players->insert(MediaPlayerId(render_frame_host, delegate_id));
260 255
261 player_map->erase(it); 256 player_map->erase(it);
262 } 257 }
263 258
264 } // namespace content 259 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/media_web_contents_observer.h ('k') | content/browser/wake_lock/wake_lock_service_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698