]> git.sesse.net Git - casparcg/blobdiff - dependencies64/cef/linux/tests/cefclient/resources/drm.html
Upgrade CEF to 3.3029.1611.g44e39a8 / Chromium 58.0.3029.81.
[casparcg] / dependencies64 / cef / linux / tests / cefclient / resources / drm.html
diff --git a/dependencies64/cef/linux/tests/cefclient/resources/drm.html b/dependencies64/cef/linux/tests/cefclient/resources/drm.html
new file mode 100644 (file)
index 0000000..0977270
--- /dev/null
@@ -0,0 +1,126 @@
+<html>
+<head>
+<title>DRM Test</title>
+<script language="JavaScript">
+
+// Based on DRM detection code from https://github.com/google/shaka-player
+function probeSupport() {
+  var tests = [];
+  var testKeySystems = [
+    'org.w3.clearkey',
+    'com.widevine.alpha',
+  ];
+
+  var basicVideoCapabilities = [
+    { contentType: 'video/mp4; codecs="avc1.42E01E"' },
+    { contentType: 'video/webm; codecs="vp9"' }
+  ];
+
+  var basicConfig = {
+    videoCapabilities: basicVideoCapabilities
+  };
+  var offlineConfig = {
+    videoCapabilities: basicVideoCapabilities,
+    persistentState: 'required',
+    sessionTypes: ['persistent-license']
+  };
+
+  // Try the offline config first, then fall back to the basic config.
+  var configs = [offlineConfig, basicConfig];
+
+  var support = {};
+  testKeySystems.forEach(function(keySystem) {
+    var p = navigator.requestMediaKeySystemAccess(keySystem, configs)
+        .then(function(access) {
+          // We can't (yet) trust every browser to report the session types they
+          // support in access.getConfiguration().  Therefore, we create a
+          // MediaKeys object and try to create an offline session.
+          // https://goo.gl/gtYT3z, https://goo.gl/rvnB1g, https://goo.gl/z0URJ0
+          var mediaKeys = access.createMediaKeys();
+          var persistentState = false;
+          try {
+            // This will throw if persistent licenses are not supported.
+            mediaKeys.createSession('persistent-license');
+            persistentState = true;
+          } catch (e) {}
+
+          support[keySystem] = {persistentState: persistentState};
+        }, function() {
+          support[keySystem] = null;
+        });
+    tests.push(p);
+  });
+
+  return Promise.all(tests).then(function() {
+    return support;
+  });
+}
+
+function getWidevineCdmInfo() {
+  if (!('Widevine Content Decryption Module' in navigator.plugins)) {
+    return "Widevine CDM plugin not loaded.";
+  }
+
+  var plugin = navigator.plugins['Widevine Content Decryption Module'];
+  return "Widevine CDM plugin:\n" + JSON.stringify({
+    "name": plugin.name,
+    "filename": plugin.filename,
+    "description": plugin.description,
+  }, null, '  ')
+}
+
+function printSupport(support) {
+  var output = document.getElementById('output');
+  output.textContent = getWidevineCdmInfo() + "\n\nDRM Support:\n" + support;
+}
+
+function doTest() {
+  probeSupport().then(function(support) {
+    printSupport(JSON.stringify(support, null, '  '));
+  });
+}
+
+// Send a message to the browser process.
+function sendMessage() {
+  // Create the request object.
+  var request = {};
+  request.widevine_cdm_path =
+      document.getElementById("widevine_cdm_path").value;
+
+  // Results in a call to the OnQuery method in drm_test.cpp
+  window.cefQuery({
+    request: JSON.stringify(request),
+    onSuccess: function(response) {
+      alert('Widevine CDM plugin loaded successfully!');
+      // Registration succeeded so test again.
+      doTest();
+    },
+    onFailure: function(error_code, error_message) {
+      alert(error_message + ' (' + error_code + ')');
+    }
+  });
+}
+
+</script>
+
+</head>
+<body bgcolor="white" onload="doTest()">
+Important notes:
+<ul>
+<li>Clearkey support is built in and should always be enabled.</li>
+<li>Widevine support requires CDM binaries that must be downloaded from Google. Contact Google <a href="https://www.widevine.com/contact.html">here</a> for details.</li>
+<li>Widevine support is enabled by calling the CefRegisterWidevineCdm() function. See comments in cef_web_plugin.h for usage.</li>
+<li>The CefRegisterWidevineCdm() function can be called during runtime on Windows and OS X to register Widevine binaries. Use the below form to test this capability.</li>
+<li>Calling CefRegisterWidevineCdm() before CefInitialize() is required on Linux.</li>
+<li>Cefclient will call CefRegisterWidevineCdm() before CefInitialize() if "--widevine-cdm-path=&lt;path&gt;" is specified on the command-line.</li>
+<li>View extended media support information <a href="https://shaka-player-demo.appspot.com/support.html">here</a>.</li>
+<li>Test DRM video playback <a href="https://shaka-player-demo.appspot.com/demo/">here</a>. Select an "asset" that includes Clearkey or Widevine in the name.</li>
+</ul>
+
+<form>
+Widevine CDM Path: <input type="text" id="widevine_cdm_path" value="" size="40">
+<input type="button" onclick="sendMessage();" value="Load CDM">
+</form>
+<pre id="output"></pre>
+</body>
+</html>