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