Chromium Code Reviews| 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 bb7e7d6c19784847e39e99b4ec38ae3b69018b8c..8d59c038e8c501c0bb9018a3434a3057b4a9e059 100644 |
| --- a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java |
| +++ b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java |
| @@ -227,17 +227,16 @@ public class MediaDrmBridge { |
| * @return whether a MediaCrypto object is successfully created. |
| */ |
| private boolean createMediaCrypto() throws android.media.NotProvisionedException { |
| - if (mMediaDrm == null) { |
| - return false; |
| - } |
| + assert mMediaDrm != null; |
| assert !mProvisioningPending; |
| assert mMediaCryptoSession == null; |
| assert mMediaCrypto == null; |
| - // Open media crypto session. |
| + // Open media crypto session. This could throw NotProvisionedException. |
| mMediaCryptoSession = openSession(); |
| if (mMediaCryptoSession == null) { |
| Log.e(TAG, "Cannot create MediaCrypto Session."); |
| + release(); |
| return false; |
| } |
| Log.d(TAG, "MediaCrypto Session created: %s", bytesToHexString(mMediaCryptoSession)); |
| @@ -249,7 +248,6 @@ public class MediaDrmBridge { |
| mMediaCrypto = new MediaCrypto(mSchemeUUID, mMediaCryptoSession); |
| Log.d(TAG, "MediaCrypto successfully created!"); |
| // Notify the native code that MediaCrypto is ready. |
|
Tima Vaisburd
2015/12/11 19:31:24
nit: Remove or change this comment?
xhwang
2015/12/11 21:45:16
Done.
|
| - onMediaCryptoReady(); |
| return true; |
| } else { |
| Log.e(TAG, "Cannot create MediaCrypto for unsupported scheme."); |
| @@ -393,14 +391,6 @@ public class MediaDrmBridge { |
| } |
| /** |
| - * Return the MediaCrypto object if available. |
| - */ |
| - @CalledByNative |
| - private MediaCrypto getMediaCrypto() { |
| - return mMediaCrypto; |
| - } |
| - |
| - /** |
| * Reset the device DRM credentials. |
| */ |
| @CalledByNative |
| @@ -582,10 +572,16 @@ public class MediaDrmBridge { |
| byte[] sessionId = null; |
| try { |
| // Create MediaCrypto if necessary. |
| - if (mMediaCrypto == null && !createMediaCrypto()) { |
| - onPromiseRejected(promiseId, "MediaCrypto creation failed."); |
| - return; |
| + if (mMediaCrypto == null) { |
| + boolean success = createMediaCrypto(); |
| + // |mMediaCrypto| could be null upon failure. Notify the native code in all cases. |
| + onMediaCryptoReady(); |
|
qinmin
2015/12/11 19:39:31
You can remove onMediaCryptoReady() and just call
xhwang
2015/12/11 21:45:16
Good point! However, in the next CL I may call onM
|
| + if (!success) { |
| + onPromiseRejected(promiseId, "MediaCrypto creation failed."); |
| + return; |
| + } |
| } |
| + |
| assert mMediaCryptoSession != null; |
| assert mMediaCrypto != null; |
| @@ -806,7 +802,7 @@ public class MediaDrmBridge { |
| private void onMediaCryptoReady() { |
| if (isNativeMediaDrmBridgeValid()) { |
| - nativeOnMediaCryptoReady(mNativeMediaDrmBridge); |
| + nativeOnMediaCryptoReady(mNativeMediaDrmBridge, mMediaCrypto); |
| } |
| } |
| @@ -972,7 +968,8 @@ public class MediaDrmBridge { |
| // Native functions. At the native side, must post the task immediately to |
| // avoid reentrancy issues. |
| - private native void nativeOnMediaCryptoReady(long nativeMediaDrmBridge); |
| + private native void nativeOnMediaCryptoReady( |
| + long nativeMediaDrmBridge, MediaCrypto mediaCrypto); |
| private native void nativeOnStartProvisioning( |
| long nativeMediaDrmBridge, String defaultUrl, byte[] requestData); |