| 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(
|
|
|