diff --git a/dom/media/test/mochitest.ini b/dom/media/test/mochitest.ini index c58988e62483..0d82a3639fab 100644 --- a/dom/media/test/mochitest.ini +++ b/dom/media/test/mochitest.ini @@ -619,7 +619,7 @@ skip-if = (os == 'win' && os_version == '5.1') || (os != 'win' && toolkit != 'go [test_eme_session_callable_value.html] [test_eme_canvas_blocked.html] skip-if = toolkit == 'android' # bug 1149374 -[test_eme_key_ids_initdata.html] +[test_eme_initDataTypes.html] skip-if = toolkit == 'android' # bug 1149374 [test_eme_non_mse_fails.html] skip-if = toolkit == 'android' # bug 1149374 diff --git a/dom/media/test/test_eme_key_ids_initdata.html b/dom/media/test/test_eme_initDataTypes.html similarity index 77% rename from dom/media/test/test_eme_key_ids_initdata.html rename to dom/media/test/test_eme_initDataTypes.html index ba688648d9de..c8805a4ce106 100644 --- a/dom/media/test/test_eme_key_ids_initdata.html +++ b/dom/media/test/test_eme_initDataTypes.html @@ -14,6 +14,7 @@ var tests = [ { name: "One keyId", + initDataType: 'keyids', initData: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A"]}', expectedRequest: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A"],"type":"temporary"}', sessionType: 'temporary', @@ -21,6 +22,7 @@ var tests = [ }, { name: "Two keyIds", + initDataType: 'keyids', initData: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A", "0DdtU9od-Bh5L3xbv0Xf_A"]}', expectedRequest: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A","0DdtU9od-Bh5L3xbv0Xf_A"],"type":"temporary"}', sessionType: 'temporary', @@ -28,6 +30,7 @@ var tests = [ }, { name: "Two keyIds, temporary session", + initDataType: 'keyids', initData: '{"type":"temporary", "kids":["LwVHf8JLtPrv2GUXFW2v_A", "0DdtU9od-Bh5L3xbv0Xf_A"]}', expectedRequest: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A","0DdtU9od-Bh5L3xbv0Xf_A"],"type":"temporary"}', sessionType: 'temporary', @@ -35,6 +38,7 @@ var tests = [ }, { name: "Two keyIds, persistent session, type before kids", + initDataType: 'keyids', initData: '{"type":"persistent", "kids":["LwVHf8JLtPrv2GUXFW2v_A", "0DdtU9od-Bh5L3xbv0Xf_A"]}', expectedRequest: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A","0DdtU9od-Bh5L3xbv0Xf_A"],"type":"persistent"}', sessionType: 'persistent', @@ -42,24 +46,28 @@ var tests = [ }, { name: "Invalid keyId", + initDataType: 'keyids', initData: '{"kids":["0"]}', sessionType: 'temporary', expectPass: false, }, { name: "Empty keyId", + initDataType: 'keyids', initData: '{"kids":[""]}', sessionType: 'temporary', expectPass: false, }, { name: "SessionType in license doesn't match MediaKeySession's sessionType", + initDataType: 'keyids', initData: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A"]}', sessionType: 'persistent', expectPass: false, }, { name: "One valid and one invalid kid", + initDataType: 'keyids', initData: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A", "invalid"]}', expectedRequest: '{"kids":["LwVHf8JLtPrv2GUXFW2v_A"],"type":"temporary"}', sessionType: 'temporary', @@ -67,12 +75,37 @@ var tests = [ }, { name: "Invalid initData", + initDataType: 'keyids', initData: 'invalid initData', sessionType: 'temporary', expectPass: false, }, + { + name: "'webm' initDataType", + initDataType: 'webm', + initData: 'YAYeAX5Hfod+V9ANHtANHg==', + expectedRequest: '{"kids":["YAYeAX5Hfod-V9ANHtANHg"],"type":"temporary"}', + sessionType: 'temporary', + expectPass: true, + }, + { + name: "'webm' initDataType with non 16 byte keyid", + initDataType: 'webm', + initData: 'YAYeAX5Hfod', + sessionType: 'temporary', + expectPass: false, + }, ]; +function PrepareInitData(initDataType, initData) +{ + if (initDataType == "keyids") { + return new TextEncoder().encode(initData); + } else if (initDataType == "webm") { + return StringToArrayBuffer(atob(initData)); + } +} + function Test(test) { return new Promise(function(resolve, reject) { navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{initDataTypes: ['keyids']}]).then( @@ -80,7 +113,6 @@ function Test(test) { ).then( (mediaKeys) => { var session = mediaKeys.createSession(test.sessionType); - var initData = new TextEncoder().encode(test.initData); session.addEventListener("message", function(event) { is(event.messageType, "license-request", "'" + test.name + "' MediaKeyMessage type should be license-request."); var text = new TextDecoder().decode(event.message); @@ -89,7 +121,8 @@ function Test(test) { "'" + test.name + "' expected to " + (test.expectPass ? "pass" : "fail")); resolve(); }); - return session.generateRequest('keyids', initData); + var initData = PrepareInitData(test.initDataType, test.initData); + return session.generateRequest(test.initDataType, initData); } ).catch((x) => { ok(!test.expectPass, "'" + test.name + "' expected to fail.");