Bug 1142379 - Encrypt audio and video tracks using separate encryption settings. r=edwin
☠☠ backed out by e55d9b57b37b ☠ ☠
authorGerald Squelart <from_mozilla@squelart.com>
Sun, 22 Mar 2015 12:41:00 -0400
changeset 265436 c58f5ffb38e02c56bbe29d615c8444b413f9e88e
parent 265435 6cb38e69721690ebbfc8dc7d43d43bd958060d3b
child 265437 f5a026d98faa8f631f8a5964bf1534b229212c0a
push id830
push userraliiev@mozilla.com
push dateFri, 19 Jun 2015 19:24:37 +0000
treeherdermozilla-release@932614382a68 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersedwin
bugs1142379
milestone39.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1142379 - Encrypt audio and video tracks using separate encryption settings. r=edwin
dom/media/test/bipbop-cenc1-audio1.m4s
dom/media/test/bipbop-cenc1-audio2.m4s
dom/media/test/bipbop-cenc1-audio3.m4s
dom/media/test/bipbop-cenc1-audioinit.mp4
dom/media/test/bipbop-cenc1-video1.m4s
dom/media/test/bipbop-cenc1-video2.m4s
dom/media/test/bipbop-cenc1-videoinit.mp4
dom/media/test/bipbop-frag-cenc-audio.xml
dom/media/test/bipbop-frag-cenc-video.xml
dom/media/test/eme.js
dom/media/test/manifest.js
dom/media/test/mochitest.ini
dom/media/test/test_eme_canvas_blocked.html
dom/media/test/test_eme_obs_notification.html
dom/media/test/test_eme_persistent_sessions.html
dom/media/test/test_eme_playback.html
dom/media/test/test_eme_stream_capture_blocked.html
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..63cfd66f7efcb521dc8e4f23a01388e83d99ec55
GIT binary patch
literal 921
zc${NkV2~&-sVvAXPRU>Z0uY^BoLK>6>J(?DfM^h4VqgeUVn6^!1_tI(1_lj=2@vkZ
z-2D7BAVVNGEh7b?hH+;}Q6flOqy!|+#Gn8&iwPnxP?DBXf@G#laZ-8#h*6xHnGVs<
zzy+lxixV@eK<wnyykw9X38<tDP$C~$0;=I55Zja#mF5BMgBrwm6G*cG@k$_`2sMKZ
zJ7xqr0&E@=)E-p82qxJuL?PlU(ZqS6;uF!t#h~I6XyOt$%$LL=E`>u}8i%+H4slt8
zIAcq0N@7Vc@6OVXmps?KJ#5<A{k?w2sh}6Jifq!eg3lZbO!yo1DCpyZYpizD{-pct
z_#0dIlq<x3zv@fv`)95egt=MHT&I%h6fXDm%DJ+M>-W9lJ7I3g)8HFm;{U%y?M(3Z
z`|5&zPcFU6X1&z=sq$-i_06Ar+P;zV`q)ptTA3^qvcsK0RojHOH98@Xi?OcYVyer#
zpHds;Zts8gkvISS)l+Y0)tXIm?5VGro%!(Wsv8>KeJiEh{ErK^pYuDrbIM!!tebbP
z{py~#G<eGOpVv#uCv*L^J?nm6n{A)7!42`ym&Wxwg{`VY?wnJXu*nj75OgJVMX%ek
zAA)|-yPGUuD@oqdT;gQz)N`4klE?o4@q5;7IsttW4)Ka@TJDQ(Y(0@_$FJ!aD44<S
zKhIsTXF)^}(~bFtkJ<Mh|9_~!*Yxq+%?nK~X7055=Jxe*)zgI{D{4MQyGeg%)R?8a
vldIPIv(vT9cOuzcF4V6(tESC#ZKt71{Si0&hnnn%U%fk57beGa@W(6weSqe?
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..04a6cb6ff9cf667ea61919481798f93c2f412c9a
GIT binary patch
literal 565
zc${NkV2~&-sVvAXPRU>Z0uY^BoLK>6>J(?DfM^h4VqgeUVqnmKav2zb=p%?f0m5CI
zo1dQsWC-M@WuzeVFitHgN(6~Zlz_yU7z`ld3~WpgH3B7RDJ2jl*ld~Nr1Sz1qc}A)
z9byjy7nGJPPRy(Vv6EBtl0j-Dppr5`iF{-UsD`~jEK*WbnujomaVv;f3{l4f)sGD1
zz$$?bL=%_CA+CT!ToH%35)N@?9O5cC#8q*KtKkq=M-q3*O-U>XuGt*ab49~(@Bee>
zex=Qf-|9U7?`4-3hUCukt!IlrG|Fh~NO}F!>|Jd13DxeWX=asi^;|(`zJHop@}U&~
DN-Rm*
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ad0cd72f903ff3149e647188abf92ea9063898cb
GIT binary patch
literal 977
zc${NkV2~&-sVvAXPRU>Z0uY^BoLK>6>J(?DfM^h4VqgeUVqge>av2yI7?^t*7&I6r
zK)4rk^Yhby41wIVj1;IEW}x`alA=VAxJU^|oQXjJWEK-dUZ5l`r3AtRn=4bClwJU0
z6sKmUL+oJSg3^-3iJ4U(c5-T7GDwXCR8j^gk&i3^)$kCAZAywt^MLk24Pv|rq}iaD
z9mtOXISgbtk~kDI0v!Q1j|plIGSC3q08xt!G;xS)LB-k8#I+&fV0Rz`N2q!cG;wFB
zxFnjmD-L_zaEQC(5cfccGw#VvNi2EAyyQYgy++xod3tMJUhfyq*>mG&x_XtsKZnmQ
zB5u*gv&#Ihc3iS=U;OxfFpsdfi(xcp-?XhtxAV?QIIO=EeBwM$Q$qC8qL12II`3x7
zYnEisd){*F`hwS`2RgGvpE9{CW&QV=vDW5lIlq<BaluGlHjn9!f8*4btudN@M#qq^
zbVlEY9V@F1=frJj^bJqToD-jY^Y)L;%QO=U63fK*&UkjEJlB1Di|nC!8}b%hDqL0i
z=l+b!o8AWve%<y<h=02B1E=8L8Ph^euPeRaDPt6IVUgkYFR!%BrP&Q1&731x|6{+-
zY2$ARyeCrm?YAAj?cei3wD}1ed-{~}WVRNrKaH!HePr36tEBzk!cuYa{59MEQ4u1=
zDt4FOb(MA>eVjE%pCxg+WIc29<5fa08a_Uldu!jT9UIT(o}2gCV8iN1`IVE-niXZ9
z;);v-bvAQl&YBbF-7Rg;SX+LOUnc1x952ZqwQlbn?dpkJUF<hKX1(U8&}ug4%#Op2
zm-Us8Z4JG~?bvihduI7E_MA;_SL@F{);n}cpi6Fnjwrj3QF7w4YaCN;TD5n|%yHr9
T`IWJGf+yF?{eS*!Ka>jq0LKI0
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1fb0078c1d12df70680265da41d39d674bcff667
GIT binary patch
literal 984
zc$}3{OK;Oa5MCz%ap=JnMFOcs=2;FnBqc5v4n@4mqf&Sk2_d1acOAR+#@5cp1rGcM
z?)(A-C&V2N`~m&~TsR={1Gq4=PLxflkQjMAubug3zGaLpCgw$%K@l;=JYL0JvIU0}
z{X>bC67_A;x1iXNBICi0ESEuF7h)7k5$t9r4Q}?YTn#$ysJ#+iyS^D}S#>*6I1sWI
zU6hwX#lc98jhfr4C@M5^Ri%Q>Nb`qPp8clc&EDGUud#nh6VJM;<a5-%k`v733-}9+
zwsDe1-MQt~`j{`L`NmPB`3~Ao&5rFuz1i2ZpB|3u_loEJ_x#>Rg$&bdN=*5wF*Z+<
z{pgDgg{jE(BoD=C=yrL4zF6l&kz3NeXDS;ev=FEn(oc&zz9_Uzobl#HIuB~wI|XJd
zNBbQZ5YC-9av1Z!R%$SxR6QzNmLPzP<}u8)=GTtc@ccbG2O5W8AM}W~KGb8(C0cP+
z_NeUw#HpgoG2)B?&S5MgZVbh0WdGIUrIvf_n#O>$Ci)ON{sQ_h*{tB5xN!XQFenAV
zg3Ja~Gp1udyseQiH1iWB&4iK@?)%`IYF?JP3m9fO7}RIpnu36r1h>U@)w{e(qSbac
kYIi#;==Vy1lrsMAub-bkY&70~zkK}ux8HZDV4sQDAHqA9kpKVy
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..755013c11c8fd9ceff7983a372ff84e826e88a74
GIT binary patch
literal 25211
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
Ibm~9;4?HakH2?qr
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c884bd95fc441e684b6e544a9fb02a1c0be44565
GIT binary patch
literal 22934
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..41160099c82f0785ff01c5fbd9abe5627c46be7a
GIT binary patch
literal 1042
zc$}3|PiqrF6rV{vC{|c7LJzI1ptWE(B(bX(4-Ksv{{%wOiXzB#XEwWZC%eo{w%S7R
z=&@JtUJ4e(lQ%v11^NZl>cxZT2M~#GCJmX^wBTdkzQ6O{@4Xp>&_t-7WwA_sgb*fq
zP}MpmG6MT}C>R5ITgzKAZ891Y_ePvBw<S{A4H$J-V->kKTlIOjQufO=Z{hlqCs<ys
z_+Fc`S^qM->Tx0!6Huu5il=D~O2YGqqJ32SZUi>pknsMjgZ3Ock_x~Lp0lSQ9nJ<l
zrzHGbC5(Si75L;ktA_*eY#1*rDnV92f2>waouUrxOufH10_A_<$D6=2Cis)XhBY=$
zhx;)-@RLog-~VV_UPKcyi03h7cFiTQ(+26##4H`Z<Z&kirId41)P``L_G1%Nu+V}y
z))k4{*YQKCmJ`r-rIOUj*<qa^KV(c83Px&x(l{*R9~$rV;C~4o;XH26o$2kO(nXM4
z<F(U&zMQH*uW!HEUjK|SIyU|3#0yAm$v*h8P;jE(t{zeb5!clMK)2U)8ho+ds?xqb
z8fW9dWYK1DI#MZV0RmeFmR$mS?Eq-V2~x|Rk?oA?wvxqdeP(Zoqxvm(snWOoh%+NK
zowIKiUV|W6me>uwIFSnEg)Nop#*>to!)DaGBoF;7<*Hw<R%&3+W>Q8v;;jDq@!@T=
T@cP@evx{GU-_Zv~AVPluu&1Xg
copy from dom/media/test/bipbop-frag-cenc.xml
copy to dom/media/test/bipbop-frag-cenc-audio.xml
--- a/dom/media/test/bipbop-frag-cenc.xml
+++ b/dom/media/test/bipbop-frag-cenc-audio.xml
@@ -1,57 +1,50 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
   This XML file describes the encryption applied to |bipbop-cenc*|. To
-  generate the bipbop-cenc files, run the following commands:
+  generate the bipbop-cenc1 files, run the following commands:
 
-  Encrypt bipbop-no-edts.mp4 with the keys specified in this file,
-  and output to |bipbop-cenc-{video,audio}.mp4|
-    MP4Box -crypt bipbop-frag-cenc.xml -rem 2 -out bipbop-cenc-video.mp4 bipbop-no-edts.mp4
-    MP4Box -crypt bipbop-frag-cenc.xml -rem 1 -out bipbop-cenc-audio.mp4 bipbop-no-edts.mp4
+  # Encrypt bipbop-no-edts.mp4 with the keys specified in this file,
+  # and output to |bipbop-cenc1-{video,audio}.mp4|
+  MP4Box -crypt bipbop-frag-cenc-video.xml -rem 2 -out bipbop-cenc1-video.mp4 bipbop-no-edts.mp4
+  MP4Box -crypt bipbop-frag-cenc-audio.xml -rem 1 -out bipbop-cenc1-audio.mp4 bipbop-no-edts.mp4
 
-  Fragment |bipbop-cenc-*.mp4| into 500ms segments:
-    MP4Box -dash 500 -rap -segment-name bipbop-cenc-video -subsegs-per-sidx 5 bipbop-cenc-video.mp4
-    MP4Box -dash 500 -rap -segment-name bipbop-cenc-audio -subsegs-per-sidx 5 bipbop-cenc-audio.mp4
+  # Fragment |bipbop-cenc1-*.mp4| into 500ms segments:
+  MP4Box -dash 500 -rap -segment-name bipbop-cenc1-video -subsegs-per-sidx 5 bipbop-cenc1-video.mp4
+  MP4Box -dash 500 -rap -segment-name bipbop-cenc1-audio -subsegs-per-sidx 5 bipbop-cenc1-audio.mp4
 
-  The above command will generate a set of fragments in |bipbop-cenc-{video,audio}*.m4s
-  and |bipbop-cenc-{video,audio}init.mp4| containing just the init segment.
+  # The above command will generate a set of fragments in |bipbop-cenc1-{video,audio}*.m4s
+  # and |bipbop-cenc1-{video,audio}init.mp4| containing just the init segment.
 
-  To cut down the duration, we throw out all but the first 3 audio & 2 video segments:
-    rm bipbop-cenc-audio{[^123],[123][^.]}.m4s
-    rm bipbop-cenc-video{[^12],[12][^.]}.m4s
+  # To cut down the duration, we throw out all but the first 3 audio & 2 video segments:
+  rm bipbop-cenc1-audio{[^123],[123][^.]}.m4s
+  rm bipbop-cenc1-video{[^12],[12][^.]}.m4s
 
-  MP4Box will also have generated some *.mpd files we don't need:
-    rm bipbop-cenc-*.mpd
+  # MP4Box will also have generated some *.mpd files we don't need:
+  rm bipbop-cenc1-*.mpd
 
-  Delete intermediate encrypted files:
-    rm bipbop-cenc-{audio,video}.mp4
+  # Delete intermediate encrypted files:
+  rm bipbop-cenc1-{audio,video}.mp4
 -->
 
 <GPACDRM type="CENC AES-CTR">
 
   <DRMInfo type="pssh" version="1">
     <!--
     SystemID specified in
     https://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/cenc-format.html
     -->
     <BS ID128="1077efecc0b24d02ace33c1e52e2fb4b" />
-    <!-- Number of KeyIDs = 2 -->
-    <BS bits="32" value="2" />
+    <!-- Number of KeyIDs = 1 -->
+    <BS bits="32" value="1" />
     <!-- KeyID -->
-    <BS ID128="0x7e571d037e571d037e571d037e571d03" />
     <BS ID128="0x7e571d047e571d047e571d047e571d04" />
   </DRMInfo>
 
-  <CrypTrack trackID="1" isEncrypted="1" IV_size="16" saiSavedBox="senc"
-    first_IV="0x00000000000000000000000000000000">
-    <key KID="0x7e571d037e571d037e571d037e571d03"
-      value="0x7e5733337e5733337e5733337e573333" />
-  </CrypTrack>
-
   <CrypTrack trackID="2" isEncrypted="1" IV_size="16" saiSavedBox="senc"
     first_IV="0x00000000000000000000000000000000">
     <key KID="0x7e571d047e571d047e571d047e571d04"
       value="0x7e5744447e5744447e5744447e574444" />
   </CrypTrack>
 
 </GPACDRM>
copy from dom/media/test/bipbop-frag-cenc.xml
copy to dom/media/test/bipbop-frag-cenc-video.xml
--- a/dom/media/test/bipbop-frag-cenc.xml
+++ b/dom/media/test/bipbop-frag-cenc-video.xml
@@ -1,57 +1,50 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
   This XML file describes the encryption applied to |bipbop-cenc*|. To
-  generate the bipbop-cenc files, run the following commands:
+  generate the bipbop-cenc1 files, run the following commands:
 
-  Encrypt bipbop-no-edts.mp4 with the keys specified in this file,
-  and output to |bipbop-cenc-{video,audio}.mp4|
-    MP4Box -crypt bipbop-frag-cenc.xml -rem 2 -out bipbop-cenc-video.mp4 bipbop-no-edts.mp4
-    MP4Box -crypt bipbop-frag-cenc.xml -rem 1 -out bipbop-cenc-audio.mp4 bipbop-no-edts.mp4
+  # Encrypt bipbop-no-edts.mp4 with the keys specified in this file,
+  # and output to |bipbop-cenc1-{video,audio}.mp4|
+  MP4Box -crypt bipbop-frag-cenc-video.xml -rem 2 -out bipbop-cenc1-video.mp4 bipbop-no-edts.mp4
+  MP4Box -crypt bipbop-frag-cenc-audio.xml -rem 1 -out bipbop-cenc1-audio.mp4 bipbop-no-edts.mp4
 
-  Fragment |bipbop-cenc-*.mp4| into 500ms segments:
-    MP4Box -dash 500 -rap -segment-name bipbop-cenc-video -subsegs-per-sidx 5 bipbop-cenc-video.mp4
-    MP4Box -dash 500 -rap -segment-name bipbop-cenc-audio -subsegs-per-sidx 5 bipbop-cenc-audio.mp4
+  # Fragment |bipbop-cenc1-*.mp4| into 500ms segments:
+  MP4Box -dash 500 -rap -segment-name bipbop-cenc1-video -subsegs-per-sidx 5 bipbop-cenc1-video.mp4
+  MP4Box -dash 500 -rap -segment-name bipbop-cenc1-audio -subsegs-per-sidx 5 bipbop-cenc1-audio.mp4
 
-  The above command will generate a set of fragments in |bipbop-cenc-{video,audio}*.m4s
-  and |bipbop-cenc-{video,audio}init.mp4| containing just the init segment.
+  # The above command will generate a set of fragments in |bipbop-cenc1-{video,audio}*.m4s
+  # and |bipbop-cenc1-{video,audio}init.mp4| containing just the init segment.
 
-  To cut down the duration, we throw out all but the first 3 audio & 2 video segments:
-    rm bipbop-cenc-audio{[^123],[123][^.]}.m4s
-    rm bipbop-cenc-video{[^12],[12][^.]}.m4s
+  # To cut down the duration, we throw out all but the first 3 audio & 2 video segments:
+  rm bipbop-cenc1-audio{[^123],[123][^.]}.m4s
+  rm bipbop-cenc1-video{[^12],[12][^.]}.m4s
 
-  MP4Box will also have generated some *.mpd files we don't need:
-    rm bipbop-cenc-*.mpd
+  # MP4Box will also have generated some *.mpd files we don't need:
+  rm bipbop-cenc1-*.mpd
 
-  Delete intermediate encrypted files:
-    rm bipbop-cenc-{audio,video}.mp4
+  # Delete intermediate encrypted files:
+  rm bipbop-cenc1-{audio,video}.mp4
 -->
 
 <GPACDRM type="CENC AES-CTR">
 
   <DRMInfo type="pssh" version="1">
     <!--
     SystemID specified in
     https://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/cenc-format.html
     -->
     <BS ID128="1077efecc0b24d02ace33c1e52e2fb4b" />
-    <!-- Number of KeyIDs = 2 -->
-    <BS bits="32" value="2" />
+    <!-- Number of KeyIDs = 1 -->
+    <BS bits="32" value="1" />
     <!-- KeyID -->
     <BS ID128="0x7e571d037e571d037e571d037e571d03" />
-    <BS ID128="0x7e571d047e571d047e571d047e571d04" />
   </DRMInfo>
 
   <CrypTrack trackID="1" isEncrypted="1" IV_size="16" saiSavedBox="senc"
     first_IV="0x00000000000000000000000000000000">
     <key KID="0x7e571d037e571d037e571d037e571d03"
       value="0x7e5733337e5733337e5733337e573333" />
   </CrypTrack>
 
-  <CrypTrack trackID="2" isEncrypted="1" IV_size="16" saiSavedBox="senc"
-    first_IV="0x00000000000000000000000000000000">
-    <key KID="0x7e571d047e571d047e571d047e571d04"
-      value="0x7e5744447e5744447e5744447e574444" />
-  </CrypTrack>
-
 </GPACDRM>
--- a/dom/media/test/eme.js
+++ b/dom/media/test/eme.js
@@ -29,16 +29,24 @@ function StringToArrayBuffer(str)
   var arr = new ArrayBuffer(str.length);
   var view = new Uint8Array(arr);
   for (var i = 0; i < str.length; i++) {
     view[i] = str.charCodeAt(i);
   }
   return arr;
 }
 
+function StringToHex(str){
+  var res = "";
+  for (var i = 0; i < str.length; ++i) {
+      res += ("0" + str.charCodeAt(i).toString(16)).slice(-2);
+  }
+  return res;
+}
+
 function Base64ToHex(str)
 {
   var bin = window.atob(str.replace(/-/g, "+").replace(/_/g, "/"));
   var res = "";
   for (var i = 0; i < bin.length; i++) {
     res += ("0" + bin.charCodeAt(i).toString(16)).substr(-2);
   }
   return res;
@@ -84,21 +92,18 @@ function TimeRangesToString(trs)
     if (++i === l) { return s; }
     s += ",";
   }
 }
 
 function SourceBufferToString(sb)
 {
   return ("SourceBuffer{"
-    + "AppendMode=" + (sb.AppendMode || "-")
-    + ", updating=" + (sb.updating ? "true" : "false")
-    + ", buffered=" + TimeRangesToString(sb.buffered)
-    + ", audioTracks=" + (sb.audioTracks ? sb.audioTracks.length : "-")
-    + ", videoTracks=" + (sb.videoTracks ? sb.videoTracks.length : "-")
+    + (sb.updating ? "updating, " : "")
+    + "buffered=" + TimeRangesToString(sb.buffered)
     + "}");
 }
 
 function SourceBufferListToString(sbl)
 {
   return "SourceBufferList[" + sbl.map(SourceBufferToString).join(", ") + "]";
 }
 
@@ -302,18 +307,17 @@ function PlayMultiTrack(test, elem, toke
         ms.endOfStream();
         resolve();
       });
     })
   });
 }
 
 // Returns a promise that is resolved when the media element is ready to have
-// its play() function called; when it's loaded MSE fragments, or once the load
-// has started for non-MSE video.
+// its play() function called; when it's loaded MSE fragments.
 function LoadTest(test, elem, token)
 {
   if (test.fragments) {
     // A |fragments| array indicates that this is an MSE test case with one track.
     return PlayFragmented(test, elem, token);
   }
 
   if (test.tracks) {
@@ -344,81 +348,108 @@ function SetupEME(test, token, params)
 
   // Finish the test when error is encountered.
   v.onerror = bail(token + " got error event");
 
   var onSetKeysFail = (params && params.onSetKeysFail)
     ? params.onSetKeysFail
     : bail(token + " Failed to set MediaKeys on <video> element");
 
-  var firstEncrypted = true;
-
-  v.addEventListener("encrypted", function(ev) {
-    if (!firstEncrypted) {
-      // TODO: Better way to handle 'encrypted'?
-      //       Maybe wait for metadataloaded and all expected 'encrypted's?
-      Log(token, "got encrypted event again, initDataType=" + ev.initDataType);
-      return;
-    }
-    firstEncrypted = false;
+  // null: No session management in progress, just go ahead and update the session.
+  // [...]: Session management in progress, add [initDataType, initData] to
+  //        this queue to get it processed when possible.
+  var initDataQueue = [];
+  function processInitDataQueue()
+  {
+    if (initDataQueue === null) { return; }
+    if (initDataQueue.length === 0) { initDataQueue = null; return; }
+    var ev = initDataQueue.shift();
 
-    Log(token, "got encrypted event, initDataType=" + ev.initDataType);
-    var options = [
-      {
-        initDataType: ev.initDataType,
-        videoType: test.type,
-        audioType: test.type,
-      }
-    ];
-
-    function chain(promise, onReject) {
-      return promise.then(function(value) {
-        return Promise.resolve(value);
-      }).catch(function(reason) {
-        onReject(reason);
-        return Promise.reject();
-      })
+    var sessionType = (params && params.sessionType) ? params.sessionType : "temporary";
+    Log(token, "createSession(" + sessionType + ") for (" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + ")");
+    var session = v.mediaKeys.createSession(sessionType);
+    if (params && params.onsessioncreated) {
+      params.onsessioncreated(session);
     }
 
-    var p = navigator.requestMediaKeySystemAccess(KEYSYSTEM_TYPE, options);
-    var r = bail(token + " Failed to request key system access.");
-    chain(p, r)
-    .then(function(keySystemAccess) {
-      var p = keySystemAccess.createMediaKeys();
-      var r = bail(token +  " Failed to create MediaKeys object");
-      return chain(p, r);
-    })
-
-    .then(function(mediaKeys) {
-      Log(token, "created MediaKeys object ok");
-      mediaKeys.sessions = [];
-      var p = v.setMediaKeys(mediaKeys);
-      return chain(p, onSetKeysFail);
-    })
-
-    .then(function() {
-      Log(token, "set MediaKeys on <video> element ok");
-      var sessionType = (params && params.sessionType) ? params.sessionType : "temporary";
-      var session = v.mediaKeys.createSession(sessionType);
-      if (params && params.onsessioncreated) {
-        params.onsessioncreated(session);
-      }
-
-      return new Promise(function (resolve, reject) {
-        session.addEventListener("message", UpdateSessionFunc(test, token, sessionType, resolve, reject));
-        session.generateRequest(ev.initDataType, ev.initData).catch(function(reason) {
-          // Reject the promise if generateRequest() failed. Otherwise it will
-          // be resolve in UpdateSessionFunc().
-          bail(token + ": session.generateRequest failed")(reason);
-          reject();
-        });
+    return new Promise(function (resolve, reject) {
+      session.addEventListener("message", UpdateSessionFunc(test, token, sessionType, resolve, reject));
+      Log(token, "session.generateRequest(" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + ")");
+      session.generateRequest(ev.initDataType, ev.initData).catch(function(reason) {
+        // Reject the promise if generateRequest() failed. Otherwise it will
+        // be resolve in UpdateSessionFunc().
+        bail(token + ": session.generateRequest(" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + ") failed")(reason);
+        reject();
       });
     })
 
-    .then(function(session) {
-      Log(token, ": session.generateRequest succeeded");
+    .then(function(aSession) {
+      Log(token, "session.generateRequest(" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + ") succeeded");
       if (params && params.onsessionupdated) {
-        params.onsessionupdated(session);
+        params.onsessionupdated(aSession);
+      }
+      processInitDataQueue();
+    });
+  }
+
+  // All 'initDataType's should be the same.
+  // null indicates no 'encrypted' event received yet.
+  var initDataType = null;
+  v.addEventListener("encrypted", function(ev) {
+    if (initDataType === null) {
+      Log(token, "got first encrypted(" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + "), setup session");
+      initDataType = ev.initDataType;
+      initDataQueue.push(ev);
+
+      function chain(promise, onReject) {
+        return promise.then(function(value) {
+          return Promise.resolve(value);
+        }).catch(function(reason) {
+          onReject(reason);
+          return Promise.reject();
+        })
       }
-    });
+
+      var options = [
+         {
+           initDataType: ev.initDataType,
+           videoType: test.type,
+           audioType: test.type,
+         }
+       ];
+      var p = navigator.requestMediaKeySystemAccess(KEYSYSTEM_TYPE, options);
+      var r = bail(token + " Failed to request key system access.");
+      chain(p, r)
+      .then(function(keySystemAccess) {
+        var p = keySystemAccess.createMediaKeys();
+        var r = bail(token +  " Failed to create MediaKeys object");
+        return chain(p, r);
+      })
+
+      .then(function(mediaKeys) {
+        Log(token, "created MediaKeys object ok");
+        mediaKeys.sessions = [];
+        var p = v.setMediaKeys(mediaKeys);
+        return chain(p, onSetKeysFail);
+      })
+
+      .then(function() {
+        Log(token, "set MediaKeys on <video> element ok");
+        processInitDataQueue();
+      })
+    } else {
+      if (ev.initDataType !== initDataType) {
+        return bail(token + ": encrypted(" + ev.initDataType + ", " +
+                    StringToHex(ArrayBufferToString(ev.initData)) + ")")
+                   ("expected " + initDataType);
+      }
+      if (initDataQueue !== null) {
+        Log(token, "got encrypted(" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + ") event, queue it for later session update");
+        initDataQueue.push(ev);
+      } else {
+        Log(token, "got encrypted(" + ev.initDataType + ", " + StringToHex(ArrayBufferToString(ev.initData)) + ") event, update session now");
+        initDataQueue = [ev];
+        processInitDataQueue();
+      }
+    }
   });
   return v;
 }
--- a/dom/media/test/manifest.js
+++ b/dom/media/test/manifest.js
@@ -642,48 +642,50 @@ var gMetadataTests = [
   },
   { name:"wavedata_u8.wav", tags: { }
   },
 ];
 
 // Test files for Encrypted Media Extensions
 var gEMETests = [
   {
-    name:"bipbop-cenc-videoinit.mp4",
+    name:"video-only with 2 keys",
     type:"video/mp4; codecs=\"avc1.64000d,mp4a.40.2\"",
     fragments:[ "bipbop-cenc-videoinit.mp4",
                 "bipbop-cenc-video1.m4s",
                 "bipbop-cenc-video2.m4s",
               ],
     keys: {
       // "keyid" : "key"
       "7e571d037e571d037e571d037e571d03" : "7e5733337e5733337e5733337e573333",
       "7e571d047e571d047e571d047e571d04" : "7e5744447e5744447e5744447e574444",
     },
     sessionType:"temporary",
+    sessions:1,
     duration:1.60,
   },
   {
-    name:"bipbop-cenc-videoinit.mp4",
+    name:"video-only with 2 keys, CORS",
     type:"video/mp4; codecs=\"avc1.64000d,mp4a.40.2\"",
     fragments:[ "bipbop-cenc-videoinit.mp4",
                 "bipbop-cenc-video1.m4s",
                 "bipbop-cenc-video2.m4s",
               ],
     keys: {
       // "keyid" : "key"
       "7e571d037e571d037e571d037e571d03" : "7e5733337e5733337e5733337e573333",
       "7e571d047e571d047e571d047e571d04" : "7e5744447e5744447e5744447e574444",
     },
     sessionType:"temporary",
+    sessions:1,
     crossOrigin:true,
     duration:1.60,
   },
   {
-    name:"bipbop-cenc-videoinit.mp4",
+    name:"audio&video tracks, both with all keys",
     type:"video/mp4; codecs=\"avc1.64000d,mp4a.40.2\"",
     tracks: [
       {
         name:"audio",
         type:"audio/mp4; codecs=\"mp4a.40.2\"",
         fragments:[ "bipbop-cenc-audioinit.mp4",
                     "bipbop-cenc-audio1.m4s",
                     "bipbop-cenc-audio2.m4s",
@@ -700,20 +702,21 @@ var gEMETests = [
       },
     ],
     keys: {
       // "keyid" : "key"
       "7e571d037e571d037e571d037e571d03" : "7e5733337e5733337e5733337e573333",
       "7e571d047e571d047e571d047e571d04" : "7e5744447e5744447e5744447e574444",
     },
     sessionType:"temporary",
+    sessions:2,
     duration:1.60,
   },
   {
-    name:"bipbop-cenc-videoinit.mp4",
+    name:"audio&video tracks, both with all keys, CORS",
     type:"video/mp4; codecs=\"avc1.64000d,mp4a.40.2\"",
     tracks: [
       {
         name:"audio",
         type:"audio/mp4; codecs=\"mp4a.40.2\"",
         fragments:[ "bipbop-cenc-audioinit.mp4",
                     "bipbop-cenc-audio1.m4s",
                     "bipbop-cenc-audio2.m4s",
@@ -730,19 +733,51 @@ var gEMETests = [
       },
     ],
     keys: {
       // "keyid" : "key"
       "7e571d037e571d037e571d037e571d03" : "7e5733337e5733337e5733337e573333",
       "7e571d047e571d047e571d047e571d04" : "7e5744447e5744447e5744447e574444",
     },
     sessionType:"temporary",
+    sessions:2,
     crossOrigin:true,
     duration:1.60,
   },
+  {
+    name:"audio&video tracks, each with its key",
+    type:"video/mp4; codecs=\"avc1.64000d,mp4a.40.2\"",
+    tracks: [
+      {
+        name:"audio",
+        type:"audio/mp4; codecs=\"mp4a.40.2\"",
+        fragments:[ "bipbop-cenc1-audioinit.mp4",
+                    "bipbop-cenc1-audio1.m4s",
+                    "bipbop-cenc1-audio2.m4s",
+                    "bipbop-cenc1-audio3.m4s",
+                  ],
+      },
+      {
+        name:"video",
+        type:"video/mp4; codecs=\"avc1.64000d\"",
+        fragments:[ "bipbop-cenc1-videoinit.mp4",
+                    "bipbop-cenc1-video1.m4s",
+                    "bipbop-cenc1-video2.m4s",
+                  ],
+      },
+    ],
+    keys: {
+      // "keyid" : "key"
+      "7e571d037e571d037e571d037e571d03" : "7e5733337e5733337e5733337e573333",
+      "7e571d047e571d047e571d047e571d04" : "7e5744447e5744447e5744447e574444",
+    },
+    sessionType:"temporary",
+    sessions:2,
+    duration:1.60,
+  },
 ];
 
 var gEMENonMSEFailTests = [
   {
     name:"short-cenc.mp4",
     type:"video/mp4; codecs=\"avc1.64000d,mp4a.40.2\"",
     duration:0.47,
   },
--- a/dom/media/test/mochitest.ini
+++ b/dom/media/test/mochitest.ini
@@ -47,16 +47,23 @@ support-files =
   big.wav^headers^
   bipbop-cenc-audio1.m4s
   bipbop-cenc-audio2.m4s
   bipbop-cenc-audio3.m4s
   bipbop-cenc-audioinit.mp4
   bipbop-cenc-video1.m4s
   bipbop-cenc-video2.m4s
   bipbop-cenc-videoinit.mp4
+  bipbop-cenc1-audio1.m4s
+  bipbop-cenc1-audio2.m4s
+  bipbop-cenc1-audio3.m4s
+  bipbop-cenc1-audioinit.mp4
+  bipbop-cenc1-video1.m4s
+  bipbop-cenc1-video2.m4s
+  bipbop-cenc1-videoinit.mp4
   bogus.duh
   bogus.ogv
   bogus.ogv^headers^
   bogus.wav
   bogus.wav^headers^
   bug461281.ogg
   bug461281.ogg^headers^
   bug482461-theora.ogv
--- a/dom/media/test/test_eme_canvas_blocked.html
+++ b/dom/media/test/test_eme_canvas_blocked.html
@@ -33,17 +33,20 @@ function startTest(test, token)
       ctx.drawImage(video, 0, 0);
     } catch (ex) {
       threwError = true;
     }
     ok(threwError, TimeStamp(token) + " - Should throw an error when trying to draw EME video to canvas.");
     manager.finished(token);
   });
 
-  LoadTest(test, v, token);
+  manager.started(token + "_load");
+  LoadTest(test, v, token)
+  .then(function() { manager.finished(token + "_load"); })
+  .catch(function() { manager.finished(token + "_load"); });
 }
 
 function beginTest() {
   manager.runTests(gEMETests, startTest);
 }
 
 var prefs = [
   [ "media.mediasource.enabled", true ],
--- a/dom/media/test/test_eme_obs_notification.html
+++ b/dom/media/test/test_eme_obs_notification.html
@@ -47,17 +47,20 @@ function startTest(test, token)
   v.preload = "auto"; // Required due to "canplay" not firing for MSE unless we do this.
 
   v.addEventListener("loadeddata", function(ev) {
     ok(observedVideos.has(ev.target), "Should have been told about eme video through observer as well.");
     observedVideos.delete(ev.target);
     manager.finished(token);
   });
 
-  LoadTest(test, v, token);
+  manager.started(token + "_load");
+  LoadTest(test, v, token)
+  .then(function() { manager.finished(token + "_load"); })
+  .catch(function() { manager.finished(token + "_load"); });
 }
 
 function beginTest() {
   manager.runTests(gEMETests, startTest);
 }
 
 var prefs = [
   [ "media.mediasource.enabled", true ],
--- a/dom/media/test/test_eme_persistent_sessions.html
+++ b/dom/media/test/test_eme_persistent_sessions.html
@@ -69,17 +69,16 @@ function startTest(test, token)
 
   var keySystemAccess;
 
   var v = SetupEME(test, token,
     {
       onsessionupdated: function(session) {
         Log(token, "Session created");
         var sessionId;
-        initialSession = session;
 
         // Once the session has loaded and has all its keys usable, close
         // all sessions without calling remove() on them.
         AwaitAllKeysUsable(session, test.keys, token)
         .then(function() {
           sessionId = session.sessionId;
           Log(token, "Closing session with id=" + sessionId);
           return session.close();
@@ -142,21 +141,24 @@ function startTest(test, token)
           manager.finished(token);
         });
 
       },
       sessionType: "persistent",
     }
   );
 
-  LoadTest(test, v, token);
+  manager.started(token + "_load");
+  LoadTest(test, v, token)
+  .then(function() { manager.finished(token + "_load"); })
+  .catch(function() { manager.finished(token + "_load"); });
 }
 
 function beginTest() {
-  manager.runTests(gEMETests, startTest);
+  manager.runTests(gEMETests.filter(t => t.sessions === 1), startTest);
 }
 
 var prefs = [
   [ "media.mediasource.enabled", true ],
   [ "media.mediasource.mp4.enabled", true ],
 ];
 
 if (/Linux/.test(navigator.userAgent) ||
--- a/dom/media/test/test_eme_playback.html
+++ b/dom/media/test/test_eme_playback.html
@@ -69,26 +69,32 @@ function startTest(test, token)
     ok(gotEncrypted, TimeStamp(token) + " encrypted event should have fired");
     ok(gotPlaying, TimeStamp(token) + " playing event should have fired");
 
     ok(Math.abs(test.duration - v.duration) < 0.1,
        TimeStamp(token) + " Duration of video should be corrrect");
     ok(Math.abs(test.duration - v.currentTime) < 0.1,
        TimeStamp(token) + " Current time should be same as duration");
 
-    // Verify all sessions had all keys went sent the to the CDM usable, and thus
+    // Verify all sessions had all keys went sent to the CDM usable, and thus
     // that we received keystatuseschange event(s).
-    is(sessions.length, 1, TimeStamp(token) + " should have 1 session");
+    is(sessions.length, test.sessions, TimeStamp(token) + " should have " + test.sessions + " session" + (test.sessions===1?"":"s"));
+    var keyIdsReceived = [];
+    for (var keyid in test.keys) { keyIdsReceived[keyid] = false; }
     for (var i = 0; i < sessions.length; i++) {
       var session = sessions[i];
       ok(session.gotKeysChanged, TimeStamp(token) + " should have received at least one keychange event");
       for (var kid in session.keyIdsReceived) {
-        ok(session.keyIdsReceived[kid], TimeStamp(token) + " key with id " + kid + " was usable as expected");
+        Log(token, "session " + i + " key " + kid + " = " + (session.keyIdsReceived[kid] ? "true" : "false"));
+        if (session.keyIdsReceived[kid]) { keyIdsReceived[kid] = true; }
       }
     }
+    for (var kid in keyIdsReceived) {
+      ok(keyIdsReceived[kid], TimeStamp(token) + " key with id " + kid + " was usable as expected");
+    }
 
     manager.finished(token);
   });
 
   LoadTest(test, v, token)
   .then(function() {
     v.play();
   }).catch(function() {
--- a/dom/media/test/test_eme_stream_capture_blocked.html
+++ b/dom/media/test/test_eme_stream_capture_blocked.html
@@ -27,17 +27,20 @@ function startTest(test, token)
   };
   var v1 = SetupEME(test, case1token,  { onSetKeysFail: setKeysFailed });
   var context = new AudioContext();
   var node = context.createMediaElementSource(v1);
   v1.addEventListener("loadeddata", function(ev) {
     ok(false, TimeStamp(case1token) + " should never reach loadeddata, as setMediaKeys should fail");
   });
   manager.started(case1token);
-  LoadTest(test, v1, case1token);
+  manager.started(case1token + "_load");
+  LoadTest(test, v1, case1token)
+  .then(function() { manager.finished(case1token + "_load" ); })
+  .catch(function() { manager.finished(case1token + "_load" ); });
 
 
   // Case 2. creating a MediaElementSource on a media element with a MediaKeys should fail.
   var case2token = token + "_case2";
   var v2 = SetupEME(test, case2token);
   v2.addEventListener("loadeddata", function(ev) {
     ok(true, case2token + " should reach loadeddata");
     var threw = false;
@@ -46,17 +49,20 @@ function startTest(test, token)
       var node = context.createMediaElementSource(v2);
     } catch (e) {
       threw = true;
     }
     ok(threw, "Should throw an error creating a MediaElementSource on an EME video.");
     manager.finished(case2token);
   });
   manager.started(case2token);
-  LoadTest(test, v2, case2token);
+  manager.started(case2token + "_load");
+  LoadTest(test, v2, case2token)
+  .then(function() { manager.finished(case2token + "_load" ); })
+  .catch(function() { manager.finished(case2token + "_load" ); });
 
 
   // Case 3. capturing a media element with mozCaptureStream that has a MediaKeys should fail.
   var case3token = token + "_case3";
   var v3 = SetupEME(test, case3token);
   v3.addEventListener("loadeddata", function(ev) {
     ok(true, TimeStamp(case3token) + " should reach loadeddata");
     var threw = false;
@@ -64,17 +70,20 @@ function startTest(test, token)
       var stream = v3.mozCaptureStreamUntilEnded();
     } catch (e) {
       threw = true;
     }
     ok(threw, TimeStamp(case3token) + " Should throw an error calling mozCaptureStreamUntilEnded an EME video.");
     manager.finished(case3token);
   });
   manager.started(case3token);
-  LoadTest(test, v3, case3token);
+  manager.started(case3token + "_load");
+  LoadTest(test, v3, case3token)
+  .then(function() { manager.finished(case3token + "_load" ); })
+  .catch(function() { manager.finished(case3token + "_load" ); });
 }
 
 function beginTest() {
   manager.runTests(gEMETests, startTest);
 }
 
 var prefs = [
   [ "media.mediasource.enabled", true ],