From ad02cc6c4091a44fb60c475731c8f4cac9a55ab0 Mon Sep 17 00:00:00 2001 From: Edwin Wong Date: Thu, 23 Aug 2018 13:48:27 -0700 Subject: Add onExpirationUpdate and onKeyStatusChange listeners. We must only create one DrmListener instance. We then process different listeners in DrmListener::notify. To facilitate testing, we call the listeners from clearkey plugin's provideKeyResponse function. We have previously tested EventType::VENDOR_DEFINED in the same manner. bug: 77712870 Test: native CTS test testClearKeyPlaybackCenc Test: CTS MediaDrmMockTest Change-Id: Ie15e3012a4068824f72371a66e9fca2ee27180f8 --- drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'drm') diff --git a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp index d51e29dc57..3b6108526b 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp +++ b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp @@ -245,11 +245,29 @@ Return DrmPlugin::provideKeyResponse( setPlayPolicy(); std::vector keySetId; + keySetId.clear(); + Status status = session->provideKeyResponse(response); if (status == Status::OK) { - // This is for testing AMediaDrm_setOnEventListener only. - sendEvent(EventType::VENDOR_DEFINED, 0, scope); - keySetId.clear(); + // Test calling AMediaDrm listeners. + sendEvent(EventType::VENDOR_DEFINED, toVector(scope), toVector(scope)); + + sendExpirationUpdate(toVector(scope), 100); + + std::vector keysStatus; + KeyStatus keyStatus; + + std::vector keyId1 = { 0xA, 0xB, 0xC }; + keyStatus.keyId = keyId1; + keyStatus.type = V1_0::KeyStatusType::USABLE; + keysStatus.push_back(keyStatus); + + std::vector keyId2 = { 0xD, 0xE, 0xF }; + keyStatus.keyId = keyId2; + keyStatus.type = V1_0::KeyStatusType::EXPIRED; + keysStatus.push_back(keyStatus); + + sendKeysChange(toVector(scope), keysStatus, true); } installSecureStop(scope); -- cgit v1.2.3