Squashed merge 3 CLs.

1. "Change CdmResponseType from enum into a struct"
Merged from http://go/wvgerrit/163199
Bug: 253271674

2. "Log request information when server returns 401"
Bug: 260760387
Bug: 186031735
Merged from http://go/wvgerrit/162798

3. "Specify server version on the command line"
Bug: 251599048
Merged from http://go/wvgerrit/158897

Test: build android.hardware.drm-service.widevine
Test: Netflix and Play Movies & TV
Test: build_and_run_all_unit_tests.sh

Bug: 253271674
Change-Id: I70c950acce070609ee0343920ec68e66b058bc23
This commit is contained in:
Robert Shih
2022-11-16 10:02:18 -08:00
committed by Edwin Wong
parent ac9641ae13
commit 096b0eda5a
46 changed files with 1726 additions and 1443 deletions

View File

@@ -446,7 +446,7 @@ SecurityLevel WVDrmPlugin::mapSecurityLevel(const std::string& level) {
if (in_keyType == KeyType::RELEASE) {
// When releasing keys, we do not have a session ID.
status = mapCdmResponseType<Status>(res);
status = mapCdmResponseType(res);
} else {
// For all other requests, we have a session ID.
status = mapAndNotifyOfCdmResponseType(in_scope, res);
@@ -949,7 +949,8 @@ Status WVDrmPlugin::unprovisionDevice() {
std::string level = info[wvcdm::QUERY_KEY_SECURITY_LEVEL];
securityLevel = mapSecurityLevel(level);
} else {
ALOGE("Failed to query security level, status=%d", status);
ALOGE("Failed to query security level, status=%d",
static_cast<int>(status));
}
*_aidl_return = securityLevel;
@@ -971,7 +972,7 @@ Status WVDrmPlugin::unprovisionDevice() {
vector<CdmSecurityLevel> levels = {wvcdm::kSecurityLevelL1,
wvcdm::kSecurityLevelL3};
CdmResponseType res = wvcdm::UNKNOWN_ERROR;
CdmResponseType res(wvcdm::UNKNOWN_ERROR);
for (auto level : levels) {
vector<CdmKeySetId> cdmKeySetIds;
@@ -1010,7 +1011,7 @@ Status WVDrmPlugin::unprovisionDevice() {
return toNdkScopedAStatus(status);
}
CdmResponseType res = wvcdm::UNKNOWN_ERROR;
CdmResponseType res = wvcdm::CdmResponseType(wvcdm::UNKNOWN_ERROR);
CdmKeySetId keySetIdStr(in_keySetId.keySetId.begin(),
in_keySetId.keySetId.end());
@@ -1056,7 +1057,7 @@ Status WVDrmPlugin::unprovisionDevice() {
return toNdkScopedAStatus(status);
}
CdmResponseType res = wvcdm::UNKNOWN_ERROR;
CdmResponseType res(wvcdm::UNKNOWN_ERROR);
res = mCDM->RemoveOfflineLicense(
std::string(in_keySetId.keySetId.begin(), in_keySetId.keySetId.end()),
@@ -1313,6 +1314,7 @@ Status WVDrmPlugin::unprovisionDevice() {
CdmResponseType res = mCDM->SetDecryptHash(_value.c_str(), &sessionId);
if (wvcdm::NO_ERROR == res) mDecryptHashSessionId = sessionId;
return toNdkScopedAStatus(mapCdmResponseType(res));
} else if (name == "decryptHashSessionId") {
mDecryptHashSessionId = _value.c_str();
@@ -1846,7 +1848,7 @@ Status WVDrmPlugin::queryProperty(RequestedSecurityLevel securityLevel,
mCDM->QueryStatus(securityLevel, property, &stringValue);
if (res != wvcdm::NO_ERROR) {
ALOGE("Error querying CDM status: %u", res);
ALOGE("Error querying CDM status: %d", static_cast<int>(res));
}
return mapCdmResponseType(res);
}

View File

@@ -279,7 +279,7 @@ template <uint8_t DIGIT>
CdmResponseType setSessionIdOnMap(testing::Unused, CdmQueryMap *map) {
static const char oecId[] = {DIGIT + '0', '\0'};
(*map)[QUERY_KEY_OEMCRYPTO_SESSION_ID] = oecId;
return wvcdm::NO_ERROR;
return CdmResponseType(wvcdm::NO_ERROR);
}
MATCHER_P(HasOrigin, origin, "") { return arg.origin == origin; }
@@ -319,7 +319,7 @@ public:
keySetId.keySetId.assign(keySetIdRaw, keySetIdRaw + kKeySetIdSize);
// Set default return values for gMock
DefaultValue<CdmResponseType>::Set(wvcdm::NO_ERROR);
DefaultValue<CdmResponseType>::Set(CdmResponseType(wvcdm::NO_ERROR));
DefaultValue<OEMCryptoResult>::Set(OEMCrypto_SUCCESS);
DefaultValue<bool>::Set(true);
@@ -365,9 +365,9 @@ TEST_F(WVDrmPluginHalTest, OpensSessions) {
// Provide expected mock behavior
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L1),
testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L3),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
CdmQueryMap securityLevelQueryMap;
securityLevelQueryMap[wvcdm::QUERY_KEY_SECURITY_LEVEL] =
@@ -375,12 +375,12 @@ TEST_F(WVDrmPluginHalTest, OpensSessions) {
EXPECT_CALL(*mCdm, QuerySessionStatus(_, NotNull()))
.WillOnce(DoAll(SetArgPointee<1>(securityLevelQueryMap),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>));
@@ -410,7 +410,7 @@ TEST_F(WVDrmPluginHalTest, ClosesSessions) {
TEST_F(WVDrmPluginHalTest, ClosesSessionWithError) {
EXPECT_CALL(*mCdm, CloseSession(mCdmSessionId))
.WillOnce(testing::Return(wvcdm::SESSION_NOT_FOUND_1));
.WillOnce(testing::Return(CdmResponseType(wvcdm::SESSION_NOT_FOUND_1)));
auto ret = mPlugin->closeSession(sessionId);
EXPECT_EQ(static_cast<int>(Status::ERROR_DRM_SESSION_NOT_OPENED),
@@ -523,23 +523,26 @@ TEST_F(WVDrmPluginHalTest, DISABLED_GeneratesKeyRequests) {
GenerateKeyRequest(mCdmSessionId, "", mimeType, initData,
kLicenseTypeOffline, mCdmParameters,
NotNull(), HasOrigin(EMPTY_ORIGIN), _))
.WillOnce(DoAll(SetArgPointee<8>(initialRequest),
testing::Return(wvcdm::KEY_MESSAGE)));
.WillOnce(
DoAll(SetArgPointee<8>(initialRequest),
testing::Return(CdmResponseType(wvcdm::KEY_MESSAGE))));
EXPECT_CALL(*mCdm,
GenerateKeyRequest(mCdmSessionId, "", mimeType, initData,
kLicenseTypeStreaming, mCdmParameters,
NotNull(), HasOrigin(EMPTY_ORIGIN), _))
.WillOnce(DoAll(SetArgPointee<8>(renewalRequest),
testing::Return(wvcdm::KEY_MESSAGE)));
.WillOnce(
DoAll(SetArgPointee<8>(renewalRequest),
testing::Return(CdmResponseType(wvcdm::KEY_MESSAGE))));
EXPECT_CALL(*mCdm,
GenerateKeyRequest("", mCdmKeySetId, mimeType, initData,
kLicenseTypeRelease, mCdmParameters,
NotNull(), HasOrigin(EMPTY_ORIGIN), _))
.WillOnce(DoAll(SetArgPointee<8>(releaseRequest),
testing::Return(wvcdm::KEY_MESSAGE)));
.WillOnce(
DoAll(SetArgPointee<8>(releaseRequest),
testing::Return(CdmResponseType(wvcdm::KEY_MESSAGE))));
}
}
@@ -593,8 +596,9 @@ TEST_F(WVDrmPluginHalTest, AddsKeys) {
EXPECT_CALL(*mCdm, AddKey(mCdmSessionId,
ElementsAreArray(responseRaw, kResponseSize), _))
.WillOnce(DoAll(SetArgPointee<2>(mCdmKeySetId),
testing::Return(wvcdm::KEY_ADDED)));
.WillOnce(
DoAll(SetArgPointee<2>(mCdmKeySetId),
testing::Return(wvcdm::CdmResponseType(wvcdm::KEY_ADDED))));
EXPECT_CALL(*mCdm, AddKey("", ElementsAreArray(responseRaw, kResponseSize),
Pointee(mCdmKeySetId)))
@@ -618,7 +622,7 @@ TEST_F(WVDrmPluginHalTest, HandlesPrivacyCertCaseOfAddKey) {
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -634,7 +638,7 @@ TEST_F(WVDrmPluginHalTest, HandlesPrivacyCertCaseOfAddKey) {
fclose(fp);
EXPECT_CALL(*mCdm, AddKey(_, _, _))
.WillRepeatedly(testing::Return(wvcdm::NEED_KEY));
.WillRepeatedly(testing::Return(CdmResponseType(wvcdm::NEED_KEY)));
SessionId sessionId;
auto ret = mPlugin->openSession(SecurityLevel::DEFAULT, &sessionId);
@@ -685,7 +689,7 @@ TEST_F(WVDrmPluginHalTest, QueriesKeyStatus) {
EXPECT_CALL(*mCdm, QueryKeyStatus(mCdmSessionId, _))
.WillOnce(DoAll(SetArgPointee<1>(mCdmLicenseStatus),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
std::vector<KeyValue> keyValues;
auto ret = mPlugin->queryKeyStatus(sessionId, &keyValues);
@@ -716,7 +720,7 @@ TEST_F(WVDrmPluginHalTest, GetsProvisioningRequests) {
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L1),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// The first and the third invocation should be at default security level,
// while the second one should be L3
@@ -726,13 +730,13 @@ TEST_F(WVDrmPluginHalTest, GetsProvisioningRequests) {
.Times(2)
.WillRepeatedly(DoAll(SetArgPointee<5>(mCdmRequest),
SetArgPointee<6>(kDefaultUrl),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, GetProvisioningRequest(kCertificateWidevine, IsEmpty(),
HasOrigin(EMPTY_ORIGIN), IsEmpty(),
wvcdm::kLevel3, _, _))
.WillOnce(DoAll(SetArgPointee<5>(mCdmRequest),
SetArgPointee<6>(kDefaultUrl),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Make 3 provisioning requests at security level default then L3 then L1
ProvisionRequest result;
@@ -791,7 +795,7 @@ TEST_F(WVDrmPluginHalTest, HandlesProvisioningResponses) {
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L1),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// The first and the third invocation should be at default security level,
// while the second one should be L3
@@ -845,13 +849,13 @@ TEST_F(WVDrmPluginHalTest, MuxesUnprovisioningErrors) {
// Tests that both Unprovisions are called even if one fails. Also tests that
// no matter which fails, the function always propagates the error.
EXPECT_CALL(*mCdm, Unprovision(kSecurityLevelL1, HasOrigin(EMPTY_ORIGIN)))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(testing::Return(wvcdm::NO_ERROR))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR));
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::NO_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)));
EXPECT_CALL(*mCdm, Unprovision(kSecurityLevelL3, HasOrigin(EMPTY_ORIGIN)))
.WillOnce(testing::Return(wvcdm::NO_ERROR))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR));
.WillOnce(testing::Return(CdmResponseType(wvcdm::NO_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)));
Status res = mPlugin->unprovisionDevice();
ASSERT_NE(Status::OK, res);
@@ -889,8 +893,8 @@ TEST_F(WVDrmPluginHalTest, UnprovisionsGloballyWithSpoid) {
ASSERT_TRUE(cdm) << "Failed to create mocked CDM";
EXPECT_CALL(*cdm, QueryStatus(_, QUERY_KEY_DEVICE_ID, _))
.WillRepeatedly(
DoAll(SetArgPointee<2>(kDeviceId), testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(DoAll(SetArgPointee<2>(kDeviceId),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL1, HasOrigin(EMPTY_ORIGIN)))
.Times(1);
@@ -927,13 +931,13 @@ TEST_F(WVDrmPluginHalTest, MuxesOriginUnprovisioningErrors) {
// Tests that both Unprovisions are called even if one fails. Also tests that
// no matter which fails, the function always propagates the error.
EXPECT_CALL(*mCdm, Unprovision(kSecurityLevelL1, HasOrigin(kOrigin.c_str())))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(testing::Return(wvcdm::NO_ERROR))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR));
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::NO_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)));
EXPECT_CALL(*mCdm, Unprovision(kSecurityLevelL3, HasOrigin(kOrigin.c_str())))
.WillOnce(testing::Return(wvcdm::NO_ERROR))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(testing::Return(wvcdm::UNKNOWN_ERROR));
.WillOnce(testing::Return(CdmResponseType(wvcdm::NO_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)))
.WillOnce(testing::Return(CdmResponseType(wvcdm::UNKNOWN_ERROR)));
auto ret =
mPlugin->setPropertyString(std::string("origin"), std::string(kOrigin));
@@ -991,104 +995,105 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L1),
testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillRepeatedly(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L3),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_DEVICE_ID, _))
.WillOnce(
DoAll(SetArgPointee<2>(kDeviceId), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>(kDeviceId),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SYSTEM_ID, _))
.WillOnce(
DoAll(SetArgPointee<2>(systemId), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>(systemId),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_PROVISIONING_ID, _))
.WillOnce(DoAll(SetArgPointee<2>(provisioningId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_NUMBER_OF_OPEN_SESSIONS, _))
.WillOnce(DoAll(SetArgPointee<2>(openSessions),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_MAX_NUMBER_OF_SESSIONS, _))
.WillOnce(DoAll(SetArgPointee<2>(maxSessions),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_OEMCRYPTO_API_VERSION, _))
.WillOnce(DoAll(SetArgPointee<2>(oemCryptoApiVersion),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_OEMCRYPTO_API_MINOR_VERSION, _))
.WillOnce(DoAll(SetArgPointee<2>(oemCryptoApiMinorVersion),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SRM_UPDATE_SUPPORT, _))
.WillOnce(
DoAll(SetArgPointee<2>("True"), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>("True"),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_CURRENT_SRM_VERSION, _))
.WillOnce(DoAll(SetArgPointee<2>(currentSRMVersion),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_WVCDM_VERSION, _))
.WillOnce(DoAll(SetArgPointee<2>(mCdmVersion),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_RESOURCE_RATING_TIER, _))
.WillOnce(DoAll(SetArgPointee<2>(resourceRatingTier),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_DECRYPT_HASH_SUPPORT, _))
.WillOnce(DoAll(SetArgPointee<2>("1"), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>("1"),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_OEMCRYPTO_BUILD_INFORMATION, _))
.WillOnce(DoAll(SetArgPointee<2>(oemCryptoBuildInformation),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, GetDecryptHashError(_, _))
.WillOnce(DoAll(SetArgPointee<1>(decryptHashErrorBadHashAndFrameNumber),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_PROVISIONING_MODEL, _))
.WillOnce(DoAll(SetArgPointee<2>(provisioningModel),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_ANALOG_OUTPUT_CAPABILITIES, _))
.WillOnce(DoAll(SetArgPointee<2>(analogOutputCap),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_CAN_DISABLE_ANALOG_OUTPUT, _))
.WillOnce(
DoAll(SetArgPointee<2>("True"), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>("True"),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_CURRENT_HDCP_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(currentHdcpLevel),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_MAX_HDCP_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(maxHdcpLevel),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_MAX_USAGE_TABLE_ENTRIES, _))
.WillOnce(DoAll(SetArgPointee<2>(maxUsageEntries),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_PRODUCTION_READY, _))
.WillOnce(DoAll(SetArgPointee<2>(wvcdm::QUERY_VALUE_TRUE),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_USAGE_SUPPORT, _))
.WillOnce(
DoAll(SetArgPointee<2>("True"), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>("True"),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_WATERMARKING_SUPPORT, _))
.WillOnce(DoAll(SetArgPointee<2>(wvcdm::QUERY_VALUE_NOT_SUPPORTED),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, GetMetrics(_, _))
.WillOnce(DoAll(SetArgPointee<1>(expected_metrics),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
std::string stringResult;
std::vector<uint8_t> vectorResult;
@@ -1242,7 +1247,7 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _,
HasOrigin(EMPTY_ORIGIN), _, _))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -1338,8 +1343,9 @@ TEST_F(WVDrmPluginHalTest, CompliesWithSpoidVariability) {
EXPECT_CALL(*cdm, QueryStatus(_, QUERY_KEY_DEVICE_ID, _))
.Times(AtLeast(kPluginsPerCdm))
.WillRepeatedly(DoAll(SetArgPointee<2>(deviceId),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<2>(deviceId),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
for (size_t appIndex = 0; appIndex < kAppCount; ++appIndex) {
const std::string &appPackageName = kAppNames[appIndex];
@@ -1419,13 +1425,13 @@ TEST_F(WVDrmPluginHalTest, ReturnsSameL1Spoid) {
EXPECT_CALL(*cdm, QueryStatus(wvcdm::kLevelDefault, QUERY_KEY_DEVICE_ID, _))
.Times(kSpoidQuery)
.WillRepeatedly(DoAll(SetArgPointee<2>(kL1DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior to support session creation
EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(kSpoidQuery)
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(kSpoidQuery)
@@ -1471,13 +1477,13 @@ TEST_F(WVDrmPluginHalTest, ReturnsL3SpoidsWhenL3ProvisionedUsingL3Spoid) {
EXPECT_CALL(*cdm, QueryStatus(wvcdm::kLevel3, QUERY_KEY_DEVICE_ID, _))
.Times(kSpoidQuery)
.WillRepeatedly(DoAll(SetArgPointee<2>(kL3DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior to support session creation
EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(kSpoidQuery)
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(kSpoidQuery)
@@ -1535,19 +1541,19 @@ TEST_F(WVDrmPluginHalTest, ReturnsL3SpoidsWhenL3Unprovisioned) {
EXPECT_CALL(*cdm, QueryStatus(wvcdm::kLevelDefault, QUERY_KEY_DEVICE_ID, _))
.WillOnce(DoAll(SetArgPointee<2>(kL1DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm, QueryStatus(wvcdm::kLevel3, QUERY_KEY_DEVICE_ID, _))
.Times(kSpoidQuery)
.WillRepeatedly(DoAll(SetArgPointee<2>(kL3DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior to support session creation
EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(kSpoidQuery)
.WillOnce(testing::Return(wvcdm::NEED_PROVISIONING))
.WillOnce(testing::Return(CdmResponseType(wvcdm::NEED_PROVISIONING)))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.WillOnce(Invoke(setSessionIdOnMap<4>));
@@ -1628,13 +1634,13 @@ TEST_F(WVDrmPluginHalTest, ReturnsL1SpoidsWhenL3ProvisionedUsingL1Spoid) {
EXPECT_CALL(*cdm1, QueryStatus(wvcdm::kLevelDefault, QUERY_KEY_DEVICE_ID, _))
.WillOnce(DoAll(SetArgPointee<2>(kL1DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior to support session creation
EXPECT_CALL(*cdm1, OpenSession(StrEq("com.widevine"), _, _, _, _))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)))
.WillOnce(testing::Return(wvcdm::NEED_PROVISIONING));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(testing::Return(CdmResponseType(wvcdm::NEED_PROVISIONING)));
EXPECT_CALL(*cdm1, QueryOemCryptoSessionId(mCdmSessionId, _))
.WillOnce(Invoke(setSessionIdOnMap<4>));
@@ -1686,16 +1692,16 @@ TEST_F(WVDrmPluginHalTest, ReturnsL1SpoidsWhenL3ProvisionedUsingL1Spoid) {
EXPECT_CALL(*cdm2, QueryStatus(wvcdm::kLevelDefault, QUERY_KEY_DEVICE_ID, _))
.WillOnce(DoAll(SetArgPointee<2>(kL1DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm2, QueryStatus(wvcdm::kLevel3, QUERY_KEY_DEVICE_ID, _))
.WillOnce(DoAll(SetArgPointee<2>(kL3DeviceId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior to support session creation
EXPECT_CALL(*cdm2, OpenSession(StrEq("com.widevine"), _, _, _, _))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*cdm2, QueryOemCryptoSessionId(mCdmSessionId, _))
.WillOnce(Invoke(setSessionIdOnMap<4>));
@@ -1748,7 +1754,7 @@ TEST_F(WVDrmPluginHalTest, FailsGenericMethodsWithoutAnAlgorithmSet) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -1831,7 +1837,7 @@ TEST_F(WVDrmPluginHalTest, CallsGenericEncrypt) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -1889,7 +1895,7 @@ TEST_F(WVDrmPluginHalTest, CallsGenericDecrypt) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -1949,7 +1955,7 @@ TEST_F(WVDrmPluginHalTest, CallsGenericSign) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -2018,7 +2024,7 @@ TEST_F(WVDrmPluginHalTest, CallsGenericVerify) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -2048,7 +2054,7 @@ TEST_F(WVDrmPluginHalTest, RegistersForEvents) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
.Times(AtLeast(1))
@@ -2075,9 +2081,9 @@ TEST_F(WVDrmPluginHalTest, UnregistersForAllEventsOnDestruction) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId1),
testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId2),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId1, _))
.WillOnce(Invoke(setSessionIdOnMap<4>));
@@ -2159,8 +2165,9 @@ TEST_F(WVDrmPluginHalTest, MarshalsEvents) {
TEST_F(WVDrmPluginHalTest, GeneratesProvisioningNeededEvent) {
EXPECT_CALL(*mCdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NEED_PROVISIONING)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(CdmResponseType(wvcdm::NEED_PROVISIONING))));
EXPECT_CALL(*mCdm, CloseSession(_)).Times(AtLeast(0));
@@ -2178,9 +2185,9 @@ TEST_F(WVDrmPluginHalTest, ProvidesExpectedDefaultPropertiesToCdm) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2210,14 +2217,15 @@ TEST_F(WVDrmPluginHalTest, CanSetAppId) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin queries for the security level
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillRepeatedly(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L3),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L3),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2264,7 +2272,7 @@ TEST_P(WVDrmPluginHalOriginTest, CanSetOrigin) {
// Note which mock calls we expect
EXPECT_CALL(*mCdm, OpenSession(_, _, HasOrigin(params.expectedOrigin), _, _))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Set the properties & run the test
@@ -2295,18 +2303,18 @@ TEST_F(WVDrmPluginHalTest, CanSetSecurityLevel) {
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L3),
testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L1),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected mock behavior
{
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2416,9 +2424,9 @@ TEST_F(WVDrmPluginHalTest, CanSetPrivacyMode) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2472,9 +2480,9 @@ TEST_F(WVDrmPluginHalTest, CanSetServiceCertificate) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2523,9 +2531,9 @@ TEST_F(WVDrmPluginHalTest, CanSetSessionSharing) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2591,9 +2599,9 @@ TEST_F(WVDrmPluginHalTest, AllowsStoringOfSessionSharingId) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2628,14 +2636,15 @@ TEST_F(WVDrmPluginHalTest, CanSetAtscMode) {
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
SaveArg<2>(&mCdmIdAtscModeNotSet),
testing::Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(
SetArgPointee<4>(mCdmSessionId), SaveArg<1>(&propertySet),
SaveArg<2>(&mCdmIdAtscModeSet), testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
SaveArg<2>(&mCdmIdAtscModeSet),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<4>(mCdmSessionId),
SaveArg<1>(&propertySet),
SaveArg<2>(&mCdmIdAtscModeReset),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*cdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2720,8 +2729,9 @@ TEST_F(WVDrmPluginHalTest, CanSetDecryptHashProperties) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2759,8 +2769,9 @@ TEST_F(WVDrmPluginHalTest, DoesNotSetDecryptHashProperties) {
// Provide expected behavior in response to OpenSession and store the
// property set
EXPECT_CALL(*mCdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(wvcdm::NO_ERROR)));
.WillRepeatedly(
DoAll(SetArgPointee<4>(mCdmSessionId),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
// Provide expected behavior when mPlugin requests session control info
EXPECT_CALL(*mCdm, QueryOemCryptoSessionId(mCdmSessionId, _))
@@ -2837,13 +2848,13 @@ TEST_F(WVDrmPluginHalTest, GetOfflineLicenseIds) {
EXPECT_CALL(*mCdm,
ListStoredLicenses(kSecurityLevelL1, HasOrigin(EMPTY_ORIGIN), _))
.WillOnce(
DoAll(SetArgPointee<2>(mockIdsL1), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>(mockIdsL1),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm,
ListStoredLicenses(kSecurityLevelL3, HasOrigin(EMPTY_ORIGIN), _))
.WillOnce(
DoAll(SetArgPointee<2>(mockIdsL3), testing::Return(wvcdm::NO_ERROR)));
.WillOnce(DoAll(SetArgPointee<2>(mockIdsL3),
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
std::vector<KeySetId> offlineIds;
auto ret = mPlugin->getOfflineLicenseKeySetIds(&offlineIds);
@@ -2860,16 +2871,16 @@ TEST_F(WVDrmPluginHalTest, GetOfflineLicenseIds) {
TEST_F(WVDrmPluginHalTest, GetOfflineLicenseState) {
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SECURITY_LEVEL, _))
.WillRepeatedly(DoAll(SetArgPointee<2>(QUERY_VALUE_SECURITY_LEVEL_L1),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
EXPECT_CALL(*mCdm, GetOfflineLicenseState(_, kSecurityLevelL1,
HasOrigin(EMPTY_ORIGIN), _))
.WillOnce(DoAll(SetArgPointee<3>(wvcdm::kLicenseStateActive),
testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<3>(wvcdm::kLicenseStateReleasing),
testing::Return(wvcdm::NO_ERROR)))
testing::Return(CdmResponseType(wvcdm::NO_ERROR))))
.WillOnce(DoAll(SetArgPointee<3>(wvcdm::kLicenseStateUnknown),
testing::Return(wvcdm::NO_ERROR)));
testing::Return(CdmResponseType(wvcdm::NO_ERROR))));
auto ret = mPlugin->setPropertyString(std::string("securityLevel"),
std::string("L1"));