| Index: android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java
|
| index 32ee9aa9af35d789157bf40f995062395e131608..ff9e489f26885126a67f22f16942cc85ec2a082e 100644
|
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/KeySystemTest.java
|
| @@ -4,6 +4,7 @@
|
|
|
| package org.chromium.android_webview.test;
|
|
|
| +import android.os.Build;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| import org.chromium.android_webview.AwContents;
|
| @@ -66,12 +67,16 @@ public class KeySystemTest extends AwTestBase {
|
| + " navigator.requestMediaKeySystemAccess(keySystem, [{}]).then("
|
| + " success, failure);"
|
| + "}"
|
| + + "function areProprietaryCodecsSupported() {"
|
| + + " var video = document.createElement('video');"
|
| + + " return video.canPlayType('video/mp4; codecs=\"avc1\"');"
|
| + + "}"
|
| + "</script> </html>";
|
| }
|
|
|
| private String isKeySystemSupported(String keySystem) throws Exception {
|
| - executeJavaScriptAndWaitForResult(mAwContents, mContentsClient,
|
| - "isKeySystemSupported('" + keySystem + "')");
|
| + executeJavaScriptAndWaitForResult(
|
| + mAwContents, mContentsClient, "isKeySystemSupported('" + keySystem + "')");
|
|
|
| poll(new Callable<Boolean>() {
|
| @Override
|
| @@ -83,6 +88,12 @@ public class KeySystemTest extends AwTestBase {
|
| return getResultFromJS();
|
| }
|
|
|
| + private boolean areProprietaryCodecsSupported() throws Exception {
|
| + String result = executeJavaScriptAndWaitForResult(
|
| + mAwContents, mContentsClient, "areProprietaryCodecsSupported()");
|
| + return !result.isEmpty();
|
| + }
|
| +
|
| private String getResultFromJS() {
|
| String result = "null";
|
| try {
|
| @@ -94,6 +105,18 @@ public class KeySystemTest extends AwTestBase {
|
| return result;
|
| }
|
|
|
| + private String getPlatformKeySystemExpectations() throws Exception {
|
| + // Android key systems only support non-proprietary codecs on Lollipop+.
|
| + // When neither is true isKeySystemSupported() will return an error for
|
| + // all key systems except ClearKey (which is handled by Chrome itself).
|
| + if (!areProprietaryCodecsSupported()
|
| + && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
| + return "\"NotSupportedError\"";
|
| + }
|
| +
|
| + return "\"supported\"";
|
| + }
|
| +
|
| @Feature({"AndroidWebView"})
|
| @SmallTest
|
| public void testSupportClearKeySystem() throws Throwable {
|
| @@ -103,7 +126,8 @@ public class KeySystemTest extends AwTestBase {
|
| @Feature({"AndroidWebView"})
|
| @SmallTest
|
| public void testSupportWidevineKeySystem() throws Throwable {
|
| - assertEquals("\"supported\"", isKeySystemSupported("com.widevine.alpha"));
|
| + assertEquals(
|
| + getPlatformKeySystemExpectations(), isKeySystemSupported("com.widevine.alpha"));
|
| }
|
|
|
| @Feature({"AndroidWebView"})
|
| @@ -115,7 +139,8 @@ public class KeySystemTest extends AwTestBase {
|
| @Feature({"AndroidWebView"})
|
| @SmallTest
|
| public void testSupportPlatformKeySystem() throws Throwable {
|
| - assertEquals("\"supported\"", isKeySystemSupported("x-com.oem.test-keysystem"));
|
| + assertEquals(getPlatformKeySystemExpectations(),
|
| + isKeySystemSupported("x-com.oem.test-keysystem"));
|
| }
|
|
|
| @Feature({"AndroidWebView"})
|
|
|