Index: media/base/android/media_player_android.h |
diff --git a/media/base/android/media_player_android.h b/media/base/android/media_player_android.h |
index fd558a1dd854c2e4d58de3c1af47f904f5b1c4c8..cd5a92f18e1239fca5f9fa2df61e1e4771a303c2 100644 |
--- a/media/base/android/media_player_android.h |
+++ b/media/base/android/media_player_android.h |
@@ -9,7 +9,9 @@ |
#include <string> |
#include "base/callback.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/time/time.h" |
+#include "media/base/android/media_player_listener.h" |
#include "media/base/media_export.h" |
#include "ui/gl/android/scoped_java_surface.h" |
#include "url/gurl.h" |
@@ -83,11 +85,31 @@ class MEDIA_EXPORT MediaPlayerAndroid { |
const RequestMediaResourcesCB& request_media_resources_cb, |
const GURL& frame_url); |
+ // TODO(qinmin): Simplify the MediaPlayerListener class to only listen to |
+ // media interrupt events. And have a separate child class to listen to all |
+ // the events needed by MediaPlayerBridge. http://crbug.com/422597. |
+ // MediaPlayerListener callbacks. |
+ virtual void OnVideoSizeChanged(int width, int height); |
+ virtual void OnMediaError(int error_type); |
+ virtual void OnBufferingUpdate(int percent); |
+ virtual void OnPlaybackComplete(); |
+ virtual void OnMediaInterrupted(); |
+ virtual void OnSeekComplete(); |
+ virtual void OnMediaPrepared(); |
+ |
+ // Attach/Detaches |listener_| for listening to all the media events. If |
+ // |j_media_player| is NULL, |listener_| only listens to the system media |
+ // events. Otherwise, it also listens to the events from |j_media_player|. |
+ void AttachListener(jobject j_media_player); |
+ void DetachListener(); |
+ |
MediaPlayerManager* manager() { return manager_; } |
RequestMediaResourcesCB request_media_resources_cb_; |
private: |
+ friend class MediaPlayerListener; |
+ |
// Player ID assigned to this player. |
int player_id_; |
@@ -97,6 +119,13 @@ class MEDIA_EXPORT MediaPlayerAndroid { |
// Url for the frame that contains this player. |
GURL frame_url_; |
+ // Listener object that listens to all the media player events. |
+ scoped_ptr<MediaPlayerListener> listener_; |
+ |
+ // Weak pointer passed to |listener_| for callbacks. |
+ // NOTE: Weak pointers must be invalidated before all other member variables. |
+ base::WeakPtrFactory<MediaPlayerAndroid> weak_factory_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MediaPlayerAndroid); |
}; |