Bug 1314445 - Update tests for CDM request notifications to reflect new behaviour. r=gerald draft
authorChris Pearce <cpearce@mozilla.com>
Wed, 02 Nov 2016 16:14:16 +1300
changeset 432845 854c1c267b44565da2ddec9b98ce83415d315488
parent 432844 09a5b25939bf0f29ee23669c887fd24eff9cd810
child 535772 4e1dfb442d151822871f2e66e08ff19b33f900af
push id34444
push usercpearce@mozilla.com
push dateWed, 02 Nov 2016 22:51:27 +0000
reviewersgerald
bugs1314445
milestone52.0a1
Bug 1314445 - Update tests for CDM request notifications to reflect new behaviour. r=gerald MozReview-Commit-ID: JgKMFHW2al3
dom/media/test/test_eme_request_notifications.html
--- a/dom/media/test/test_eme_request_notifications.html
+++ b/dom/media/test/test_eme_request_notifications.html
@@ -7,82 +7,73 @@
   <script type="text/javascript" src="manifest.js"></script>
   <script type="text/javascript" src="eme.js"></script>
 </head>
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 var manager = new MediaTestManager;
 
-var observedStatus = "nothing";
-
-var observer = function(subject, topic, data) {
-  observedStatus = JSON.parse(data).status;
-  info("Observed: " + observedStatus);
-};
-SpecialPowers.Services.obs.addObserver(observer, "mediakeys-request", false);
-
-SimpleTest.registerCleanupFunction(function() {
-  SpecialPowers.Services.obs.removeObserver(observer, "mediakeys-request");
-});
-
 function SetPrefs(prefs) {
   return new Promise(function(resolve, reject) {
     SpecialPowers.pushPrefEnv({"set": prefs}, function() { resolve(); });
   });
 }
 
+function observe() {
+  return new Promise(function(resolve, reject) {
+    var observer = function(subject, topic, data) {
+      SpecialPowers.Services.obs.removeObserver(observer, "mediakeys-request");
+      resolve(JSON.parse(data).status);
+    };
+    SpecialPowers.Services.obs.addObserver(observer, "mediakeys-request", false);
+  });
+}
+
 function Test(test) {
   var p = test.prefs ? SetPrefs(test.prefs) : Promise.resolve();
   observedStatus = "nothing";
   var name = "'" + test.keySystem + "'";
-  return p.then(function() {
-    return new Promise(function(resolve, reject) {
-      navigator.requestMediaKeySystemAccess(test.keySystem, gCencMediaKeySystemConfig)
-      .then(
-        function(keySystemAccess) {
-          return keySystemAccess.createMediaKeys();
-        })
-      .then(
-        function(mediaKeys) {
-          ok(test.shouldPass, name + " passed and was expected to " + (test.shouldPass ? "pass" : "fail"));
-          is(observedStatus, test.expectedStatus, name + " observer service result");
-          resolve();
-        }
-      )
-      .catch(
-        function() {
-          ok(!test.shouldPass, name + " failed and was expected to " + (test.shouldPass ? "pass" : "fail"));
-          is(observedStatus, test.expectedStatus, name + " observer service result");
-          resolve();
-        }
-      );
-    });
+
+  var res = observe().then((status) => {
+    is(status, test.expectedStatus, name + " expected status");
   });
+
+  p.then(() => navigator.requestMediaKeySystemAccess(test.keySystem, gCencMediaKeySystemConfig))
+   .then((keySystemAccess) => keySystemAccess.createMediaKeys());
+
+  return res;
 }
 
 var tests = [
   {
     keySystem: CLEARKEY_KEYSYSTEM,
-    shouldPass: true,
     expectedStatus: 'cdm-created',
     prefs: [["media.eme.enabled", false]]
   },
   {
-    keySystem: CLEARKEY_KEYSYSTEM + '.10000', // A stupendously high min CDM version, presumably not installed.
-    shouldPass: false,
-    expectedStatus: 'cdm-insufficient-version',
-    prefs: [["media.eme.enabled", true]]
+    keySystem: "com.widevine.alpha",
+    expectedStatus: 'api-disabled',
+    prefs: [["media.eme.enabled", false]]
+  },
+  {
+    keySystem: "com.widevine.alpha",
+    expectedStatus: 'cdm-disabled',
+    prefs: [["media.eme.enabled", true], ["media.gmp-widevinecdm.enabled", false]]
+  },
+  {
+    keySystem: "com.widevine.alpha",
+    expectedStatus: 'cdm-not-installed',
+    prefs: [["media.eme.enabled", true], , ["media.gmp-widevinecdm.enabled", true]]
   },
   {
     keySystem: CLEARKEY_KEYSYSTEM,
-    shouldPass: true,
     expectedStatus: 'cdm-created',
     prefs: [["media.eme.enabled", true]]
-  },
+  }
 ];
 
 SetupEMEPref(function() {
   tests.reduce(function(p,c,i,array) {
     return p.then(function() { return Test(c); });
   }, Promise.resolve()).then(SimpleTest.finish);
 });