diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp index f412161f418a2..f9090d27e9fe3 100644 --- a/media/jni/android_media_MediaDrm.cpp +++ b/media/jni/android_media_MediaDrm.cpp @@ -537,6 +537,40 @@ void JDrm::notify(DrmPlugin::EventType eventType, int extra, const Parcel *obj) } } +void JDrm::sendEvent( + DrmPlugin::EventType eventType, + const hardware::hidl_vec &sessionId, + const hardware::hidl_vec &data) { + Parcel obj; + DrmUtils::WriteByteArray(obj, sessionId); + DrmUtils::WriteByteArray(obj, data); + notify(eventType, 0, &obj); +} + +void JDrm::sendExpirationUpdate( + const hardware::hidl_vec &sessionId, + int64_t expiryTimeInMS) { + Parcel obj; + DrmUtils::WriteExpirationUpdateToParcel(obj, sessionId, expiryTimeInMS); + notify(DrmPlugin::kDrmPluginEventExpirationUpdate, 0, &obj); +} + +void JDrm::sendKeysChange( + const hardware::hidl_vec &sessionId, + const std::vector &keyStatusList, + bool hasNewUsableKey) { + Parcel obj; + DrmUtils::WriteKeysChange(obj, sessionId, keyStatusList, hasNewUsableKey); + notify(DrmPlugin::kDrmPluginEventKeysChange, 0, &obj); +} + +void JDrm::sendSessionLostState( + const hardware::hidl_vec &sessionId) { + Parcel obj; + DrmUtils::WriteByteArray(obj, sessionId); + notify(DrmPlugin::kDrmPluginEventSessionLostState, 0, &obj); +} + void JDrm::disconnect() { if (mDrm != NULL) { mDrm->destroyPlugin(); diff --git a/media/jni/android_media_MediaDrm.h b/media/jni/android_media_MediaDrm.h index 684069b0120ac..37d9e079d857a 100644 --- a/media/jni/android_media_MediaDrm.h +++ b/media/jni/android_media_MediaDrm.h @@ -21,6 +21,8 @@ #include #include +#include +#include #include #include @@ -44,7 +46,23 @@ struct JDrm : public BnDrmClient { status_t initCheck() const; sp getDrm() { return mDrm; } - void notify(DrmPlugin::EventType, int extra, const Parcel *obj); + void sendEvent( + DrmPlugin::EventType eventType, + const hardware::hidl_vec &sessionId, + const hardware::hidl_vec &data) override; + + void sendExpirationUpdate( + const hardware::hidl_vec &sessionId, + int64_t expiryTimeInMS) override; + + void sendKeysChange( + const hardware::hidl_vec &sessionId, + const std::vector &keyStatusList, + bool hasNewUsableKey) override; + + void sendSessionLostState( + const hardware::hidl_vec &sessionId) override; + status_t setListener(const sp& listener); void disconnect(); @@ -63,6 +81,8 @@ private: static sp MakeDrm(); static sp MakeDrm(const uint8_t uuid[16], const String8 &appPackageName); + void notify(DrmPlugin::EventType, int extra, const Parcel *obj); + DISALLOW_EVIL_CONSTRUCTORS(JDrm); };