diff options
| author | Jeff Tinker <jtinker@google.com> | 2015-03-16 13:39:29 -0700 | 
|---|---|---|
| committer | Jeff Tinker <jtinker@google.com> | 2015-03-16 15:39:03 -0700 | 
| commit | d072c909d87f8150433860f6de4c11df6e09e2f9 (patch) | |
| tree | 57ddf1e47d3ce322e10214991e01b509aeeb1155 | |
| parent | eb0ee0e842d3b8294aa6c0b797eaf7aff3fd2f89 (diff) | |
| download | frameworks_av-d072c909d87f8150433860f6de4c11df6e09e2f9.zip frameworks_av-d072c909d87f8150433860f6de4c11df6e09e2f9.tar.gz frameworks_av-d072c909d87f8150433860f6de4c11df6e09e2f9.tar.bz2  | |
Report key request message type for unprefixed EME
bug: 19771299
Change-Id: I02f0a4532b5ea8a7e680d71f45ac0da06879f3d6
| -rw-r--r-- | drm/mediadrm/plugins/clearkey/DrmPlugin.cpp | 5 | ||||
| -rw-r--r-- | drm/mediadrm/plugins/clearkey/DrmPlugin.h | 3 | ||||
| -rw-r--r-- | drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp | 14 | ||||
| -rw-r--r-- | drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h | 3 | ||||
| -rw-r--r-- | include/media/IDrm.h | 3 | ||||
| -rw-r--r-- | media/libmedia/IDrm.cpp | 14 | ||||
| -rw-r--r-- | media/libmediaplayerservice/Drm.cpp | 6 | ||||
| -rw-r--r-- | media/libmediaplayerservice/Drm.h | 3 | ||||
| -rw-r--r-- | media/ndk/NdkMediaDrm.cpp | 5 | 
9 files changed, 40 insertions, 16 deletions
diff --git a/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp index 96fca94..6b8c772 100644 --- a/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp +++ b/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp @@ -48,12 +48,13 @@ status_t DrmPlugin::getKeyRequest(          KeyType keyType,          const KeyedVector<String8, String8>& optionalParameters,          Vector<uint8_t>& request, -        String8& defaultUrl) { +        String8& defaultUrl, +        DrmPlugin::KeyRequestType *keyRequestType) {      UNUSED(optionalParameters);      if (keyType != kKeyType_Streaming) {          return android::ERROR_DRM_CANNOT_HANDLE;      } - +    *keyRequestType = DrmPlugin::kKeyRequestType_Initial;      sp<Session> session = mSessionLibrary->findSession(scope);      defaultUrl.clear();      return session->getKeyRequest(initData, initDataType, &request); diff --git a/drm/mediadrm/plugins/clearkey/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/DrmPlugin.h index 6139f1f..ba4aefe 100644 --- a/drm/mediadrm/plugins/clearkey/DrmPlugin.h +++ b/drm/mediadrm/plugins/clearkey/DrmPlugin.h @@ -54,7 +54,8 @@ public:              KeyType keyType,              const KeyedVector<String8, String8>& optionalParameters,              Vector<uint8_t>& request, -            String8& defaultUrl); +            String8& defaultUrl, +            DrmPlugin::KeyRequestType *keyRequestType);      virtual status_t provideKeyResponse(              const Vector<uint8_t>& scope, diff --git a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp index 7eac0a1..9b786c5 100644 --- a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp +++ b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.cpp @@ -111,7 +111,8 @@ namespace android {                                            Vector<uint8_t> const &initData,                                            String8 const &mimeType, KeyType keyType,                                            KeyedVector<String8, String8> const &optionalParameters, -                                          Vector<uint8_t> &request, String8 &defaultUrl) +                                          Vector<uint8_t> &request, String8 &defaultUrl, +                                          KeyRequestType *keyRequestType)      {          Mutex::Autolock lock(mLock);          ALOGD("MockDrmPlugin::getKeyRequest(sessionId=%s, initData=%s, mimeType=%s" @@ -149,6 +150,7 @@ namespace android {          // Properties used in mock test, set by cts test app returned from mock plugin          //   byte[] mock-request       -> request          //   string mock-default-url   -> defaultUrl +        //   string mock-key-request-type -> keyRequestType          index = mByteArrayProperties.indexOfKey(String8("mock-request"));          if (index < 0) { @@ -165,6 +167,16 @@ namespace android {          } else {              defaultUrl = mStringProperties.valueAt(index);          } + +        index = mStringProperties.indexOfKey(String8("mock-keyRequestType")); +        if (index < 0) { +            ALOGD("Missing 'mock-keyRequestType' parameter for mock"); +            return BAD_VALUE; +        } else { +            *keyRequestType = static_cast<KeyRequestType>( +                atoi(mStringProperties.valueAt(index).string())); +        } +          return OK;      } diff --git a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h index d1d8058..d0f2ddb 100644 --- a/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h +++ b/drm/mediadrm/plugins/mock/MockDrmCryptoPlugin.h @@ -62,7 +62,8 @@ namespace android {                                 Vector<uint8_t> const &initData,                                 String8 const &mimeType, KeyType keyType,                                 KeyedVector<String8, String8> const &optionalParameters, -                               Vector<uint8_t> &request, String8 &defaultUrl); +                               Vector<uint8_t> &request, String8 &defaultUrl, +                               KeyRequestType *keyRequestType);          status_t provideKeyResponse(Vector<uint8_t> const &sessionId,                                      Vector<uint8_t> const &response, diff --git a/include/media/IDrm.h b/include/media/IDrm.h index affcbd7..9449beb 100644 --- a/include/media/IDrm.h +++ b/include/media/IDrm.h @@ -47,7 +47,8 @@ struct IDrm : public IInterface {                        Vector<uint8_t> const &initData,                        String8 const &mimeType, DrmPlugin::KeyType keyType,                        KeyedVector<String8, String8> const &optionalParameters, -                      Vector<uint8_t> &request, String8 &defaultUrl) = 0; +                      Vector<uint8_t> &request, String8 &defaultUrl, +                      DrmPlugin::KeyRequestType *keyRequestType) = 0;      virtual status_t provideKeyResponse(Vector<uint8_t> const &sessionId,                                          Vector<uint8_t> const &response, diff --git a/media/libmedia/IDrm.cpp b/media/libmedia/IDrm.cpp index b08fa82..714a0b3 100644 --- a/media/libmedia/IDrm.cpp +++ b/media/libmedia/IDrm.cpp @@ -125,7 +125,8 @@ struct BpDrm : public BpInterface<IDrm> {                        Vector<uint8_t> const &initData,                        String8 const &mimeType, DrmPlugin::KeyType keyType,                        KeyedVector<String8, String8> const &optionalParameters, -                      Vector<uint8_t> &request, String8 &defaultUrl) { +                      Vector<uint8_t> &request, String8 &defaultUrl, +                      DrmPlugin::KeyRequestType *keyRequestType) {          Parcel data, reply;          data.writeInterfaceToken(IDrm::getInterfaceDescriptor()); @@ -143,6 +144,7 @@ struct BpDrm : public BpInterface<IDrm> {          readVector(reply, request);          defaultUrl = reply.readString8(); +        *keyRequestType = static_cast<DrmPlugin::KeyRequestType>(reply.readInt32());          return reply.readInt32();      } @@ -562,13 +564,15 @@ status_t BnDrm::onTransact(              Vector<uint8_t> request;              String8 defaultUrl; +            DrmPlugin::KeyRequestType keyRequestType; + +            status_t result = getKeyRequest(sessionId, initData, mimeType, +                    keyType, optionalParameters, request, defaultUrl, +                    &keyRequestType); -            status_t result = getKeyRequest(sessionId, initData, -                                            mimeType, keyType, -                                            optionalParameters, -                                            request, defaultUrl);              writeVector(reply, request);              reply->writeString8(defaultUrl); +            reply->writeInt32(static_cast<int32_t>(keyRequestType));              reply->writeInt32(result);              return OK;          } diff --git a/media/libmediaplayerservice/Drm.cpp b/media/libmediaplayerservice/Drm.cpp index d4f6fab..49e01d1 100644 --- a/media/libmediaplayerservice/Drm.cpp +++ b/media/libmediaplayerservice/Drm.cpp @@ -358,7 +358,8 @@ status_t Drm::getKeyRequest(Vector<uint8_t> const &sessionId,                              Vector<uint8_t> const &initData,                              String8 const &mimeType, DrmPlugin::KeyType keyType,                              KeyedVector<String8, String8> const &optionalParameters, -                            Vector<uint8_t> &request, String8 &defaultUrl) { +                            Vector<uint8_t> &request, String8 &defaultUrl, +                            DrmPlugin::KeyRequestType *keyRequestType) {      Mutex::Autolock autoLock(mLock);      if (mInitCheck != OK) { @@ -372,7 +373,8 @@ status_t Drm::getKeyRequest(Vector<uint8_t> const &sessionId,      DrmSessionManager::Instance()->useSession(sessionId);      return mPlugin->getKeyRequest(sessionId, initData, mimeType, keyType, -                                  optionalParameters, request, defaultUrl); +                                  optionalParameters, request, defaultUrl, +                                  keyRequestType);  }  status_t Drm::provideKeyResponse(Vector<uint8_t> const &sessionId, diff --git a/media/libmediaplayerservice/Drm.h b/media/libmediaplayerservice/Drm.h index 0cea639..7e8f246 100644 --- a/media/libmediaplayerservice/Drm.h +++ b/media/libmediaplayerservice/Drm.h @@ -53,7 +53,8 @@ struct Drm : public BnDrm,                        Vector<uint8_t> const &initData,                        String8 const &mimeType, DrmPlugin::KeyType keyType,                        KeyedVector<String8, String8> const &optionalParameters, -                      Vector<uint8_t> &request, String8 &defaultUrl); +                      Vector<uint8_t> &request, String8 &defaultUrl, +                      DrmPlugin::KeyRequestType *keyRequestType);      virtual status_t provideKeyResponse(Vector<uint8_t> const &sessionId,                                          Vector<uint8_t> const &response, diff --git a/media/ndk/NdkMediaDrm.cpp b/media/ndk/NdkMediaDrm.cpp index 7a1048c..83a5ba1 100644 --- a/media/ndk/NdkMediaDrm.cpp +++ b/media/ndk/NdkMediaDrm.cpp @@ -312,8 +312,10 @@ media_status_t AMediaDrm_getKeyRequest(AMediaDrm *mObj, const AMediaDrmScope *sc                  String8(optionalParameters[i].mValue));      }      String8 defaultUrl; +    DrmPlugin::KeyRequestType keyRequestType;      status_t status = mObj->mDrm->getKeyRequest(*iter, mdInit, String8(mimeType), -            mdKeyType, mdOptionalParameters, mObj->mKeyRequest, defaultUrl); +            mdKeyType, mdOptionalParameters, mObj->mKeyRequest, defaultUrl, +            &keyRequestType);      if (status != OK) {          return translateStatus(status);      } else { @@ -725,4 +727,3 @@ media_status_t AMediaDrm_verify(AMediaDrm *mObj, const AMediaDrmSessionId *sessi  }  } // extern "C" -  | 
