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

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

Issue 1580493004: Plumb audio focus support for spitzer clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delegate_hookup
Patch Set: Detangle. Cleanup. 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/callback.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"
9 #include "content/browser/power_save_blocker_impl.h" 10 #include "content/browser/power_save_blocker_impl.h"
10 #include "content/browser/web_contents/web_contents_impl.h" 11 #include "content/browser/web_contents/web_contents_impl.h"
11 #include "content/common/frame_messages.h" 12 #include "content/common/frame_messages.h"
12 #include "content/public/browser/render_frame_host.h" 13 #include "content/public/browser/render_frame_host.h"
13 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
14 #include "ipc/ipc_message_macros.h" 15 #include "ipc/ipc_message_macros.h"
16 #include "media/base/bind_to_current_loop.h"
15 17
16 namespace content { 18 namespace content {
17 19
18 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents) 20 MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents)
19 : WebContentsObserver(web_contents) {} 21 : WebContentsObserver(web_contents) {}
20 22
21 MediaWebContentsObserver::~MediaWebContentsObserver() {} 23 MediaWebContentsObserver::~MediaWebContentsObserver() {}
22 24
23 void MediaWebContentsObserver::RenderFrameDeleted( 25 void MediaWebContentsObserver::RenderFrameDeleted(
24 RenderFrameHost* render_frame_host) { 26 RenderFrameHost* render_frame_host) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 CreateVideoPowerSaveBlocker(); 60 CreateVideoPowerSaveBlocker();
59 } 61 }
60 62
61 void MediaWebContentsObserver::WasHidden() { 63 void MediaWebContentsObserver::WasHidden() {
62 // If there are entities capturing screenshots or video (e.g., mirroring), 64 // If there are entities capturing screenshots or video (e.g., mirroring),
63 // don't release the power save blocker. 65 // don't release the power save blocker.
64 if (!web_contents()->GetCapturerCount()) 66 if (!web_contents()->GetCapturerCount())
65 video_power_save_blocker_.reset(); 67 video_power_save_blocker_.reset();
66 } 68 }
67 69
70 // static
71 void MediaWebContentsObserver::HasAudioFocus(int render_process_id,
72 int render_frame_id,
73 const base::Closure& on_focus_cb) {
74 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
75 BrowserThread::PostTask(
76 BrowserThread::UI, FROM_HERE,
77 base::Bind(&MediaWebContentsObserver::HasAudioFocus, render_process_id,
78 render_frame_id, media::BindToCurrentLoop(on_focus_cb)));
79 return;
80 }
81
82 WebContents* web_contents = WebContents::FromRenderFrameHost(
83 RenderFrameHost::FromID(render_process_id, render_frame_id));
84 if (!web_contents)
85 return;
86
87 MediaWebContentsObserver* p_this = static_cast<WebContentsImpl*>(web_contents)
88 ->media_web_contents_observer();
89 p_this->CheckFocus(render_frame_id, on_focus_cb);
90 }
91
92 void MediaWebContentsObserver::CheckFocus(int render_frame_id,
93 const base::Closure& on_focus_cb) {
94 NOTIMPLEMENTED();
95 }
96
68 void MediaWebContentsObserver::OnMediaDestroyedNotification( 97 void MediaWebContentsObserver::OnMediaDestroyedNotification(
69 RenderFrameHost* render_frame_host, 98 RenderFrameHost* render_frame_host,
70 int64_t player_cookie) { 99 int64_t player_cookie) {
71 OnMediaPausedNotification(render_frame_host, player_cookie, true); 100 OnMediaPausedNotification(render_frame_host, player_cookie, true);
72 } 101 }
73 102
74 void MediaWebContentsObserver::OnMediaPlayingNotification( 103 void MediaWebContentsObserver::OnMediaPlayingNotification(
75 RenderFrameHost* render_frame_host, 104 RenderFrameHost* render_frame_host,
76 int64_t player_cookie, 105 int64_t player_cookie,
77 bool has_video, 106 bool has_video,
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 if (it == player_map->end()) 242 if (it == player_map->end())
214 return; 243 return;
215 244
216 for (int64_t player_cookie : it->second) 245 for (int64_t player_cookie : it->second)
217 removed_players->insert(MediaPlayerId(render_frame_host, player_cookie)); 246 removed_players->insert(MediaPlayerId(render_frame_host, player_cookie));
218 247
219 player_map->erase(it); 248 player_map->erase(it);
220 } 249 }
221 250
222 } // namespace content 251 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698