Chromium Code Reviews| Index: media/base/android/media_drm_bridge.cc |
| diff --git a/media/base/android/media_drm_bridge.cc b/media/base/android/media_drm_bridge.cc |
| index 83b14ae185b0d04bb7ccc4063daeb70fc25f4035..9abc9cdc0d27c0ca5c44cf915e2fa21bfc6e902f 100644 |
| --- a/media/base/android/media_drm_bridge.cc |
| +++ b/media/base/android/media_drm_bridge.cc |
| @@ -462,9 +462,19 @@ void MediaDrmBridge::LoadSession( |
| DCHECK(base::FeatureList::IsEnabled(kMediaDrmPersistentLicense)); |
|
xhwang
2017/04/05 18:31:50
You can probably just DCHECK(IsPersistentLicenseTy
yucliu1
2017/04/05 23:04:07
Done.
|
| - NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android."; |
| - promise->reject(CdmPromise::NOT_SUPPORTED_ERROR, 0, |
| - "LoadSession() is not supported."); |
| + if (session_type != CdmSessionType::PERSISTENT_LICENSE_SESSION) { |
| + promise->reject( |
| + CdmPromise::NOT_SUPPORTED_ERROR, 0, |
| + "LoadSession() is only supported for 'persistent-license'."); |
| + return; |
| + } |
| + |
| + JNIEnv* env = AttachCurrentThread(); |
| + ScopedJavaLocalRef<jbyteArray> j_session_id = base::android::ToJavaByteArray( |
| + env, reinterpret_cast<const uint8_t*>(session_id.data()), |
| + session_id.size()); |
|
xhwang
2017/04/05 18:31:50
Might worth putting this in a helper function.
yucliu1
2017/04/05 23:04:07
Done.
|
| + uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
| + Java_MediaDrmBridge_loadSession(env, j_media_drm_, j_session_id, promise_id); |
| } |
| void MediaDrmBridge::UpdateSession( |
| @@ -505,9 +515,13 @@ void MediaDrmBridge::RemoveSession( |
| DCHECK(task_runner_->BelongsToCurrentThread()); |
| DVLOG(2) << __func__; |
| - NOTIMPLEMENTED() << "EME persistent sessions not yet supported on Android."; |
| - promise->reject(CdmPromise::NOT_SUPPORTED_ERROR, 0, |
| - "RemoveSession() is not supported."); |
| + JNIEnv* env = AttachCurrentThread(); |
| + ScopedJavaLocalRef<jbyteArray> j_session_id = base::android::ToJavaByteArray( |
| + env, reinterpret_cast<const uint8_t*>(session_id.data()), |
| + session_id.size()); |
| + uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
| + Java_MediaDrmBridge_removeSession(env, j_media_drm_, j_session_id, |
| + promise_id); |
| } |
| CdmContext* MediaDrmBridge::GetCdmContext() { |