| 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 0591e25b73eaf5dcb8d5d1b5377f9708a6a38f77..67ef0368680e8d6be542d65dd5b9f43a857ffd01 100644
|
| --- a/content/browser/media/media_web_contents_observer.cc
|
| +++ b/content/browser/media/media_web_contents_observer.cc
|
| @@ -4,8 +4,11 @@
|
|
|
| #include "content/browser/media/media_web_contents_observer.h"
|
|
|
| +#include "base/lazy_instance.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "build/build_config.h"
|
| +#include "content/browser/media/audible_metrics.h"
|
| +#include "content/browser/media/audio_stream_monitor.h"
|
| #include "content/browser/power_save_blocker_impl.h"
|
| #include "content/browser/web_contents/web_contents_impl.h"
|
| #include "content/common/frame_messages.h"
|
| @@ -15,23 +18,43 @@
|
|
|
| namespace content {
|
|
|
| +namespace {
|
| +
|
| +static base::LazyInstance<AudibleMetrics>::Leaky g_audible_metrics =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // anonymous namespace
|
| +
|
| MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents)
|
| : WebContentsObserver(web_contents) {}
|
|
|
| MediaWebContentsObserver::~MediaWebContentsObserver() {}
|
|
|
| +void MediaWebContentsObserver::WebContentsDestroyed() {
|
| + g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false);
|
| +}
|
| +
|
| void MediaWebContentsObserver::RenderFrameDeleted(
|
| RenderFrameHost* render_frame_host) {
|
| ClearPowerSaveBlockers(render_frame_host);
|
| }
|
|
|
| -void MediaWebContentsObserver::MaybeUpdateAudibleState(bool recently_audible) {
|
| - if (recently_audible) {
|
| +void MediaWebContentsObserver::MaybeUpdateAudibleState() {
|
| + if (!AudioStreamMonitor::monitoring_available())
|
| + return;
|
| +
|
| + AudioStreamMonitor* audio_stream_monitor =
|
| + static_cast<WebContentsImpl*>(web_contents())->audio_stream_monitor();
|
| +
|
| + if (audio_stream_monitor->WasRecentlyAudible()) {
|
| if (!audio_power_save_blocker_)
|
| CreateAudioPowerSaveBlocker();
|
| } else {
|
| audio_power_save_blocker_.reset();
|
| }
|
| +
|
| + g_audible_metrics.Get().UpdateAudibleWebContentsState(
|
| + web_contents(), audio_stream_monitor->IsCurrentlyAudible());
|
| }
|
|
|
| bool MediaWebContentsObserver::OnMessageReceived(
|
|
|