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

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

Issue 1591453005: Add metrics regarding concurrent audible tabs in Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 "base/lazy_instance.h"
7 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
8 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "content/browser/media/audible_metrics.h"
11 #include "content/browser/media/audio_stream_monitor.h"
9 #include "content/browser/power_save_blocker_impl.h" 12 #include "content/browser/power_save_blocker_impl.h"
10 #include "content/browser/web_contents/web_contents_impl.h" 13 #include "content/browser/web_contents/web_contents_impl.h"
11 #include "content/common/frame_messages.h" 14 #include "content/common/frame_messages.h"
12 #include "content/public/browser/render_frame_host.h" 15 #include "content/public/browser/render_frame_host.h"
13 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
14 #include "ipc/ipc_message_macros.h" 17 #include "ipc/ipc_message_macros.h"
15 18
16 namespace content { 19 namespace content {
17 20
21 namespace {
22
23 static base::LazyInstance<AudibleMetrics> g_audible_metrics =
DaleCurtis 2016/01/15 19:02:03 ::Leaky
mlamouri (slow - plz ping) 2016/01/19 12:18:43 Done.
24 LAZY_INSTANCE_INITIALIZER;
25
26 } // anonymous namespace
27
18 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents) 28 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents)
19 : WebContentsObserver(web_contents) {} 29 : WebContentsObserver(web_contents) {}
20 30
21 MediaWebContentsObserver::~MediaWebContentsObserver() {} 31 MediaWebContentsObserver::~MediaWebContentsObserver() {}
22 32
33 void MediaWebContentsObserver::WebContentsDestroyed() {
34 g_audible_metrics.Get().UpdateAudibleWebContentsState(web_contents(), false);
35 }
36
23 void MediaWebContentsObserver::RenderFrameDeleted( 37 void MediaWebContentsObserver::RenderFrameDeleted(
24 RenderFrameHost* render_frame_host) { 38 RenderFrameHost* render_frame_host) {
25 ClearPowerSaveBlockers(render_frame_host); 39 ClearPowerSaveBlockers(render_frame_host);
26 } 40 }
27 41
28 void MediaWebContentsObserver::MaybeUpdateAudibleState(bool recently_audible) { 42 void MediaWebContentsObserver::MaybeUpdateAudibleState() {
29 if (recently_audible) { 43 if (!AudioStreamMonitor::monitoring_available())
44 return;
45
46 AudioStreamMonitor* audio_stream_monitor =
47 static_cast<WebContentsImpl*>(web_contents())->audio_stream_monitor();
48
49 if (audio_stream_monitor->WasRecentlyAudible()) {
30 if (!audio_power_save_blocker_) 50 if (!audio_power_save_blocker_)
31 CreateAudioPowerSaveBlocker(); 51 CreateAudioPowerSaveBlocker();
32 } else { 52 } else {
33 audio_power_save_blocker_.reset(); 53 audio_power_save_blocker_.reset();
34 } 54 }
55
56 g_audible_metrics.Get().UpdateAudibleWebContentsState(
57 web_contents(), audio_stream_monitor->IsCurrentlyAudible());
35 } 58 }
36 59
37 bool MediaWebContentsObserver::OnMessageReceived( 60 bool MediaWebContentsObserver::OnMessageReceived(
38 const IPC::Message& msg, 61 const IPC::Message& msg,
39 RenderFrameHost* render_frame_host) { 62 RenderFrameHost* render_frame_host) {
40 bool handled = true; 63 bool handled = true;
41 // TODO(dalecurtis): These should no longer be FrameHostMsg. 64 // TODO(dalecurtis): These should no longer be FrameHostMsg.
42 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(MediaWebContentsObserver, msg, 65 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(MediaWebContentsObserver, msg,
43 render_frame_host) 66 render_frame_host)
44 IPC_MESSAGE_HANDLER(FrameHostMsg_MediaPlayingNotification, 67 IPC_MESSAGE_HANDLER(FrameHostMsg_MediaPlayingNotification,
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 if (it == player_map->end()) 226 if (it == player_map->end())
204 return; 227 return;
205 228
206 for (int64_t player_cookie : it->second) 229 for (int64_t player_cookie : it->second)
207 removed_players->insert(MediaPlayerId(render_frame_host, player_cookie)); 230 removed_players->insert(MediaPlayerId(render_frame_host, player_cookie));
208 231
209 player_map->erase(it); 232 player_map->erase(it);
210 } 233 }
211 234
212 } // namespace content 235 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698