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

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

Issue 1512173003: media: Refactor MediaCrypto creation and notification. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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.h
diff --git a/media/base/android/media_drm_bridge.h b/media/base/android/media_drm_bridge.h
index 80f3c47a429311345d3742962320990f07e3c5b5..d1d7a1c95dfb198f3e09081c0d1b0249b04c7664 100644
--- a/media/base/android/media_drm_bridge.h
+++ b/media/base/android/media_drm_bridge.h
@@ -145,9 +145,11 @@ class MEDIA_EXPORT MediaDrmBridge : public MediaKeys, public PlayerTracker {
const std::string& session_id);
void RejectPromise(uint32_t promise_id, const std::string& error_message);
- // Returns a MediaCrypto object if it's already created. Returns a null object
- // otherwise.
- base::android::ScopedJavaLocalRef<jobject> GetMediaCrypto();
+ // Returns a MediaCrypto object. Can only be called after |j_media_crypto_|
+ // is set.
+ // TODO(xhwang): This is only used by MediaSourcePlayer et al. Remove this
+ // method when MediaSourcePlayer is deprecated.
+ jobject GetMediaCrypto();
// Registers a callback which will be called when MediaCrypto is ready.
// Can be called on any thread. Only one callback should be registered.
@@ -162,7 +164,8 @@ class MEDIA_EXPORT MediaDrmBridge : public MediaKeys, public PlayerTracker {
// Called by Java after a MediaCrypto object is created.
void OnMediaCryptoReady(
JNIEnv* env,
- const base::android::JavaParamRef<jobject>& j_media_drm);
+ const base::android::JavaParamRef<jobject>& j_media_drm,
+ const base::android::JavaParamRef<jobject>& j_media_crypto);
// Called by Java when we need to send a provisioning request,
void OnStartProvisioning(
@@ -260,9 +263,11 @@ class MEDIA_EXPORT MediaDrmBridge : public MediaKeys, public PlayerTracker {
// Get the security level of the media.
SecurityLevel GetSecurityLevel();
- // A helper method that calculates the |media_crypto_ready_cb_| arguments and
- // run this callback.
- void NotifyMediaCryptoReady(const MediaCryptoReadyCB& cb);
+ // A helper method to create a JavaObjectPtr.
+ JavaObjectPtr CreateJavaObjectPtr(jobject object);
+
+ // A helper method that is called when MediaCrypto is ready.
+ void NotifyMediaCryptoReady(JavaObjectPtr j_media_crypto);
// Sends HTTP provisioning request to a provisioning server.
void SendProvisioningRequest(const std::string& default_url,
@@ -277,6 +282,13 @@ class MEDIA_EXPORT MediaDrmBridge : public MediaKeys, public PlayerTracker {
// Java MediaDrm instance.
base::android::ScopedJavaGlobalRef<jobject> j_media_drm_;
+ // Java MediaCrypto instance. Possible values are:
+ // !j_media_crypto_: MediaCrypto creation has not been notified (through
+ // NotifyMediaCryptoReady()).
+ // !j_media_crypto_->is_null(): MediaCrypto successfully created and notified.
+ // j_media_crypto_->is_null(): MediaCrypto notified but creation failed.
Tima Vaisburd 2015/12/11 02:15:21 nit: I'd change the order: "MediaCrypto creation f
xhwang 2015/12/11 05:50:19 Done.
+ JavaObjectPtr j_media_crypto_;
+
// The callback to create a ProvisionFetcher.
CreateFetcherCB create_fetcher_cb_;

Powered by Google App Engine
This is Rietveld 408576698