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"}) |