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

Unified Diff: content/browser/media/session/media_session_impl.cc

Issue 2442303002: Adding new media controls to MediaNotification (Closed)
Patch Set: rebased onto MediaSession refactoring Created 4 years, 2 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/session/media_session_impl.cc
diff --git a/content/browser/media/session/media_session_impl.cc b/content/browser/media/session/media_session_impl.cc
index c19b212baa26ba5cc787e14f988fe72a4be78b3b..76f0695e25875bb6bc4d726850fd6e75ef0b416f 100644
--- a/content/browser/media/session/media_session_impl.cc
+++ b/content/browser/media/session/media_session_impl.cc
@@ -6,9 +6,11 @@
#include "content/browser/media/session/audio_focus_delegate.h"
#include "content/browser/media/session/media_session_player_observer.h"
+#include "content/browser/media/session/media_session_service_impl.h"
#include "content/browser/web_contents/web_contents_impl.h"
+#include "content/public/browser/media_session.h"
+#include "content/public/browser/media_session_observer.h"
#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_delegate.h"
#include "media/base/media_content_type.h"
#if defined(OS_ANDROID)
@@ -96,15 +98,19 @@ void MediaSessionImpl::WebContentsDestroyed() {
// already been removed before WebContents is destroyed.
// TODO(zqzhang): refactor MediaSessionImpl, maybe move the interface used to
- // talk
- // with AudioFocusManager out to a seperate class. The AudioFocusManager unit
- // tests then could mock the interface and abandon audio focus when
+ // talk with AudioFocusManager out to a seperate class. The AudioFocusManager
+ // unit tests then could mock the interface and abandon audio focus when
// WebContents is destroyed. See https://crbug.com/651069
players_.clear();
pepper_players_.clear();
AbandonSystemAudioFocusIfNeeded();
}
+void MediaSessionImpl::SetMediaSessionService(
+ MediaSessionServiceImpl* service) {
+ service_ = service;
whywhat 2016/10/28 16:10:23 nit: I assume this is supposed to be called only o
Zhiqiang Zhang (Slow) 2016/11/01 15:24:15 It could be set and unset. My point is the service
+}
+
void MediaSessionImpl::AddObserver(MediaSessionObserver* observer) {
observers_.AddObserver(observer);
}
@@ -276,6 +282,24 @@ void MediaSessionImpl::Stop(SuspendType suspend_type) {
AbandonSystemAudioFocusIfNeeded();
}
+void MediaSessionImpl::DidReceiveAction(
+ blink::mojom::MediaSessionAction action) {
+ if (service_)
whywhat 2016/10/28 16:10:23 nit: Is it possible to have service_ nullptr?
Zhiqiang Zhang (Slow) 2016/11/01 15:24:15 See my other reply.
+ service_->GetClient()->DidReceiveAction(action);
+}
+
+void MediaSessionImpl::OnMediaSessionEnabledAction(
+ blink::mojom::MediaSessionAction action) {
+ for (auto& observer : observers_)
+ observer.MediaSessionEnabledAction(action);
+}
+
+void MediaSessionImpl::OnMediaSessionDisabledAction(
+ blink::mojom::MediaSessionAction action) {
+ for (auto& observer : observers_)
+ observer.MediaSessionDisabledAction(action);
+}
+
void MediaSessionImpl::StartDucking() {
if (is_ducking_)
return;
@@ -421,7 +445,8 @@ MediaSessionImpl::MediaSessionImpl(WebContents* web_contents)
audio_focus_state_(State::INACTIVE),
audio_focus_type_(
AudioFocusManager::AudioFocusType::GainTransientMayDuck),
- is_ducking_(false) {
+ is_ducking_(false),
+ service_(nullptr) {
#if defined(OS_ANDROID)
session_android_.reset(new MediaSessionAndroid(this));
#endif // defined(OS_ANDROID)

Powered by Google App Engine
This is Rietveld 408576698