| 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 5bb5901c639a8d168bc8ebfbfc5251669a44be7c..9fc0596107a3d63314f27444d1540bb65465bc93 100644
|
| --- a/media/base/android/media_drm_bridge.cc
|
| +++ b/media/base/android/media_drm_bridge.cc
|
| @@ -25,6 +25,7 @@
|
| #include "base/sys_info.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "jni/MediaDrmBridge_jni.h"
|
| +#include "media/base/android/android_util.h"
|
| #include "media/base/android/media_codec_util.h"
|
| #include "media/base/android/media_drm_bridge_client.h"
|
| #include "media/base/android/media_drm_bridge_delegate.h"
|
| @@ -71,13 +72,6 @@ enum class KeyType : uint32_t {
|
| KEY_TYPE_OFFLINE = 2,
|
| };
|
|
|
| -// Converts jbyteArray (byte[] in Java) into std::string.
|
| -std::string AsString(JNIEnv* env, jbyteArray j_byte_array) {
|
| - std::vector<uint8_t> byte_vector;
|
| - JavaByteArrayToByteVector(env, j_byte_array, &byte_vector);
|
| - return std::string(byte_vector.begin(), byte_vector.end());
|
| -}
|
| -
|
| const uint8_t kWidevineUuid[16] = {
|
| 0xED, 0xEF, 0x8B, 0xA9, 0x79, 0xD6, 0x4A, 0xCE, //
|
| 0xA3, 0xC8, 0x27, 0xDC, 0xD5, 0x1D, 0x21, 0xED};
|
| @@ -636,7 +630,7 @@ void MediaDrmBridge::OnStartProvisioning(
|
| base::Bind(&MediaDrmBridge::SendProvisioningRequest,
|
| weak_factory_.GetWeakPtr(),
|
| ConvertJavaStringToUTF8(env, j_default_url),
|
| - AsString(env, j_request_data)));
|
| + JavaBytesToString(env, j_request_data)));
|
| }
|
|
|
| void MediaDrmBridge::OnPromiseResolved(JNIEnv* env,
|
| @@ -655,7 +649,7 @@ void MediaDrmBridge::OnPromiseResolvedWithSession(
|
| task_runner_->PostTask(FROM_HERE,
|
| base::Bind(&MediaDrmBridge::ResolvePromiseWithSession,
|
| weak_factory_.GetWeakPtr(), j_promise_id,
|
| - AsString(env, j_session_id)));
|
| + JavaBytesToString(env, j_session_id)));
|
| }
|
|
|
| void MediaDrmBridge::OnPromiseRejected(
|
| @@ -683,8 +677,9 @@ void MediaDrmBridge::OnSessionMessage(
|
| GetMessageType(static_cast<RequestType>(j_message_type));
|
|
|
| task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(session_message_cb_, AsString(env, j_session_id),
|
| - message_type, message));
|
| + FROM_HERE,
|
| + base::Bind(session_message_cb_, JavaBytesToString(env, j_session_id),
|
| + message_type, message));
|
| }
|
|
|
| void MediaDrmBridge::OnSessionClosed(
|
| @@ -692,7 +687,7 @@ void MediaDrmBridge::OnSessionClosed(
|
| const JavaParamRef<jobject>& j_media_drm,
|
| const JavaParamRef<jbyteArray>& j_session_id) {
|
| DVLOG(2) << __func__;
|
| - std::string session_id = AsString(env, j_session_id);
|
| + std::string session_id = JavaBytesToString(env, j_session_id);
|
| task_runner_->PostTask(FROM_HERE, base::Bind(session_closed_cb_, session_id));
|
| }
|
|
|
| @@ -732,7 +727,7 @@ void MediaDrmBridge::OnSessionKeysChange(
|
|
|
| task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(session_keys_change_cb_, AsString(env, j_session_id),
|
| + base::Bind(session_keys_change_cb_, JavaBytesToString(env, j_session_id),
|
| has_additional_usable_key, base::Passed(&cdm_keys_info)));
|
|
|
| if (has_additional_usable_key) {
|
| @@ -760,9 +755,9 @@ void MediaDrmBridge::OnSessionExpirationUpdate(
|
| jlong expiry_time_ms) {
|
| DVLOG(2) << __func__ << ": " << expiry_time_ms << " ms";
|
| task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(session_expiration_update_cb_, AsString(env, j_session_id),
|
| - base::Time::FromDoubleT(expiry_time_ms / 1000.0)));
|
| + FROM_HERE, base::Bind(session_expiration_update_cb_,
|
| + JavaBytesToString(env, j_session_id),
|
| + base::Time::FromDoubleT(expiry_time_ms / 1000.0)));
|
| }
|
|
|
| void MediaDrmBridge::OnResetDeviceCredentialsCompleted(
|
| @@ -827,7 +822,7 @@ MediaDrmBridge::MediaDrmBridge(
|
| // Note: OnMediaCryptoReady() could be called in this call.
|
| j_media_drm_.Reset(Java_MediaDrmBridge_create(
|
| env, j_scheme_uuid, j_security_origin, j_security_level,
|
| - reinterpret_cast<intptr_t>(this)));
|
| + reinterpret_cast<intptr_t>(this), reinterpret_cast<intptr_t>(&storage_)));
|
| }
|
|
|
| MediaDrmBridge::~MediaDrmBridge() {
|
| @@ -868,16 +863,6 @@ MediaDrmBridge::SecurityLevel MediaDrmBridge::GetSecurityLevel() {
|
| return GetSecurityLevelFromString(security_level_str);
|
| }
|
|
|
| -// We have to use scoped_ptr to pass ScopedJavaGlobalRef with a callback.
|
| -// TODO(timav): Check whether we can simply pass j_media_crypto_->obj() in the
|
| -// callback.
|
| -MediaDrmBridge::JavaObjectPtr MediaDrmBridge::CreateJavaObjectPtr(
|
| - jobject object) {
|
| - JavaObjectPtr j_object_ptr(new ScopedJavaGlobalRef<jobject>());
|
| - j_object_ptr->Reset(AttachCurrentThread(), object);
|
| - return j_object_ptr;
|
| -}
|
| -
|
| void MediaDrmBridge::NotifyMediaCryptoReady(JavaObjectPtr j_media_crypto) {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| DCHECK(j_media_crypto);
|
| @@ -888,6 +873,9 @@ void MediaDrmBridge::NotifyMediaCryptoReady(JavaObjectPtr j_media_crypto) {
|
| if (media_crypto_ready_cb_.is_null())
|
| return;
|
|
|
| + // We have to use scoped_ptr to pass ScopedJavaGlobalRef with a callback.
|
| + // TODO(timav): Check whether we can simply pass j_media_crypto_->obj() in the
|
| + // callback.
|
| base::ResetAndReturn(&media_crypto_ready_cb_)
|
| .Run(CreateJavaObjectPtr(j_media_crypto_->obj()),
|
| IsProtectedSurfaceRequired());
|
|
|