| 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..509a212d1e311207c386ace9cef2a44811dfabad 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,17 @@ public class KeySystemTest extends AwTestBase {
|
| + " navigator.requestMediaKeySystemAccess(keySystem, [{}]).then("
|
| + " success, failure);"
|
| + "}"
|
| + + "function areProprietaryCodecsSupported() {"
|
| + + " var video = document.createElement('video');"
|
| + + " result = video.canPlayType('video/mp4; codecs=\"avc1\"') ?"
|
| + + " 'YES' : 'NO';"
|
| + + "}"
|
| + "</script> </html>";
|
| }
|
|
|
| private String isKeySystemSupported(String keySystem) throws Exception {
|
| executeJavaScriptAndWaitForResult(mAwContents, mContentsClient,
|
| - "isKeySystemSupported('" + keySystem + "')");
|
| + "result = null; isKeySystemSupported('" + keySystem + "')");
|
|
|
| poll(new Callable<Boolean>() {
|
| @Override
|
| @@ -83,6 +89,20 @@ public class KeySystemTest extends AwTestBase {
|
| return getResultFromJS();
|
| }
|
|
|
| + private boolean areProprietaryCodecsSupported() throws Exception {
|
| + executeJavaScriptAndWaitForResult(
|
| + mAwContents, mContentsClient, "result = null; areProprietaryCodecsSupported()");
|
| +
|
| + poll(new Callable<Boolean>() {
|
| + @Override
|
| + public Boolean call() throws Exception {
|
| + return !getResultFromJS().equals("null");
|
| + }
|
| + });
|
| +
|
| + return getResultFromJS().equals("YES");
|
| + }
|
| +
|
| private String getResultFromJS() {
|
| String result = "null";
|
| try {
|
| @@ -94,6 +114,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 +135,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 +148,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"})
|
|
|