Bug 1315850 - Create ChromiumCDMProxy in MediaKeys.cpp when preffed on. r=gerald draft
authorChris Pearce <cpearce@mozilla.com>
Wed, 22 Feb 2017 14:42:55 +1300
changeset 504160 76937006b9e424f2588e7d06f8f7b0c3a68b5af2
parent 504159 df41a20a0fefaf26a63ed18f1ccdf7fa5a3a1e89
child 504161 68ce766bede0f5c8e41de3a3f9e46b6ef88cab96
push id50748
push userbmo:cpearce@mozilla.com
push dateFri, 24 Mar 2017 01:10:17 +0000
reviewersgerald
bugs1315850
milestone55.0a1
Bug 1315850 - Create ChromiumCDMProxy in MediaKeys.cpp when preffed on. r=gerald MozReview-Commit-ID: G37QlP74esb
dom/media/eme/MediaKeys.cpp
dom/media/gmp/GMPMessageUtils.h
--- a/dom/media/eme/MediaKeys.cpp
+++ b/dom/media/eme/MediaKeys.cpp
@@ -27,16 +27,17 @@
 #endif
 #ifdef XP_WIN
 #include "mozilla/WindowsVersion.h"
 #endif
 #include "nsContentCID.h"
 #include "nsServiceManagerUtils.h"
 #include "mozilla/dom/MediaKeySystemAccess.h"
 #include "nsPrintfCString.h"
+#include "ChromiumCDMProxy.h"
 
 namespace mozilla {
 
 namespace dom {
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(MediaKeys,
                                       mElement,
                                       mParent,
@@ -338,22 +339,33 @@ MediaKeys::CreateCDMProxy(nsIEventTarget
     proxy = new MediaDrmCDMProxy(this,
                                  mKeySystem,
                                  mConfig.mDistinctiveIdentifier == MediaKeysRequirement::Required,
                                  mConfig.mPersistentState == MediaKeysRequirement::Required,
                                  aMainThread);
   } else
 #endif
   {
-    proxy = new GMPCDMProxy(this,
-                            mKeySystem,
-                            new MediaKeysGMPCrashHelper(this),
-                            mConfig.mDistinctiveIdentifier == MediaKeysRequirement::Required,
-                            mConfig.mPersistentState == MediaKeysRequirement::Required,
-                            aMainThread);
+    if (MediaPrefs::EMEChromiumAPIEnabled()) {
+      proxy = new ChromiumCDMProxy(
+        this,
+        mKeySystem,
+        new MediaKeysGMPCrashHelper(this),
+        mConfig.mDistinctiveIdentifier == MediaKeysRequirement::Required,
+        mConfig.mPersistentState == MediaKeysRequirement::Required,
+        aMainThread);
+    } else {
+      proxy = new GMPCDMProxy(
+        this,
+        mKeySystem,
+        new MediaKeysGMPCrashHelper(this),
+        mConfig.mDistinctiveIdentifier == MediaKeysRequirement::Required,
+        mConfig.mPersistentState == MediaKeysRequirement::Required,
+        aMainThread);
+    }
   }
   return proxy.forget();
 }
 
 already_AddRefed<DetailedPromise>
 MediaKeys::Init(ErrorResult& aRv)
 {
   RefPtr<DetailedPromise> promise(MakePromise(aRv,
--- a/dom/media/gmp/GMPMessageUtils.h
+++ b/dom/media/gmp/GMPMessageUtils.h
@@ -4,16 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef GMPMessageUtils_h_
 #define GMPMessageUtils_h_
 
 #include "gmp-video-codec.h"
 #include "gmp-video-frame-encoded.h"
 #include "gmp-decryption.h"
+#include "IPCMessageUtils.h"
 
 namespace IPC {
 
 template <>
 struct ParamTraits<GMPErr>
 : public ContiguousEnumSerializer<GMPErr,
                                   GMPNoErr,
                                   GMPLastErr>