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

Unified Diff: content/browser/media/android/media_web_contents_observer_android.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 side-by-side diff with in-line comments
Download patch
Index: content/browser/media/android/media_web_contents_observer_android.cc
diff --git a/content/browser/media/android/media_web_contents_observer_android.cc b/content/browser/media/android/media_web_contents_observer_android.cc
index aa66741fd92fe0de407e3498f4281d59a11fecfc..b14945bba7f18a6fefe5b94a41cad8250f6b34ef 100644
--- a/content/browser/media/android/media_web_contents_observer_android.cc
+++ b/content/browser/media/android/media_web_contents_observer_android.cc
@@ -4,6 +4,7 @@
#include "content/browser/media/android/media_web_contents_observer_android.h"
+#include "base/callback.h"
#include "content/browser/media/android/browser_media_player_manager.h"
#include "content/browser/media/android/browser_media_session_manager.h"
#include "content/browser/media/android/media_session.h"
@@ -199,6 +200,19 @@ bool MediaWebContentsObserverAndroid::OnMessageReceived(
return OnMediaPlayerSetCdmMessageReceived(msg, render_frame_host);
}
+void MediaWebContentsObserverAndroid::CheckFocus(
+ int render_frame_id,
+ const base::Closure& on_focus_cb) {
+ for (const auto& kv : media_session_map_) {
+ if (kv.first.first->GetRoutingID() == render_frame_id) {
+ on_focus_cb.Run();
+ return;
+ }
+ }
+
+ deferred_focus_cbs_[render_frame_id].push_back(on_focus_cb);
+}
+
void MediaWebContentsObserverAndroid::OnMediaPlayerDelegateMessageReceived(
const IPC::Message& msg,
RenderFrameHost* render_frame_host) {
@@ -316,6 +330,7 @@ void MediaWebContentsObserverAndroid::OnMediaDestroyedNotification(
RenderFrameHost* render_frame_host,
int64_t player_cookie) {
media_session_map_.erase(MediaPlayerId(render_frame_host, player_cookie));
+ deferred_focus_cbs_.erase(render_frame_host->GetRoutingID());
}
void MediaWebContentsObserverAndroid::OnMediaPlayingNotification(
@@ -339,6 +354,14 @@ void MediaWebContentsObserverAndroid::OnMediaPlayingNotification(
return;
media_session_map_[id] = std::move(controller);
+
+ // Notify any deferred focus callbacks.
+ auto it = deferred_focus_cbs_.find(render_frame_host->GetRoutingID());
+ if (it != deferred_focus_cbs_.end()) {
+ for (const auto& cb : it->second)
+ cb.Run();
+ deferred_focus_cbs_.erase(it);
+ }
}
void MediaWebContentsObserverAndroid::OnMediaPausedNotification(

Powered by Google App Engine
This is Rietveld 408576698