Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(822)

Unified Diff: media/base/android/media_drm_bridge.cc

Issue 2796843002: [Clank] Load/Remove persistent license (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698