summaryrefslogtreecommitdiffstats
path: root/media/libmedia/IDrm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libmedia/IDrm.cpp')
-rw-r--r--media/libmedia/IDrm.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/media/libmedia/IDrm.cpp b/media/libmedia/IDrm.cpp
index 1641b56..1578846 100644
--- a/media/libmedia/IDrm.cpp
+++ b/media/libmedia/IDrm.cpp
@@ -51,7 +51,8 @@ enum {
ENCRYPT,
DECRYPT,
SIGN,
- VERIFY
+ VERIFY,
+ SET_LISTENER
};
struct BpDrm : public BpInterface<IDrm> {
@@ -384,6 +385,14 @@ struct BpDrm : public BpInterface<IDrm> {
return reply.readInt32();
}
+ virtual status_t setListener(const sp<IDrmClient>& listener) {
+ Parcel data, reply;
+ data.writeInterfaceToken(IDrm::getInterfaceDescriptor());
+ data.writeStrongBinder(listener->asBinder());
+ remote()->transact(SET_LISTENER, data, &reply);
+ return reply.readInt32();
+ }
+
private:
void readVector(Parcel &reply, Vector<uint8_t> &vector) const {
uint32_t size = reply.readInt32();
@@ -712,6 +721,14 @@ status_t BnDrm::onTransact(
return OK;
}
+ case SET_LISTENER: {
+ CHECK_INTERFACE(IDrm, data, reply);
+ sp<IDrmClient> listener =
+ interface_cast<IDrmClient>(data.readStrongBinder());
+ reply->writeInt32(setListener(listener));
+ return NO_ERROR;
+ } break;
+
default:
return BBinder::onTransact(code, data, reply, flags);
}