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

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

Issue 2798083002: Record user interactions with MediaSession by action type (Closed)
Patch Set: Created 3 years, 8 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 222701e81c0411222060cc19fb5bc558f55a4d03..9e1fe3bae8d9cd7c723b19a3265ca91e61db19f0 100644
--- a/content/browser/media/session/media_session_impl.cc
+++ b/content/browser/media/session/media_session_impl.cc
@@ -15,6 +15,7 @@
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/web_contents.h"
#include "media/base/media_content_type.h"
+#include "third_party/WebKit/public/platform/modules/mediasession/media_session.mojom.h"
#if defined(OS_ANDROID)
#include "content/browser/media/session/media_session_android.h"
@@ -22,6 +23,8 @@
namespace content {
+using MediaSessionUserAction = MediaSessionUmaHelper::MediaSessionUserAction;
+
namespace {
const double kDefaultVolumeMultiplier = 1.0;
@@ -47,6 +50,27 @@ size_t ComputeFrameDepth(RenderFrameHost* rfh,
return depth;
}
+MediaSessionUserAction MediaSessionActionToUserAction(
+ blink::mojom::MediaSessionAction action) {
+ switch (action) {
+ case blink::mojom::MediaSessionAction::PLAY:
+ return MediaSessionUserAction::Play;
+ case blink::mojom::MediaSessionAction::PAUSE:
+ return MediaSessionUserAction::Pause;
+ case blink::mojom::MediaSessionAction::PREVIOUS_TRACK:
+ return MediaSessionUserAction::PreviousTrack;
+ case blink::mojom::MediaSessionAction::NEXT_TRACK:
+ return MediaSessionUserAction::NextTrack;
+ case blink::mojom::MediaSessionAction::SEEK_BACKWARD:
+ return MediaSessionUserAction::SeekBackward;
+ case blink::mojom::MediaSessionAction::SEEK_FORWARD:
+ return MediaSessionUserAction::SeekForward;
+ default:
mlamouri (slow - plz ping) 2017/04/07 11:15:55 Add the case for COUNT here so all cases are taken
Zhiqiang Zhang (Slow) 2017/04/07 15:12:43 Actually, the mojo enum only have LAST (= SEEK_FOR
+ NOTREACHED();
+ }
+ return MediaSessionUserAction::Count;
+}
+
} // anonymous namespace
using MediaSessionSuspendedSource =
@@ -310,6 +334,11 @@ void MediaSessionImpl::OnPlayerPaused(MediaSessionPlayerObserver* observer,
void MediaSessionImpl::Resume(SuspendType suspend_type) {
DCHECK(IsSuspended());
+ if (suspend_type == SuspendType::UI) {
+ uma_helper_.RecordMediaSessionUserAction(
+ MediaSessionUmaHelper::MediaSessionUserAction::PlayDefault);
+ }
+
// When the resume requests comes from another source than system, audio focus
// must be requested.
if (suspend_type != SuspendType::SYSTEM) {
@@ -331,6 +360,11 @@ void MediaSessionImpl::Suspend(SuspendType suspend_type) {
if (!IsActive())
return;
+ if (suspend_type == SuspendType::UI) {
+ uma_helper_.RecordMediaSessionUserAction(
+ MediaSessionUmaHelper::MediaSessionUserAction::PlayDefault);
mlamouri (slow - plz ping) 2017/04/07 11:15:55 ::PauseDefault?
Zhiqiang Zhang (Slow) 2017/04/07 15:12:43 Done.
+ }
+
OnSuspendInternal(suspend_type, State::SUSPENDED);
}
@@ -339,6 +373,11 @@ void MediaSessionImpl::Stop(SuspendType suspend_type) {
DCHECK(suspend_type != SuspendType::CONTENT);
DCHECK(!HasPepper());
+ if (suspend_type == SuspendType::UI) {
+ uma_helper_.RecordMediaSessionUserAction(
+ MediaSessionUmaHelper::MediaSessionUserAction::StopDefault);
+ }
+
// TODO(mlamouri): merge the logic between UI and SYSTEM.
if (suspend_type == SuspendType::SYSTEM) {
OnSuspendInternal(suspend_type, State::INACTIVE);
@@ -635,6 +674,9 @@ void MediaSessionImpl::OnMediaSessionActionsChanged(
void MediaSessionImpl::DidReceiveAction(
blink::mojom::MediaSessionAction action) {
+ uma_helper_.RecordMediaSessionUserAction(
+ MediaSessionActionToUserAction(action));
+
// Pause all players in non-routed frames if the action is PAUSE.
//
// This is the default PAUSE action handler per Media Session API spec. The

Powered by Google App Engine
This is Rietveld 408576698