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

Unified Diff: chromecast/browser/cast_media_blocker.cc

Issue 2450433002: Let CastMediaBlocker observe MediaSession instead of WebContents (Closed)
Patch Set: addressed comments 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: chromecast/browser/cast_media_blocker.cc
diff --git a/chromecast/browser/cast_media_blocker.cc b/chromecast/browser/cast_media_blocker.cc
index 9f49bab4ff66ac5774edcf0c188ed27ff348347f..dd92cadff20ee5b2441d7b0abdd8ea400bb60ecd 100644
--- a/chromecast/browser/cast_media_blocker.cc
+++ b/chromecast/browser/cast_media_blocker.cc
@@ -4,25 +4,17 @@
#include "chromecast/browser/cast_media_blocker.h"
-#include "base/callback.h"
#include "base/threading/thread_checker.h"
+#include "content/public/browser/media_session.h"
#include "content/public/browser/web_contents.h"
namespace chromecast {
namespace shell {
-CastMediaBlocker::CastMediaBlocker(content::WebContents* web_contents)
- : CastMediaBlocker::CastMediaBlocker(
- web_contents,
- base::Bind(&CastMediaBlocker::Suspend, base::Unretained(this)),
- base::Bind(&CastMediaBlocker::Resume, base::Unretained(this))) {}
-
-CastMediaBlocker::CastMediaBlocker(content::WebContents* web_contents,
- const base::Closure& suspend_cb,
- const base::Closure& resume_cb)
- : content::WebContentsObserver(web_contents),
- suspend_cb_(suspend_cb),
- resume_cb_(resume_cb),
+CastMediaBlocker::CastMediaBlocker(content::MediaSession* media_session,
+ content::WebContents* web_contents)
+ : content::MediaSessionObserver(media_session),
+ content::WebContentsObserver(web_contents),
blocked_(false),
paused_by_user_(true),
suspended_(true),
@@ -44,7 +36,7 @@ void CastMediaBlocker::BlockMediaLoading(bool blocked) {
// If blocking media, suspend if possible.
if (blocked_) {
if (!suspended_ && controllable_) {
- suspend_cb_.Run();
+ Suspend();
}
return;
}
@@ -52,7 +44,7 @@ void CastMediaBlocker::BlockMediaLoading(bool blocked) {
// If unblocking media, resume if media was not paused by user.
if (!paused_by_user_ && suspended_ && controllable_) {
paused_by_user_ = true;
- resume_cb_.Run();
+ Resume();
}
}
@@ -71,7 +63,7 @@ void CastMediaBlocker::MediaSessionStateChanged(bool is_controllable,
// blocked, resume media if suspended.
if (!blocked_ && !paused_by_user_ && is_suspended && controllable_) {
paused_by_user_ = true;
- resume_cb_.Run();
+ Resume();
}
// Suspend if blocked and the session becomes controllable.
@@ -79,7 +71,7 @@ void CastMediaBlocker::MediaSessionStateChanged(bool is_controllable,
// Only suspend if suspended_ doesn't change. Otherwise, this will be
// handled in the suspended changed block.
if (suspended_ == is_suspended)
- suspend_cb_.Run();
+ Suspend();
}
}
@@ -91,7 +83,7 @@ void CastMediaBlocker::MediaSessionStateChanged(bool is_controllable,
// If media was resumed when blocked, the user tried to play music.
paused_by_user_ = false;
if (controllable_)
- suspend_cb_.Run();
+ Suspend();
}
// If not blocking, cache the user's play intent.
@@ -101,19 +93,19 @@ void CastMediaBlocker::MediaSessionStateChanged(bool is_controllable,
}
void CastMediaBlocker::Suspend() {
- if (!web_contents())
+ if (!media_session())
return;
LOG(INFO) << "Suspending media session.";
- web_contents()->SuspendMediaSession();
+ media_session()->Suspend(content::MediaSession::SuspendType::SYSTEM);
}
void CastMediaBlocker::Resume() {
- if (!web_contents())
+ if (!media_session())
return;
LOG(INFO) << "Resuming media session.";
- web_contents()->ResumeMediaSession();
+ media_session()->Resume(content::MediaSession::SuspendType::SYSTEM);
}
} // namespace shell

Powered by Google App Engine
This is Rietveld 408576698