summaryrefslogtreecommitdiff
path: root/chromium/content/browser/media/session/media_session_uma_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/media/session/media_session_uma_helper.h')
-rw-r--r--chromium/content/browser/media/session/media_session_uma_helper.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/chromium/content/browser/media/session/media_session_uma_helper.h b/chromium/content/browser/media/session/media_session_uma_helper.h
new file mode 100644
index 00000000000..290c3b94a4c
--- /dev/null
+++ b/chromium/content/browser/media/session/media_session_uma_helper.h
@@ -0,0 +1,54 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_MEDIA_SESSION_MEDIA_SESSION_UMA_HELPER_H_
+#define CONTENT_BROWSER_MEDIA_SESSION_MEDIA_SESSION_UMA_HELPER_H_
+
+#include <memory>
+
+#include "base/time/clock.h"
+#include "content/common/content_export.h"
+
+namespace base {
+class Clock;
+} // base namespace
+
+namespace content {
+
+class CONTENT_EXPORT MediaSessionUmaHelper {
+ public:
+ // This is used for UMA histogram (Media.Session.Suspended). New values should
+ // be appended only and must be added before |Count|.
+ enum class MediaSessionSuspendedSource {
+ SystemTransient = 0,
+ SystemPermanent = 1,
+ UI = 2,
+ CONTENT = 3,
+ SystemTransientDuck = 4,
+ Count // Leave at the end.
+ };
+
+ MediaSessionUmaHelper();
+ ~MediaSessionUmaHelper();
+
+ void RecordSessionSuspended(MediaSessionSuspendedSource source) const;
+
+ // Record the result of calling the native requestAudioFocus().
+ void RecordRequestAudioFocusResult(bool result) const;
+
+ void OnSessionActive();
+ void OnSessionSuspended();
+ void OnSessionInactive();
+
+ void SetClockForTest(std::unique_ptr<base::Clock> testing_clock);
+
+ private:
+ base::TimeDelta total_active_time_;
+ base::Time current_active_time_;
+ std::unique_ptr<base::Clock> clock_;
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_MEDIA_SESSION_MEDIA_SESSION_UMA_HELPER_H_