| Index: media/base/android/media_player_listener.h
|
| diff --git a/media/base/android/media_player_listener.h b/media/base/android/media_player_listener.h
|
| index 018a5d618fde11441e4c77044caf6dd50331a58b..513a400f463ef0f5129ffe5a3d63ef9aab99274e 100644
|
| --- a/media/base/android/media_player_listener.h
|
| +++ b/media/base/android/media_player_listener.h
|
| @@ -19,6 +19,32 @@ namespace media {
|
|
|
| class MediaPlayerAndroid;
|
|
|
| +// Helper class for posting MediaPlayerAndroid tasks on the UI thread.
|
| +class MediaPlayerListenerProxy
|
| + : public base::RefCountedThreadSafe<MediaPlayerListenerProxy> {
|
| + public:
|
| + MediaPlayerListenerProxy(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| + base::WeakPtr<MediaPlayerAndroid> media_player);
|
| + void OnMediaError(int error_type);
|
| + void OnVideoSizeChanged(int width, int height);
|
| + void OnBufferingUpdate(int percent);
|
| + void OnPlaybackComplete();
|
| + void OnSeekComplete();
|
| + void OnMediaPrepared();
|
| + void OnMediaInterrupted();
|
| +
|
| + private:
|
| + friend class base::RefCountedThreadSafe<MediaPlayerListenerProxy>;
|
| + ~MediaPlayerListenerProxy();
|
| +
|
| + // The message loop where |media_player_| lives.
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| +
|
| + // The MediaPlayerAndroid object all the callbacks should be sent to.
|
| + base::WeakPtr<MediaPlayerAndroid> media_player_;
|
| +};
|
| +
|
| // Acts as a thread proxy between java MediaPlayerListener object and
|
| // MediaPlayerAndroid so that callbacks are posted onto the UI thread.
|
| class MediaPlayerListener {
|
| @@ -29,7 +55,7 @@ class MediaPlayerListener {
|
| MediaPlayerListener(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| base::WeakPtr<MediaPlayerAndroid> media_player);
|
| - virtual ~MediaPlayerListener();
|
| + virtual ~MediaPlayerListener();
|
|
|
| // Called by the Java MediaPlayerListener and mirrored to corresponding
|
| // callbacks.
|
| @@ -52,11 +78,8 @@ class MediaPlayerListener {
|
| static bool RegisterMediaPlayerListener(JNIEnv* env);
|
|
|
| private:
|
| - // The message loop where |media_player_| lives.
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| -
|
| - // The MediaPlayerAndroid object all the callbacks should be sent to.
|
| - base::WeakPtr<MediaPlayerAndroid> media_player_;
|
| + // Proxy for posting tasks to the UI thread.
|
| + scoped_refptr<MediaPlayerListenerProxy> proxy_;
|
|
|
| base::android::ScopedJavaGlobalRef<jobject> j_media_player_listener_;
|
|
|
|
|