| Index: media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
|
| diff --git a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
|
| index 128b7ac3c532f8381d10c2c6309f69c5284b1d13..add05056accd59fbb60462ee059763266c32c228 100644
|
| --- a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
|
| +++ b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
|
| @@ -266,7 +266,12 @@ public class MediaDrmBridge {
|
| Log.e(TAG, "Cannot create MediaCrypto", e);
|
| }
|
|
|
| - mMediaDrm.closeSession(mMediaCryptoSession);
|
| + try {
|
| + // Some implementations let this method throw exception, crbug/611865
|
| + mMediaDrm.closeSession(mMediaCryptoSession);
|
| + } catch (Exception e) {
|
| + Log.e(TAG, "closeSession failed: ", e);
|
| + }
|
| mMediaCryptoSession = null;
|
|
|
| return false;
|
| @@ -471,7 +476,13 @@ public class MediaDrmBridge {
|
| } catch (Exception e) {
|
| Log.e(TAG, "removeKeys failed: ", e);
|
| }
|
| - mMediaDrm.closeSession(sessionId.array());
|
| +
|
| + try {
|
| + // Some implementations let this method throw exception, crbug/611865
|
| + mMediaDrm.closeSession(sessionId.array());
|
| + } catch (Exception e) {
|
| + Log.e(TAG, "closeSession failed: ", e);
|
| + }
|
| onSessionClosed(sessionId.array());
|
| }
|
| mSessionIds.clear();
|
| @@ -483,7 +494,12 @@ public class MediaDrmBridge {
|
| // MediaCrypto never notified. Notify a null one now.
|
| onMediaCryptoReady(null);
|
| } else {
|
| - mMediaDrm.closeSession(mMediaCryptoSession);
|
| + try {
|
| + // Some implementations let this method throw exception, crbug/611865
|
| + mMediaDrm.closeSession(mMediaCryptoSession);
|
| + } catch (Exception e) {
|
| + Log.e(TAG, "closeSession failed: ", e);
|
| + }
|
| mMediaCryptoSession = null;
|
| }
|
|
|
| @@ -636,7 +652,12 @@ public class MediaDrmBridge {
|
| MediaDrm.KeyRequest request = null;
|
| request = getKeyRequest(sessionId, initData, mime, optionalParameters);
|
| if (request == null) {
|
| - mMediaDrm.closeSession(sessionId);
|
| + try {
|
| + // Some implementations let this method throw exception, crbug/611865
|
| + mMediaDrm.closeSession(sessionId);
|
| + } catch (Exception e) {
|
| + Log.e(TAG, "closeSession failed", e);
|
| + }
|
| onPromiseRejected(promiseId, "Generate request failed.");
|
| return;
|
| }
|
| @@ -649,7 +670,12 @@ public class MediaDrmBridge {
|
| } catch (android.media.NotProvisionedException e) {
|
| Log.e(TAG, "Device not provisioned", e);
|
| if (newSessionOpened) {
|
| - mMediaDrm.closeSession(sessionId);
|
| + try {
|
| + // Some implementations let this method throw exception, crbug/611865
|
| + mMediaDrm.closeSession(sessionId);
|
| + } catch (Exception ex) {
|
| + Log.e(TAG, "closeSession failed", ex);
|
| + }
|
| }
|
| savePendingCreateSessionData(initData, mime, optionalParameters, promiseId);
|
| startProvisioning();
|
| @@ -699,7 +725,12 @@ public class MediaDrmBridge {
|
| } catch (Exception e) {
|
| Log.e(TAG, "removeKeys failed: ", e);
|
| }
|
| - mMediaDrm.closeSession(sessionId);
|
| + try {
|
| + // Some implementations let this method throw exception, crbug/611865
|
| + mMediaDrm.closeSession(sessionId);
|
| + } catch (Exception e) {
|
| + Log.e(TAG, "closeSession failed: ", e);
|
| + }
|
| mSessionIds.remove(ByteBuffer.wrap(sessionId));
|
| onPromiseResolved(promiseId);
|
| onSessionClosed(sessionId);
|
|
|