| OLD | NEW | 
|---|
| 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  Loading... | 
| 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   view_weak_factory_.reset(); | 
|  | 40 #endif | 
| 38 } | 41 } | 
| 39 | 42 | 
| 40 void MediaWebContentsObserver::RenderFrameDeleted( | 43 void MediaWebContentsObserver::RenderFrameDeleted( | 
| 41     RenderFrameHost* render_frame_host) { | 44     RenderFrameHost* render_frame_host) { | 
| 42   ClearPowerSaveBlockers(render_frame_host); | 45   ClearPowerSaveBlockers(render_frame_host); | 
| 43   session_controllers_manager_.RenderFrameDeleted(render_frame_host); | 46   session_controllers_manager_.RenderFrameDeleted(render_frame_host); | 
| 44 } | 47 } | 
| 45 | 48 | 
| 46 void MediaWebContentsObserver::MaybeUpdateAudibleState() { | 49 void MediaWebContentsObserver::MaybeUpdateAudibleState() { | 
| 47   if (!AudioStreamMonitor::monitoring_available()) | 50   if (!AudioStreamMonitor::monitoring_available()) | 
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 186       PowerSaveBlocker::kReasonAudioPlayback, "Playing audio"); | 189       PowerSaveBlocker::kReasonAudioPlayback, "Playing audio"); | 
| 187 } | 190 } | 
| 188 | 191 | 
| 189 void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() { | 192 void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() { | 
| 190   DCHECK(!video_power_save_blocker_); | 193   DCHECK(!video_power_save_blocker_); | 
| 191   DCHECK(!active_video_players_.empty()); | 194   DCHECK(!active_video_players_.empty()); | 
| 192   video_power_save_blocker_ = CreatePowerSaveBlocker( | 195   video_power_save_blocker_ = CreatePowerSaveBlocker( | 
| 193       PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, | 196       PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, | 
| 194       PowerSaveBlocker::kReasonVideoPlayback, "Playing video"); | 197       PowerSaveBlocker::kReasonVideoPlayback, "Playing video"); | 
| 195 #if defined(OS_ANDROID) | 198 #if defined(OS_ANDROID) | 
| 196   static_cast<PowerSaveBlockerImpl*>(video_power_save_blocker_.get()) | 199   if (web_contents()->GetNativeView()) { | 
| 197       ->InitDisplaySleepBlocker(web_contents()); | 200     view_weak_factory_.reset(new base::WeakPtrFactory<ui::ViewAndroid>( | 
|  | 201         web_contents()->GetNativeView())); | 
|  | 202     static_cast<PowerSaveBlockerImpl*>(video_power_save_blocker_.get()) | 
|  | 203         ->InitDisplaySleepBlocker(view_weak_factory_->GetWeakPtr()); | 
|  | 204   } | 
| 198 #endif | 205 #endif | 
| 199 } | 206 } | 
| 200 | 207 | 
| 201 void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() { | 208 void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() { | 
| 202   // If there are no more audio players and we don't have audio stream | 209   // 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 | 210   // monitoring, release the audio power save blocker here instead of during | 
| 204   // NotifyNavigationStateChanged(). | 211   // NotifyNavigationStateChanged(). | 
| 205   if (active_audio_players_.empty() && | 212   if (active_audio_players_.empty() && | 
| 206       !AudioStreamMonitor::monitoring_available()) { | 213       !AudioStreamMonitor::monitoring_available()) { | 
| 207     audio_power_save_blocker_.reset(); | 214     audio_power_save_blocker_.reset(); | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 245   if (it == player_map->end()) | 252   if (it == player_map->end()) | 
| 246     return; | 253     return; | 
| 247 | 254 | 
| 248   for (int delegate_id : it->second) | 255   for (int delegate_id : it->second) | 
| 249     removed_players->insert(MediaPlayerId(render_frame_host, delegate_id)); | 256     removed_players->insert(MediaPlayerId(render_frame_host, delegate_id)); | 
| 250 | 257 | 
| 251   player_map->erase(it); | 258   player_map->erase(it); | 
| 252 } | 259 } | 
| 253 | 260 | 
| 254 }  // namespace content | 261 }  // namespace content | 
| OLD | NEW | 
|---|