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

Unified 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: Fix crash, plumb. 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 side-by-side diff with in-line comments
Download patch
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 562836ebc33dc4146289b094915afe17c857084d..8cc985aa1d302c911bfdb53c85c175aedbfa1304 100644
--- a/content/browser/media/media_web_contents_observer.cc
+++ b/content/browser/media/media_web_contents_observer.cc
@@ -4,6 +4,7 @@
#include "content/browser/media/media_web_contents_observer.h"
+#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "build/build_config.h"
#include "content/browser/power_save_blocker_impl.h"
@@ -12,6 +13,7 @@
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "ipc/ipc_message_macros.h"
+#include "media/base/bind_to_current_loop.h"
namespace content {
@@ -52,6 +54,49 @@ bool MediaWebContentsObserver::OnMessageReceived(
return handled;
}
+void MediaWebContentsObserver::WasShown() {
+ // Restore power save blocker if there are active video players running.
+ if (!active_video_players_.empty() && !video_power_save_blocker_)
+ CreateVideoPowerSaveBlocker();
+}
+
+void MediaWebContentsObserver::WasHidden() {
+ // If there are entities capturing screenshots or video (e.g., mirroring),
+ // don't release the power save blocker.
+ if (!web_contents()->GetCapturerCount())
+ video_power_save_blocker_.reset();
+}
+
+// static
+void MediaWebContentsObserver::HasAudioFocus(int render_process_id,
+ int render_frame_id,
+ const base::Closure& on_focus_cb) {
+ if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&MediaWebContentsObserver::HasAudioFocus, render_process_id,
+ render_frame_id, media::BindToCurrentLoop(on_focus_cb)));
+ return;
+ }
+
+ RenderFrameHost* rfh =
+ RenderFrameHost::FromID(render_process_id, render_frame_id);
+ if (rfh) {
mlamouri (slow - plz ping) 2016/01/14 15:03:41 nit: ``` if (!rfh) return; ``` Also, probably n
DaleCurtis 2016/01/14 23:16:10 There was some reason I wrote it this way, but I d
+ WebContents* wc = WebContents::FromRenderFrameHost(rfh);
mlamouri (slow - plz ping) 2016/01/14 15:03:41 nit: we usually use `web_contents`, I can't rememb
DaleCurtis 2016/01/14 23:16:10 Done.
+ if (wc) {
mlamouri (slow - plz ping) 2016/01/14 15:03:41 nit: ``` if (!wc) return; ```
DaleCurtis 2016/01/14 23:16:10 Done.
+ MediaWebContentsObserver* p_this =
+ static_cast<WebContentsImpl*>(wc)->media_web_contents_observer();
+ p_this->CheckFocus(render_frame_id, on_focus_cb);
+ return;
+ }
+ }
+}
+
+void MediaWebContentsObserver::CheckFocus(int render_frame_id,
+ const base::Closure& on_focus_cb) {
+ NOTIMPLEMENTED();
+}
+
void MediaWebContentsObserver::OnMediaDestroyedNotification(
RenderFrameHost* render_frame_host,
int64_t player_cookie) {
@@ -148,19 +193,6 @@ void MediaWebContentsObserver::CreateVideoPowerSaveBlocker() {
#endif
}
-void MediaWebContentsObserver::WasShown() {
- // Restore power save blocker if there are active video players running.
- if (!active_video_players_.empty() && !video_power_save_blocker_)
- CreateVideoPowerSaveBlocker();
-}
-
-void MediaWebContentsObserver::WasHidden() {
- // If there are entities capturing screenshots or video (e.g., mirroring),
- // don't release the power save blocker.
- if (!web_contents()->GetCapturerCount())
- video_power_save_blocker_.reset();
-}
-
void MediaWebContentsObserver::MaybeReleasePowerSaveBlockers() {
// If there are no more audio players and we don't have audio stream
// monitoring, release the audio power save blocker here instead of during
« no previous file with comments | « content/browser/media/media_web_contents_observer.h ('k') | content/browser/renderer_host/media/audio_renderer_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698