Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / web / WebMediaPlayerClientImpl.h
index 7999757..7e71cb2 100644 (file)
 #include "platform/graphics/media/MediaPlayer.h"
 #include "public/platform/WebAudioSourceProviderClient.h"
 #include "public/platform/WebMediaPlayerClient.h"
-#include "third_party/khronos/GLES2/gl2.h"
-#if OS(ANDROID)
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "third_party/skia/include/core/SkRefCnt.h"
-#include "third_party/skia/include/gpu/GrTexture.h"
-#endif
 #include "platform/weborigin/KURL.h"
 #include "wtf/OwnPtr.h"
 #include "wtf/PassOwnPtr.h"
 #include "wtf/ThreadingPrimitives.h"
 
-namespace WebCore {
-class AudioSourceProviderClient;
-class HTMLMediaElement;
-}
-
 namespace blink {
 
+class AudioSourceProviderClient;
+class HTMLMediaElement;
 class WebAudioSourceProvider;
 class WebContentDecryptionModule;
 class WebMediaPlayer;
-class WebGraphicsContext3D;
 
-// This class serves as a bridge between WebCore::MediaPlayer and
-// blink::WebMediaPlayer.
-class WebMediaPlayerClientImpl FINAL : public WebCore::MediaPlayer, public WebMediaPlayerClient {
+// This class serves as a bridge between MediaPlayer and
+// WebMediaPlayer.
+class WebMediaPlayerClientImpl FINAL : public MediaPlayer, public WebMediaPlayerClient {
 
 public:
-    static PassOwnPtr<WebCore::MediaPlayer> create(WebCore::MediaPlayerClient*);
+    static PassOwnPtr<MediaPlayer> create(MediaPlayerClient*);
 
     virtual ~WebMediaPlayerClientImpl();
 
@@ -74,9 +64,7 @@ public:
     virtual void repaint() OVERRIDE;
     virtual void durationChanged() OVERRIDE;
     virtual void sizeChanged() OVERRIDE;
-    virtual double volume() const OVERRIDE;
     virtual void playbackStateChanged() OVERRIDE;
-    virtual WebMediaPlayer::Preload preload() const OVERRIDE;
 
     // WebEncryptedMediaPlayerClient methods:
     virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) OVERRIDE;
@@ -98,57 +86,27 @@ public:
     // MediaPlayer methods:
     virtual WebMediaPlayer* webMediaPlayer() const OVERRIDE;
     virtual void load(WebMediaPlayer::LoadType, const WTF::String& url, WebMediaPlayer::CORSMode) OVERRIDE;
-    virtual void play() OVERRIDE;
-    virtual void pause() OVERRIDE;
-    virtual bool supportsSave() const OVERRIDE;
-    virtual double duration() const OVERRIDE;
-    virtual double currentTime() const OVERRIDE;
-    virtual void seek(double time) OVERRIDE;
-    virtual bool seeking() const OVERRIDE;
-    virtual double rate() const OVERRIDE;
-    virtual void setRate(double) OVERRIDE;
-    virtual bool paused() const OVERRIDE;
-    virtual void setPoster(const WebCore::KURL&) OVERRIDE;
-    virtual WebCore::MediaPlayer::NetworkState networkState() const OVERRIDE;
-    virtual double maxTimeSeekable() const OVERRIDE;
-    virtual WTF::PassRefPtr<WebCore::TimeRanges> buffered() const OVERRIDE;
-    virtual bool didLoadingProgress() const OVERRIDE;
-    virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&) OVERRIDE;
-    virtual bool copyVideoTextureToPlatformTexture(WebGraphicsContext3D*, Platform3DObject texture, GLint level, GLenum type, GLenum internalFormat, bool premultiplyAlpha, bool flipY) OVERRIDE;
-    virtual void setPreload(WebCore::MediaPlayer::Preload) OVERRIDE;
-    virtual bool hasSingleSecurityOrigin() const OVERRIDE;
-    virtual double mediaTimeForTimeValue(double timeValue) const OVERRIDE;
+    virtual void setPreload(MediaPlayer::Preload) OVERRIDE;
 
 #if ENABLE(WEB_AUDIO)
-    virtual WebCore::AudioSourceProvider* audioSourceProvider() OVERRIDE;
+    virtual AudioSourceProvider* audioSourceProvider() OVERRIDE;
 #endif
 
 private:
-    explicit WebMediaPlayerClientImpl(WebCore::MediaPlayerClient*);
+    explicit WebMediaPlayerClientImpl(MediaPlayerClient*);
 
-    WebCore::HTMLMediaElement& mediaElement() const;
+    HTMLMediaElement& mediaElement() const;
 
-    WebCore::MediaPlayerClient* m_client;
+    MediaPlayerClient* m_client;
     OwnPtr<WebMediaPlayer> m_webMediaPlayer;
-    WebCore::MediaPlayer::Preload m_preload;
-    double m_rate;
-
-#if OS(ANDROID)
-    // FIXME: This path "only works" on Android. It is a workaround for the problem that Skia could not handle Android's GL_TEXTURE_EXTERNAL_OES
-    // texture internally. It should be removed and replaced by the normal paint path.
-    // https://code.google.com/p/skia/issues/detail?id=1189
-    void paintOnAndroid(WebCore::GraphicsContext*, const WebCore::IntRect&, uint8_t alpha);
-    SkBitmap m_bitmap;
-    bool m_usePaintOnAndroid;
-#endif
 
 #if ENABLE(WEB_AUDIO)
     // AudioClientImpl wraps an AudioSourceProviderClient.
     // When the audio format is known, Chromium calls setFormat() which then dispatches into WebCore.
 
-    class AudioClientImpl FINAL : public blink::WebAudioSourceProviderClient {
+    class AudioClientImpl FINAL : public NoBaseWillBeGarbageCollectedFinalized<AudioClientImpl>, public WebAudioSourceProviderClient {
     public:
-        AudioClientImpl(WebCore::AudioSourceProviderClient* client)
+        explicit AudioClientImpl(AudioSourceProviderClient* client)
             : m_client(client)
         {
         }
@@ -158,14 +116,16 @@ private:
         // WebAudioSourceProviderClient
         virtual void setFormat(size_t numberOfChannels, float sampleRate) OVERRIDE;
 
+        void trace(Visitor*);
+
     private:
-        WebCore::AudioSourceProviderClient* m_client;
+        RawPtrWillBeMember<AudioSourceProviderClient> m_client;
     };
 
     // AudioSourceProviderImpl wraps a WebAudioSourceProvider.
     // provideInput() calls into Chromium to get a rendered audio stream.
 
-    class AudioSourceProviderImpl FINAL : public WebCore::AudioSourceProvider {
+    class AudioSourceProviderImpl FINAL : public AudioSourceProvider {
     public:
         AudioSourceProviderImpl()
             : m_webAudioSourceProvider(0)
@@ -177,13 +137,13 @@ private:
         // Wraps the given WebAudioSourceProvider.
         void wrap(WebAudioSourceProvider*);
 
-        // WebCore::AudioSourceProvider
-        virtual void setClient(WebCore::AudioSourceProviderClient*) OVERRIDE;
-        virtual void provideInput(WebCore::AudioBus*, size_t framesToProcess) OVERRIDE;
+        // AudioSourceProvider
+        virtual void setClient(AudioSourceProviderClient*) OVERRIDE;
+        virtual void provideInput(AudioBus*, size_t framesToProcess) OVERRIDE;
 
     private:
         WebAudioSourceProvider* m_webAudioSourceProvider;
-        OwnPtr<AudioClientImpl> m_client;
+        OwnPtrWillBePersistent<AudioClientImpl> m_client;
         Mutex provideInputLock;
     };