Index: content/renderer/media/renderer_webmediaplayer_delegate.h |
diff --git a/content/renderer/media/renderer_webmediaplayer_delegate.h b/content/renderer/media/renderer_webmediaplayer_delegate.h |
index f8c8563d347718c3bc12a8cc9228200325afb90c..84841a0ddff841e79f4f21fe0067aee5bc3f5032 100644 |
--- a/content/renderer/media/renderer_webmediaplayer_delegate.h |
+++ b/content/renderer/media/renderer_webmediaplayer_delegate.h |
@@ -12,7 +12,9 @@ |
#include "base/id_map.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/power_monitor/power_observer.h" |
#include "base/time/default_tick_clock.h" |
+#include "base/time/time.h" |
#include "base/timer/timer.h" |
#include "content/common/content_export.h" |
#include "content/public/renderer/render_frame_observer.h" |
@@ -28,6 +30,7 @@ namespace media { |
// to objects that need to know. |
class CONTENT_EXPORT RendererWebMediaPlayerDelegate |
: public content::RenderFrameObserver, |
+ public NON_EXPORTED_BASE(base::PowerObserver), |
public NON_EXPORTED_BASE(WebMediaPlayerDelegate), |
public NON_EXPORTED_BASE( |
base::SupportsWeakPtr<RendererWebMediaPlayerDelegate>) { |
@@ -38,6 +41,10 @@ class CONTENT_EXPORT RendererWebMediaPlayerDelegate |
// Returns true if this RenderFrame has ever seen media playback before. |
bool has_played_media() const { return has_played_media_; } |
+ // PowerObserver implementation. |
+ void OnSuspend() override; |
+ void OnResume() override; |
+ |
// WebMediaPlayerDelegate implementation. |
int AddObserver(Observer* observer) override; |
void RemoveObserver(int delegate_id) override; |
@@ -83,6 +90,9 @@ class CONTENT_EXPORT RendererWebMediaPlayerDelegate |
// Runs periodically to suspend idle delegates in |idle_delegate_map_|. |
void CleanupIdleDelegates(); |
+ // Setter for |is_playing_background_video_| that updates the metrics. |
+ void SetIsPlayingBackgroundVideo(bool is_playing); |
+ |
bool has_played_media_ = false; |
IDMap<Observer> id_map_; |
@@ -110,6 +120,12 @@ class CONTENT_EXPORT RendererWebMediaPlayerDelegate |
// foreground. |
bool is_playing_background_video_ = false; |
+ // Keeps track of when the background video playback started for metrics. |
+ base::TimeTicks background_video_playing_start_time_; |
+ |
+ // Keeps track of for how long the device was in a power suspended state. |
+ base::TimeTicks power_suspended_time_; |
+ |
// The currently playing local videos. Used to determine whether |
// OnMediaDelegatePlay() should allow the videos to play in the background or |
// not. |