| Index: webkit/media/android/webmediaplayer_android.h | 
| diff --git a/webkit/media/android/webmediaplayer_android.h b/webkit/media/android/webmediaplayer_android.h | 
| index ef535204edb9e3584e65e44b6bd42cc459e23d1f..fb5fae1adcf08368e30f8489b3e0ec9803d0373e 100644 | 
| --- a/webkit/media/android/webmediaplayer_android.h | 
| +++ b/webkit/media/android/webmediaplayer_android.h | 
| @@ -8,9 +8,11 @@ | 
| #include <jni.h> | 
|  | 
| #include "base/basictypes.h" | 
| -#include "base/message_loop.h" | 
| +#include "base/memory/ref_counted.h" | 
| #include "base/memory/scoped_ptr.h" | 
| +#include "base/message_loop.h" | 
| #include "base/time.h" | 
| +#include "cc/layers/video_frame_provider.h" | 
| #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h" | 
| #include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h" | 
| @@ -19,6 +21,10 @@ namespace WebKit { | 
| class WebVideoFrame; | 
| } | 
|  | 
| +namespace webkit { | 
| +class WebLayerImpl; | 
| +} | 
| + | 
| namespace webkit_media { | 
|  | 
| class StreamTextureFactory; | 
| @@ -30,6 +36,9 @@ class WebVideoFrameImpl; | 
| // WebKit::WebMediaPlayer on Android. | 
| class WebMediaPlayerAndroid | 
| : public WebKit::WebMediaPlayer, | 
| +#ifdef REMOVE_WEBVIDEOFRAME | 
| +      public cc::VideoFrameProvider, | 
| +#endif | 
| public MessageLoop::DestructionObserver { | 
| public: | 
| // Resource loading. | 
| @@ -94,6 +103,7 @@ class WebMediaPlayerAndroid | 
| virtual unsigned audioDecodedByteCount() const; | 
| virtual unsigned videoDecodedByteCount() const; | 
|  | 
| +#ifndef REMOVE_WEBVIDEOFRAME | 
| // Methods called from VideoLayerChromium. These methods are running on the | 
| // compositor thread. | 
| virtual WebKit::WebVideoFrame* getCurrentFrame(); | 
| @@ -102,6 +112,15 @@ class WebMediaPlayerAndroid | 
| // This gets called both on compositor and main thread to set the callback | 
| // target when a frame is produced. | 
| virtual void setStreamTextureClient(WebKit::WebStreamTextureClient* client); | 
| +#else | 
| +  // cc::VideoFrameProvider implementation. These methods are running on the | 
| +  // compositor thread. | 
| +  virtual void SetVideoFrameProviderClient( | 
| +      cc::VideoFrameProvider::Client* client) OVERRIDE; | 
| +  virtual scoped_refptr<media::VideoFrame> GetCurrentFrame() OVERRIDE; | 
| +  virtual void PutCurrentFrame(const scoped_refptr<media::VideoFrame>& frame) | 
| +      OVERRIDE; | 
| +#endif | 
|  | 
| // Media player callback handlers. | 
| virtual void OnMediaPrepared(base::TimeDelta duration); | 
| @@ -195,8 +214,8 @@ class WebMediaPlayerAndroid | 
| // Size of the video. | 
| WebKit::WebSize natural_size_; | 
|  | 
| -  // The video frame object used for renderering by WebKit. | 
| -  scoped_ptr<WebVideoFrameImpl> web_video_frame_; | 
| +  // The video frame object used for rendering by the compositor. | 
| +  scoped_refptr<media::VideoFrame> current_frame_; | 
|  | 
| // Message loop for main renderer thread. | 
| MessageLoop* main_loop_; | 
| @@ -251,6 +270,12 @@ class WebMediaPlayerAndroid | 
| // Whether media player needs external surface. | 
| bool needs_external_surface_; | 
|  | 
| +  // A pointer back to the compositor to inform it about state changes. This is | 
| +  // not NULL while the compositor is actively using this webmediaplayer. | 
| +  cc::VideoFrameProvider::Client* video_frame_provider_client_; | 
| + | 
| +  scoped_ptr<webkit::WebLayerImpl> video_weblayer_; | 
| + | 
| DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerAndroid); | 
| }; | 
|  | 
|  |