| 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 54a5bc9913fc3815f0a1a23a976e8869b36d6b0a..e46db901b8c941dbf269a98329ec7346d1fe8076 100644
|
| --- a/content/renderer/media/renderer_webmediaplayer_delegate.h
|
| +++ b/content/renderer/media/renderer_webmediaplayer_delegate.h
|
| @@ -5,9 +5,14 @@
|
| #ifndef CONTENT_RENDERER_MEDIA_RENDERER_WEBMEDIAPLAYER_DELEGATE_H_
|
| #define CONTENT_RENDERER_MEDIA_RENDERER_WEBMEDIAPLAYER_DELEGATE_H_
|
|
|
| +#include <map>
|
| +
|
| #include "base/id_map.h"
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/time/default_tick_clock.h"
|
| +#include "base/timer/timer.h"
|
| +#include "content/common/content_export.h"
|
| #include "content/public/renderer/render_frame_observer.h"
|
| #include "media/blink/webmediaplayer_delegate.h"
|
|
|
| @@ -19,7 +24,7 @@ namespace media {
|
|
|
| // An interface to allow a WebMediaPlayerImpl to communicate changes of state
|
| // to objects that need to know.
|
| -class RendererWebMediaPlayerDelegate
|
| +class CONTENT_EXPORT RendererWebMediaPlayerDelegate
|
| : public content::RenderFrameObserver,
|
| public WebMediaPlayerDelegate,
|
| public base::SupportsWeakPtr<RendererWebMediaPlayerDelegate> {
|
| @@ -47,6 +52,12 @@ class RendererWebMediaPlayerDelegate
|
| void WasShown() override;
|
| bool OnMessageReceived(const IPC::Message& msg) override;
|
|
|
| + // Sets |idle_cleanup_enabled_| to true, zeros out |idle_cleanup_interval_|,
|
| + // and sets |idle_timeout_| to |idle_timeout|. A zero cleanup interval will
|
| + // cause the idle timer to run with each run of the message loop.
|
| + void EnableInstantIdleCleanupForTesting(base::TimeDelta idle_timeout,
|
| + base::TickClock* tick_clock);
|
| +
|
| private:
|
| void OnMediaDelegatePause(int delegate_id);
|
| void OnMediaDelegatePlay(int delegate_id);
|
| @@ -54,9 +65,40 @@ class RendererWebMediaPlayerDelegate
|
| void OnMediaDelegateVolumeMultiplierUpdate(int delegate_id,
|
| double multiplier);
|
|
|
| + // Adds or removes a delegate from |idle_delegate_map_|. The first insertion
|
| + // or last removal will start or stop |idle_cleanup_timer_| respectively.
|
| + void AddIdleDelegate(int delegate_id);
|
| + void RemoveIdleDelegate(int delegate_id);
|
| +
|
| + // Runs periodically to suspend idle delegates in |idle_delegate_map_|.
|
| + void CleanupIdleDelegates();
|
| +
|
| bool has_played_media_ = false;
|
| IDMap<Observer> id_map_;
|
|
|
| + // Tracks which delegates have entered an idle state. After some period of
|
| + // inactivity these players will be suspended to release unused resources.
|
| + bool idle_cleanup_running_ = false;
|
| + std::map<int, base::TimeTicks> idle_delegate_map_;
|
| + base::RepeatingTimer idle_cleanup_timer_;
|
| +
|
| + // Controls whether cleanup of idle delegates is enabled or not as well as the
|
| + // polling interval and timeout period for delegates; overridden for testing.
|
| + bool idle_cleanup_enabled_ = false;
|
| +
|
| + // Amount of time allowed to elapse after a delegate enters the paused before
|
| + // the delegate is suspended.
|
| + base::TimeDelta idle_timeout_;
|
| +
|
| + // The polling interval used for checking the delegates to see if any have
|
| + // exceeded |idle_timeout_| since their last pause state.
|
| + base::TimeDelta idle_cleanup_interval_;
|
| +
|
| + // Clock used for calculating when delegates have expired. May be overridden
|
| + // for testing.
|
| + scoped_ptr<base::DefaultTickClock> default_tick_clock_;
|
| + base::TickClock* tick_clock_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(RendererWebMediaPlayerDelegate);
|
| };
|
|
|
|
|