Bug 1315850 - Add CDMProxy::AsChromiumCDMProxy(). r=gerald draft
authorChris Pearce <cpearce@mozilla.com>
Thu, 15 Dec 2016 11:32:03 +1300
changeset 504168 3821c378c73067066f3cc67499680bdf546fb4f0
parent 504167 90de89bec9b004859c3c2c09ed8efbd255acc141
child 504169 6c5a3706b37e122a67e5ec1670587f37e25a1bc6
push id50748
push userbmo:cpearce@mozilla.com
push dateFri, 24 Mar 2017 01:10:17 +0000
reviewersgerald
bugs1315850
milestone55.0a1
Bug 1315850 - Add CDMProxy::AsChromiumCDMProxy(). r=gerald This means the EME PDM implementation can safely tell when a CDMProxy is a ChromiumCDMProxy, so we can create an appropriate MediaDataDecoder for it (in the next patch). MozReview-Commit-ID: CpL6QRa7SwJ
dom/media/eme/CDMProxy.h
dom/media/gmp/ChromiumCDMProxy.h
--- a/dom/media/eme/CDMProxy.h
+++ b/dom/media/eme/CDMProxy.h
@@ -12,16 +12,17 @@
 
 #include "mozilla/dom/MediaKeyMessageEvent.h"
 #include "mozilla/dom/MediaKeys.h"
 
 #include "nsIThread.h"
 
 namespace mozilla {
 class MediaRawData;
+class ChromiumCDMProxy;
 
 enum DecryptStatus {
   Ok = 0,
   GenericErr = 1,
   NoKeyErr = 2,
   AbortedErr = 3,
 };
 
@@ -218,16 +219,18 @@ public:
                                      nsTArray<nsCString>& aSessionIds) = 0;
 
 #ifdef DEBUG
   virtual bool IsOnOwnerThread() = 0;
 #endif
 
   virtual uint32_t GetDecryptorId() { return 0; }
 
+  virtual ChromiumCDMProxy* AsChromiumCDMProxy() { return nullptr; }
+
 protected:
   virtual ~CDMProxy() {}
 
   // Helper to enforce that a raw pointer is only accessed on the main thread.
   template<class Type>
   class MainThreadOnlyRawPtr {
   public:
     explicit MainThreadOnlyRawPtr(Type* aPtr)
--- a/dom/media/gmp/ChromiumCDMProxy.h
+++ b/dom/media/gmp/ChromiumCDMProxy.h
@@ -102,16 +102,18 @@ public:
 
   void GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId,
                              nsTArray<nsCString>& aSessionIds) override;
 
 #ifdef DEBUG
   bool IsOnOwnerThread() override;
 #endif
 
+  ChromiumCDMProxy* AsChromiumCDMProxy() override { return this; }
+
 private:
   void OnCDMCreated(uint32_t aPromiseId);
 
   ~ChromiumCDMProxy();
 
   GMPCrashHelper* mCrashHelper;
 
   RefPtr<gmp::ChromiumCDMParent> mCDM;