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
--- 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;