Unreviewed, rolling out r119125.
[WebKit-https.git] / Source / WebKit / chromium / public / WebMediaPlayer.h
index 6be3ced..3312f5f 100644 (file)
 #ifndef WebMediaPlayer_h
 #define WebMediaPlayer_h
 
+#include "WebTimeRange.h"
 #include "WebVideoFrame.h"
 #include "platform/WebCanvas.h"
-#include "platform/WebVector.h"
+#include "platform/WebString.h"
 
 namespace WebKit {
 
@@ -41,57 +42,62 @@ class WebAudioSourceProvider;
 class WebAudioSourceProviderClient;
 class WebMediaPlayerClient;
 class WebStreamTextureClient;
+class WebString;
 class WebURL;
 struct WebRect;
 struct WebSize;
 
-struct WebTimeRange {
-    WebTimeRange() : start(0), end(0) {}
-    WebTimeRange(float s, float e) : start(s), end(e) {}
-
-    float start;
-    float end;
-};
-
-typedef WebVector<WebTimeRange> WebTimeRanges;
-
 class WebMediaPlayer {
 public:
     enum NetworkState {
-        Empty,
-        Idle,
-        Loading,
-        Loaded,
-        FormatError,
-        NetworkError,
-        DecodeError,
+        NetworkStateEmpty,
+        NetworkStateIdle,
+        NetworkStateLoading,
+        NetworkStateLoaded,
+        NetworkStateFormatError,
+        NetworkStateNetworkError,
+        NetworkStateDecodeError,
     };
 
     enum ReadyState {
-        HaveNothing,
-        HaveMetadata,
-        HaveCurrentData,
-        HaveFutureData,
-        HaveEnoughData,
+        ReadyStateHaveNothing,
+        ReadyStateHaveMetadata,
+        ReadyStateHaveCurrentData,
+        ReadyStateHaveFutureData,
+        ReadyStateHaveEnoughData,
     };
 
     enum MovieLoadType {
-        Unknown,
-        Download,
-        StoredStream,
-        LiveStream,
+        MovieLoadTypeUnknown,
+        MovieLoadTypeDownload,
+        MovieLoadTypeStoredStream,
+        MovieLoadTypeLiveStream,
     };
 
     enum Preload {
-        None,
-        MetaData,
-        Auto,
+        PreloadNone,
+        PreloadMetaData,
+        PreloadAuto,
+    };
+
+    enum AddIdStatus {
+        AddIdStatusOk,
+        AddIdStatusNotSupported,
+        AddIdStatusReachedIdLimit
     };
 
     enum EndOfStreamStatus {
-        EosNoError,
-        EosNetworkError,
-        EosDecodeError,
+        EndOfStreamStatusNoError,
+        EndOfStreamStatusNetworkError,
+        EndOfStreamStatusDecodeError,
+    };
+
+    // Represents synchronous exceptions that can be thrown from the Encrypted
+    // Media methods. This is different from the asynchronous MediaKeyError.
+    enum MediaKeyException {
+        MediaKeyExceptionNoError,
+        MediaKeyExceptionInvalidPlayerState,
+        MediaKeyExceptionKeySystemNotSupported,
     };
 
     virtual ~WebMediaPlayer() {}
@@ -167,8 +173,25 @@ public:
 
     virtual WebAudioSourceProvider* audioSourceProvider() { return 0; }
 
-    virtual bool sourceAppend(const unsigned char* data, unsigned length) { return false; }
+    virtual AddIdStatus sourceAddId(const WebString& id, const WebString& type,
+                                    const WebVector<WebString>& codecs) { return AddIdStatusNotSupported; }
+    virtual bool sourceRemoveId(const WebString& id) { return false; }
+    virtual WebTimeRanges sourceBuffered(const WebString& id) { return WebTimeRanges(); };
+    virtual bool sourceAppend(const WebString& id, const unsigned char* data, unsigned length) { return false; }
+    virtual bool sourceAbort(const WebString& id) { return false; }
     virtual void sourceEndOfStream(EndOfStreamStatus)  { }
+
+    // Returns whether keySystem is supported. If true, the result will be
+    // reported by an event.
+    virtual MediaKeyException generateKeyRequest(const WebString& keySystem, const unsigned char* initData, unsigned initDataLength) { return MediaKeyExceptionKeySystemNotSupported; }
+    virtual MediaKeyException addKey(const WebString& keySystem, const unsigned char* key, unsigned keyLength, const unsigned char* initData, unsigned initDataLength, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
+    virtual MediaKeyException cancelKeyRequest(const WebString& keySystem, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
+
+    // Instruct WebMediaPlayer to enter/exit fullscreen.
+    virtual void enterFullscreen() { }
+    virtual void exitFullscreen() { }
+    // Returns true if the player can enter fullscreen.
+    virtual bool canEnterFullscreen() const { return false; }
 };
 
 } // namespace WebKit