DocumentLoader::timing() should return a reference.
[WebKit-https.git] / Source / WebCore / Modules / encryptedmedia / MediaKeys.h
index a870083..be6f3a8 100644 (file)
 
 #if ENABLE(ENCRYPTED_MEDIA_V2)
 
+#include "CDM.h"
 #include "EventTarget.h"
 #include "ExceptionCode.h"
-#include <wtf/OwnPtr.h>
+#include <runtime/Uint8Array.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
-#include <wtf/Uint8Array.h>
 #include <wtf/Vector.h>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
-class CDM;
 class MediaKeySession;
+class HTMLMediaElement;
 
-class MediaKeys : public RefCounted<MediaKeys> {
+class MediaKeys : public RefCounted<MediaKeys>, public CDMClient {
 public:
     static PassRefPtr<MediaKeys> create(const String& keySystem, ExceptionCode&);
-    ~MediaKeys();
+    virtual ~MediaKeys();
 
     PassRefPtr<MediaKeySession> createSession(ScriptExecutionContext*, const String& mimeType, Uint8Array* initData, ExceptionCode&);
 
+    static bool isTypeSupported(const String& keySystem, const String& mimeType);
+
     const String& keySystem() const { return m_keySystem; }
     CDM* cdm() { return m_cdm.get(); }
 
+    HTMLMediaElement* mediaElement() const { return m_mediaElement; }
+    void setMediaElement(HTMLMediaElement*);
+
 protected:
-    MediaKeys(const String& keySystem, PassOwnPtr<CDM>);
+    // CDMClient:
+    virtual MediaPlayer* cdmMediaPlayer(const CDM*) const override;
+
+    MediaKeys(const String& keySystem, std::unique_ptr<CDM>);
 
-    Vector<RefPtr<MediaKeySession> > m_sessions;
+    Vector<RefPtr<MediaKeySession>> m_sessions;
 
+    HTMLMediaElement* m_mediaElement;
     String m_keySystem;
-    OwnPtr<CDM> m_cdm;
+    std::unique_ptr<CDM> m_cdm;
 };
 
 }