Bug 1224080 - Ensure attaching MediaKeys before MediaSource doesn't cause load failure. r=gerald

This commit is contained in:
Chris Pearce 2015-11-14 08:57:52 +13:00
parent 37246e599b
commit 0b254631ce
3 changed files with 44 additions and 1 deletions

View File

@ -1235,7 +1235,7 @@ nsresult HTMLMediaElement::LoadResource()
#ifdef MOZ_EME
if (mMediaKeys &&
!IsMediaStreamURI(mLoadingSrc) &&
!IsMediaSourceURI(mLoadingSrc) &&
Preferences::GetBool("media.eme.mse-only", true)) {
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
}

View File

@ -629,6 +629,8 @@ skip-if = toolkit == 'android' # bug 1149374
skip-if = toolkit == 'android' || toolkit == 'gonk' # android: bug 1149374; gonk: bug 1193351
[test_eme_requestKeySystemAccess.html]
skip-if = toolkit == 'android' # bug 1149374
[test_eme_setMediaKeys_before_attach_MediaSource.html]
skip-if = toolkit == 'android' # bug 1149374
[test_eme_stream_capture_blocked_case1.html]
tags=msg capturestream
skip-if = toolkit == 'android' || toolkit == 'gonk' # android: bug 1149374; gonk: bug 1193351

View File

@ -0,0 +1,41 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test Encrypted Media Extensions</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<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">
function beginTest() {
var video = document.createElement("video");
navigator.requestMediaKeySystemAccess("org.w3.clearkey", [{initDataTypes: ["cenc"]}])
.then(function(keySystemAccess) {
return keySystemAccess.createMediaKeys();
})
.then(mediaKeys => {
return video.setMediaKeys(mediaKeys);
})
.then(() => {
var ms = new MediaSource();
ms.addEventListener("sourceopen", ()=>{ok(true, "MediaSource should open"); SimpleTest.finish();});
video.addEventListener("error", ()=>{ok(false, "Shouldn't error."); SimpleTest.finish();});
video.src = URL.createObjectURL(ms);
});
}
if (!IsMacOSSnowLeopardOrEarlier()) {
SimpleTest.waitForExplicitFinish();
SetupEMEPref(beginTest);
} else {
todo(false, "Test disabled on this platform.");
}
</script>
</pre>
</body>
</html>