Bug 1408445 - handle exception when querying codec capabilities. r?esawin draft
authorJohn Lin <jolin@mozilla.com>
Sun, 15 Oct 2017 14:54:46 +0800
changeset 680565 0a97ef812f3f85dbcab3695d58ad7fc61d06c094
parent 679925 23d2b8b3271312cfb4b0822dead4c484026b2744
child 735887 59d30564a3b6a029f93a154a23f247a862fe9502
push id84537
push userbmo:jolin@mozilla.com
push dateSun, 15 Oct 2017 07:51:57 +0000
reviewersesawin
bugs1408445
milestone58.0a1
Bug 1408445 - handle exception when querying codec capabilities. r?esawin MozReview-Commit-ID: 5Ee3eQqAgvG
mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/JellyBeanAsyncCodec.java
mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/JellyBeanAsyncCodec.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/JellyBeanAsyncCodec.java
@@ -306,20 +306,24 @@ final class JellyBeanAsyncCodec implemen
 
     @Override
     public boolean isAdaptivePlaybackSupported(String mimeType) {
         return HardwareCodecCapabilityUtils.checkSupportsAdaptivePlayback(mCodec, mimeType);
     }
 
     @Override
     public boolean isTunneledPlaybackSupported(final String mimeType) {
-        return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP
-               && mCodec.getCodecInfo()
-                        .getCapabilitiesForType(mimeType)
-                        .isFeatureSupported(CodecCapabilities.FEATURE_TunneledPlayback);
+        try {
+            return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP
+                   && mCodec.getCodecInfo()
+                            .getCapabilitiesForType(mimeType)
+                            .isFeatureSupported(CodecCapabilities.FEATURE_TunneledPlayback);
+        } catch (Exception e) {
+            return false;
+        }
     }
 
     private void assertCallbacks() {
         if (mCallbackSender == null) {
             throw new IllegalStateException(LOGTAG + ": callback must be supplied with setCallbacks().");
         }
     }
 
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/LollipopAsyncCodec.java
@@ -149,19 +149,23 @@ import java.nio.ByteBuffer;
 
     @Override
     public boolean isAdaptivePlaybackSupported(final String mimeType) {
         return HardwareCodecCapabilityUtils.checkSupportsAdaptivePlayback(mCodec, mimeType);
     }
 
     @Override
     public boolean isTunneledPlaybackSupported(final String mimeType) {
-        return mCodec.getCodecInfo()
-                     .getCapabilitiesForType(mimeType)
-                     .isFeatureSupported(CodecCapabilities.FEATURE_TunneledPlayback);
+        try {
+            return mCodec.getCodecInfo()
+                         .getCapabilitiesForType(mimeType)
+                         .isFeatureSupported(CodecCapabilities.FEATURE_TunneledPlayback);
+        } catch (Exception e) {
+            return false;
+        }
     }
 
     @Override
     public void start() {
         mCodec.start();
     }
 
     @Override