summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2019-03-07 11:22:11 -0800
committerRobert Shih <robertshih@google.com>2019-03-07 11:31:53 -0800
commitc6b74cbf65ed602395119c1eb5886c7b1e444727 (patch)
tree4a4a590ae21ee7d4ab372e5cd747774cc844592d
parent9821dd321dafba4a35b8f672b2e247b0bfe2e9f7 (diff)
downloadframeworks_av-c6b74cbf65ed602395119c1eb5886c7b1e444727.tar.gz
frameworks_av-c6b74cbf65ed602395119c1eb5886c7b1e444727.tar.bz2
frameworks_av-c6b74cbf65ed602395119c1eb5886c7b1e444727.zip
clearkey hidl: expand mock error handling
* handle mock error for offline license APIs * add mock INVALID_STATE and UNKNOWN errors Bug: 118402843 Test: VtsHalDrmV1_2TargetTest Change-Id: Id59610d44f5786b2bb030c46e41aaae3d6c5b954
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp15
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/include/ClearKeyDrmProperties.h1
2 files changed, 15 insertions, 1 deletions
diff --git a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
index badb99e402..d7dacb8a68 100644
--- a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
+++ b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
@@ -527,6 +527,10 @@ Return<Status> DrmPlugin::setPropertyString(
mMockError = Status_V1_2::ERROR_DRM_SESSION_LOST_STATE;
} else if (value == kFrameTooLargeValue) {
mMockError = Status_V1_2::ERROR_DRM_FRAME_TOO_LARGE;
+ } else if (value == kInvalidStateValue) {
+ mMockError = Status_V1_2::ERROR_DRM_INVALID_STATE;
+ } else {
+ mMockError = Status_V1_2::ERROR_DRM_UNKNOWN;
}
}
@@ -683,6 +687,10 @@ Return<void> DrmPlugin::getMetrics(getMetrics_cb _hidl_cb) {
Return<void> DrmPlugin::getOfflineLicenseKeySetIds(getOfflineLicenseKeySetIds_cb _hidl_cb) {
std::vector<std::string> licenseNames = mFileHandle.ListLicenses();
std::vector<KeySetId> keySetIds;
+ if (mMockError != Status_V1_2::OK) {
+ _hidl_cb(toStatus_1_0(mMockError), keySetIds);
+ return Void();
+ }
for (const auto& name : licenseNames) {
std::vector<uint8_t> keySetId(name.begin(), name.end());
keySetIds.push_back(keySetId);
@@ -693,6 +701,9 @@ Return<void> DrmPlugin::getOfflineLicenseKeySetIds(getOfflineLicenseKeySetIds_cb
Return<Status> DrmPlugin::removeOfflineLicense(const KeySetId& keySetId) {
+ if (mMockError != Status_V1_2::OK) {
+ return toStatus_1_0(mMockError);
+ }
std::string licenseName(keySetId.begin(), keySetId.end());
if (mFileHandle.DeleteLicense(licenseName)) {
return Status::OK;
@@ -706,7 +717,9 @@ Return<void> DrmPlugin::getOfflineLicenseState(const KeySetId& keySetId,
DeviceFiles::LicenseState state;
std::string license;
OfflineLicenseState hLicenseState;
- if (mFileHandle.RetrieveLicense(licenseName, &state, &license)) {
+ if (mMockError != Status_V1_2::OK) {
+ _hidl_cb(toStatus_1_0(mMockError), OfflineLicenseState::UNKNOWN);
+ } else if (mFileHandle.RetrieveLicense(licenseName, &state, &license)) {
switch (state) {
case DeviceFiles::kLicenseStateActive:
hLicenseState = OfflineLicenseState::USABLE;
diff --git a/drm/mediadrm/plugins/clearkey/hidl/include/ClearKeyDrmProperties.h b/drm/mediadrm/plugins/clearkey/hidl/include/ClearKeyDrmProperties.h
index 1bbc822fbf..b83ce69d4e 100644
--- a/drm/mediadrm/plugins/clearkey/hidl/include/ClearKeyDrmProperties.h
+++ b/drm/mediadrm/plugins/clearkey/hidl/include/ClearKeyDrmProperties.h
@@ -40,6 +40,7 @@ static const std::string kDrmErrorTestValue("");
static const std::string kResourceContentionValue("resourceContention");
static const std::string kLostStateValue("lostState");
static const std::string kFrameTooLargeValue("frameTooLarge");
+static const std::string kInvalidStateValue("invalidState");
static const std::string kDeviceIdKey("deviceId");
static const uint8_t kTestDeviceIdData[] =