Merge "Replace MockCDM with Android Smart Pointer to MockCDM" into mnc-dev

This commit is contained in:
Fred Gylys-Colwell
2015-06-17 21:43:25 +00:00
committed by Android (Google) Code Review
2 changed files with 195 additions and 195 deletions

View File

@@ -51,7 +51,7 @@ class WVCryptoPluginTest : public Test {
}; };
TEST_F(WVCryptoPluginTest, CorrectlyReportsSecureBuffers) { TEST_F(WVCryptoPluginTest, CorrectlyReportsSecureBuffers) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
CdmQueryMap l1Map; CdmQueryMap l1Map;
l1Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L1; l1Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L1;
@@ -59,17 +59,17 @@ TEST_F(WVCryptoPluginTest, CorrectlyReportsSecureBuffers) {
l3Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L3; l3Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L3;
// Provide the expected behavior for IsOpenSession // Provide the expected behavior for IsOpenSession
EXPECT_CALL(cdm, IsOpenSession(_)) EXPECT_CALL(*cdm, IsOpenSession(_))
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
// Specify the expected calls to QuerySessionStatus // Specify the expected calls to QuerySessionStatus
EXPECT_CALL(cdm, QuerySessionStatus(_, _)) EXPECT_CALL(*cdm, QuerySessionStatus(_, _))
.WillOnce(DoAll(SetArgPointee<1>(l1Map), .WillOnce(DoAll(SetArgPointee<1>(l1Map),
Return(wvcdm::NO_ERROR))) Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(SetArgPointee<1>(l3Map), .WillOnce(DoAll(SetArgPointee<1>(l3Map),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
WVCryptoPlugin plugin(sessionId, kSessionIdSize, &cdm); WVCryptoPlugin plugin(sessionId, kSessionIdSize, cdm.get());
EXPECT_TRUE(plugin.requiresSecureDecoderComponent("video/mp4")) << EXPECT_TRUE(plugin.requiresSecureDecoderComponent("video/mp4")) <<
"WVCryptoPlugin incorrectly allows an insecure video decoder on L1"; "WVCryptoPlugin incorrectly allows an insecure video decoder on L1";
@@ -148,7 +148,7 @@ class CDPMatcherFactory {
}; };
TEST_F(WVCryptoPluginTest, AttemptsToDecrypt) { TEST_F(WVCryptoPluginTest, AttemptsToDecrypt) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
uint8_t keyId[KEY_ID_SIZE]; uint8_t keyId[KEY_ID_SIZE];
uint8_t baseIv[KEY_IV_SIZE]; uint8_t baseIv[KEY_IV_SIZE];
@@ -190,7 +190,7 @@ TEST_F(WVCryptoPluginTest, AttemptsToDecrypt) {
CDPMatcherFactory ParamsAre = CDPMatcherFactory(false, keyId, out, kDataSize); CDPMatcherFactory ParamsAre = CDPMatcherFactory(false, keyId, out, kDataSize);
// Provide the expected behavior for IsOpenSession // Provide the expected behavior for IsOpenSession
EXPECT_CALL(cdm, IsOpenSession(_)) EXPECT_CALL(*cdm, IsOpenSession(_))
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
// Specify the expected calls to Decrypt // Specify the expected calls to Decrypt
@@ -198,55 +198,55 @@ TEST_F(WVCryptoPluginTest, AttemptsToDecrypt) {
InSequence calls; InSequence calls;
// SubSample 0 // SubSample 0
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(true, in, 16, iv[0], 0, 0, ParamsAre(true, in, 16, iv[0], 0, 0,
OEMCrypto_FirstSubsample))) OEMCrypto_FirstSubsample)))
.Times(1); .Times(1);
// SubSample 1 // SubSample 1
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(false, in + 16, 16, iv[1], 0, 16, 0))) ParamsAre(false, in + 16, 16, iv[1], 0, 16, 0)))
.Times(1); .Times(1);
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(true, in + 32, 16, iv[1], 0, 32, 0))) ParamsAre(true, in + 32, 16, iv[1], 0, 32, 0)))
.Times(1); .Times(1);
// SubSample 2 // SubSample 2
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(true, in + 48, 8, iv[2], 0, 48, 0))) ParamsAre(true, in + 48, 8, iv[2], 0, 48, 0)))
.Times(1); .Times(1);
// SubSample 3 // SubSample 3
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(false, in + 56, 29, iv[2], 0, 56, 0))) ParamsAre(false, in + 56, 29, iv[2], 0, 56, 0)))
.Times(1); .Times(1);
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(true, in + 85, 24, iv[2], 8, 85, 0))) ParamsAre(true, in + 85, 24, iv[2], 8, 85, 0)))
.Times(1); .Times(1);
// SubSample 4 // SubSample 4
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(true, in + 109, 60, iv[3], 0, 109, 0))) ParamsAre(true, in + 109, 60, iv[3], 0, 109, 0)))
.Times(1); .Times(1);
// SubSample 5 // SubSample 5
EXPECT_CALL(cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize), EXPECT_CALL(*cdm, Decrypt(ElementsAreArray(sessionId, kSessionIdSize),
true, true,
ParamsAre(true, in + 169, 16, iv[4], 12, 169, ParamsAre(true, in + 169, 16, iv[4], 12, 169,
OEMCrypto_LastSubsample))) OEMCrypto_LastSubsample)))
.Times(1); .Times(1);
} }
WVCryptoPlugin plugin(sessionId, kSessionIdSize, &cdm); WVCryptoPlugin plugin(sessionId, kSessionIdSize, cdm.get());
AString errorDetailMessage; AString errorDetailMessage;
ssize_t res = plugin.decrypt(false, keyId, iv[0], CryptoPlugin::kMode_AES_CTR, ssize_t res = plugin.decrypt(false, keyId, iv[0], CryptoPlugin::kMode_AES_CTR,
@@ -260,7 +260,7 @@ TEST_F(WVCryptoPluginTest, AttemptsToDecrypt) {
} }
TEST_F(WVCryptoPluginTest, CommunicatesSecureBufferRequest) { TEST_F(WVCryptoPluginTest, CommunicatesSecureBufferRequest) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
uint8_t keyId[KEY_ID_SIZE]; uint8_t keyId[KEY_ID_SIZE];
uint8_t iv[KEY_IV_SIZE]; uint8_t iv[KEY_IV_SIZE];
@@ -282,7 +282,7 @@ TEST_F(WVCryptoPluginTest, CommunicatesSecureBufferRequest) {
subSamples[0].mNumBytesOfEncryptedData = 16; subSamples[0].mNumBytesOfEncryptedData = 16;
// Provide the expected behavior for IsOpenSession // Provide the expected behavior for IsOpenSession
EXPECT_CALL(cdm, IsOpenSession(_)) EXPECT_CALL(*cdm, IsOpenSession(_))
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
// Specify the expected calls to Decrypt // Specify the expected calls to Decrypt
@@ -291,14 +291,14 @@ TEST_F(WVCryptoPluginTest, CommunicatesSecureBufferRequest) {
typedef CdmDecryptionParameters CDP; typedef CdmDecryptionParameters CDP;
EXPECT_CALL(cdm, Decrypt(_, _, Field(&CDP::is_secure, false))) EXPECT_CALL(*cdm, Decrypt(_, _, Field(&CDP::is_secure, false)))
.Times(2); .Times(2);
EXPECT_CALL(cdm, Decrypt(_, _, Field(&CDP::is_secure, true))) EXPECT_CALL(*cdm, Decrypt(_, _, Field(&CDP::is_secure, true)))
.Times(2); .Times(2);
} }
WVCryptoPlugin plugin(sessionId, kSessionIdSize, &cdm); WVCryptoPlugin plugin(sessionId, kSessionIdSize, cdm.get());
AString errorDetailMessage; AString errorDetailMessage;
ssize_t res = plugin.decrypt(false, keyId, iv, CryptoPlugin::kMode_AES_CTR, ssize_t res = plugin.decrypt(false, keyId, iv, CryptoPlugin::kMode_AES_CTR,
@@ -318,7 +318,7 @@ TEST_F(WVCryptoPluginTest, CommunicatesSecureBufferRequest) {
} }
TEST_F(WVCryptoPluginTest, SetsFlagsForMinimumSubsampleRuns) { TEST_F(WVCryptoPluginTest, SetsFlagsForMinimumSubsampleRuns) {
MockCDM cdm; android::sp<MockCDM> cdm = new MockCDM();
uint8_t keyId[KEY_ID_SIZE]; uint8_t keyId[KEY_ID_SIZE];
uint8_t iv[KEY_IV_SIZE]; uint8_t iv[KEY_IV_SIZE];
@@ -348,7 +348,7 @@ TEST_F(WVCryptoPluginTest, SetsFlagsForMinimumSubsampleRuns) {
mixedSubSamples[0].mNumBytesOfEncryptedData = 8; mixedSubSamples[0].mNumBytesOfEncryptedData = 8;
// Provide the expected behavior for IsOpenSession // Provide the expected behavior for IsOpenSession
EXPECT_CALL(cdm, IsOpenSession(_)) EXPECT_CALL(*cdm, IsOpenSession(_))
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
// Specify the expected calls to Decrypt // Specify the expected calls to Decrypt
@@ -357,21 +357,21 @@ TEST_F(WVCryptoPluginTest, SetsFlagsForMinimumSubsampleRuns) {
typedef CdmDecryptionParameters CDP; typedef CdmDecryptionParameters CDP;
EXPECT_CALL(cdm, Decrypt(_, _, Field(&CDP::subsample_flags, EXPECT_CALL(*cdm, Decrypt(_, _, Field(&CDP::subsample_flags,
OEMCrypto_FirstSubsample | OEMCrypto_FirstSubsample |
OEMCrypto_LastSubsample))) OEMCrypto_LastSubsample)))
.Times(2); .Times(2);
EXPECT_CALL(cdm, Decrypt(_, _, Field(&CDP::subsample_flags, EXPECT_CALL(*cdm, Decrypt(_, _, Field(&CDP::subsample_flags,
OEMCrypto_FirstSubsample))) OEMCrypto_FirstSubsample)))
.Times(1); .Times(1);
EXPECT_CALL(cdm, Decrypt(_, _, Field(&CDP::subsample_flags, EXPECT_CALL(*cdm, Decrypt(_, _, Field(&CDP::subsample_flags,
OEMCrypto_LastSubsample))) OEMCrypto_LastSubsample)))
.Times(1); .Times(1);
} }
WVCryptoPlugin plugin(sessionId, kSessionIdSize, &cdm); WVCryptoPlugin plugin(sessionId, kSessionIdSize, cdm.get());
AString errorDetailMessage; AString errorDetailMessage;
ssize_t res = plugin.decrypt(false, keyId, iv, CryptoPlugin::kMode_AES_CTR, ssize_t res = plugin.decrypt(false, keyId, iv, CryptoPlugin::kMode_AES_CTR,
@@ -400,7 +400,7 @@ TEST_F(WVCryptoPluginTest, SetsFlagsForMinimumSubsampleRuns) {
} }
TEST_F(WVCryptoPluginTest, AllowsSessionIdChanges) { TEST_F(WVCryptoPluginTest, AllowsSessionIdChanges) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
uint8_t keyId[KEY_ID_SIZE]; uint8_t keyId[KEY_ID_SIZE];
uint8_t iv[KEY_IV_SIZE]; uint8_t iv[KEY_IV_SIZE];
@@ -429,24 +429,24 @@ TEST_F(WVCryptoPluginTest, AllowsSessionIdChanges) {
sessionId2Vector.appendArray(sessionId2, kSessionIdSize); sessionId2Vector.appendArray(sessionId2, kSessionIdSize);
// Provide the expected behavior for IsOpenSession // Provide the expected behavior for IsOpenSession
EXPECT_CALL(cdm, IsOpenSession(_)) EXPECT_CALL(*cdm, IsOpenSession(_))
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
// Specify the expected calls to Decrypt // Specify the expected calls to Decrypt
{ {
InSequence calls; InSequence calls;
EXPECT_CALL(cdm, EXPECT_CALL(*cdm,
Decrypt(ElementsAreArray(sessionId, kSessionIdSize), _, _)) Decrypt(ElementsAreArray(sessionId, kSessionIdSize), _, _))
.Times(2); .Times(2);
EXPECT_CALL(cdm, EXPECT_CALL(*cdm,
Decrypt(ElementsAreArray(sessionId2, kSessionIdSize), _, _)) Decrypt(ElementsAreArray(sessionId2, kSessionIdSize), _, _))
.Times(2); .Times(2);
} }
uint8_t blank[1]; // Some compilers will not accept 0. uint8_t blank[1]; // Some compilers will not accept 0.
WVCryptoPlugin plugin(blank, 0, &cdm); WVCryptoPlugin plugin(blank, 0, cdm.get());
AString errorDetailMessage; AString errorDetailMessage;
ssize_t res; ssize_t res;
@@ -470,7 +470,7 @@ TEST_F(WVCryptoPluginTest, AllowsSessionIdChanges) {
} }
TEST_F(WVCryptoPluginTest, DisallowsUnopenedSessionIdChanges) { TEST_F(WVCryptoPluginTest, DisallowsUnopenedSessionIdChanges) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
uint8_t blank[1]; // Some compilers will not accept 0. uint8_t blank[1]; // Some compilers will not accept 0.
Vector<uint8_t> sessionIdVector; Vector<uint8_t> sessionIdVector;
@@ -480,15 +480,15 @@ TEST_F(WVCryptoPluginTest, DisallowsUnopenedSessionIdChanges) {
{ {
InSequence calls; InSequence calls;
EXPECT_CALL(cdm, IsOpenSession(ElementsAreArray(blank, 0))) EXPECT_CALL(*cdm, IsOpenSession(ElementsAreArray(blank, 0)))
.WillOnce(Return(false)); .WillOnce(Return(false));
EXPECT_CALL(cdm, IsOpenSession(ElementsAreArray(sessionId, kSessionIdSize))) EXPECT_CALL(*cdm, IsOpenSession(ElementsAreArray(sessionId, kSessionIdSize)))
.WillOnce(Return(false)) .WillOnce(Return(false))
.WillOnce(Return(true)); .WillOnce(Return(true));
} }
WVCryptoPlugin plugin(blank, 0, &cdm); WVCryptoPlugin plugin(blank, 0, cdm.get());
ssize_t res; ssize_t res;
res = plugin.setMediaDrmSession(sessionIdVector); res = plugin.setMediaDrmSession(sessionIdVector);

View File

@@ -184,21 +184,21 @@ class WVDrmPluginOriginTest : public WVDrmPluginTest,
public WithParamInterface<OriginTestVariant> {}; public WithParamInterface<OriginTestVariant> {};
TEST_F(WVDrmPluginTest, OpensSessions) { TEST_F(WVDrmPluginTest, OpensSessions) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
EXPECT_CALL(cdm, EXPECT_CALL(*cdm,
OpenSession(StrEq("com.widevine"), _, StrEq(EMPTY_ORIGIN), _, _)) OpenSession(StrEq("com.widevine"), _, StrEq(EMPTY_ORIGIN), _, _))
.WillOnce(DoAll(SetArgPointee<4>(cdmSessionId), .WillOnce(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -208,11 +208,11 @@ TEST_F(WVDrmPluginTest, OpensSessions) {
} }
TEST_F(WVDrmPluginTest, ClosesSessions) { TEST_F(WVDrmPluginTest, ClosesSessions) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
EXPECT_CALL(cdm, CloseSession(cdmSessionId)) EXPECT_CALL(*cdm, CloseSession(cdmSessionId))
.Times(1); .Times(1);
status_t res = plugin.closeSession(sessionId); status_t res = plugin.closeSession(sessionId);
@@ -221,11 +221,11 @@ TEST_F(WVDrmPluginTest, ClosesSessions) {
} }
TEST_F(WVDrmPluginTest, ClosesSessionWithoutReturningError) { TEST_F(WVDrmPluginTest, ClosesSessionWithoutReturningError) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
EXPECT_CALL(cdm, CloseSession(cdmSessionId)) EXPECT_CALL(*cdm, CloseSession(cdmSessionId))
.WillOnce(Return(SESSION_NOT_FOUND_1)); .WillOnce(Return(SESSION_NOT_FOUND_1));
status_t res = plugin.closeSession(sessionId); status_t res = plugin.closeSession(sessionId);
@@ -234,9 +234,9 @@ TEST_F(WVDrmPluginTest, ClosesSessionWithoutReturningError) {
} }
TEST_F(WVDrmPluginTest, GeneratesKeyRequests) { TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const size_t kInitDataSize = 128; static const size_t kInitDataSize = 128;
uint8_t initDataRaw[kInitDataSize]; uint8_t initDataRaw[kInitDataSize];
@@ -316,7 +316,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
const char* mimeType = testSets[i].mimeType; const char* mimeType = testSets[i].mimeType;
const CdmInitData& initData = testSets[i].initDataOut; const CdmInitData& initData = testSets[i].initDataOut;
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData, EXPECT_CALL(*cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
kLicenseTypeOffline, cdmParameters, _, kLicenseTypeOffline, cdmParameters, _,
_, _, _, _)) _, _, _, _))
.WillOnce(DoAll(SetArgPointee<8>(cdmRequest), .WillOnce(DoAll(SetArgPointee<8>(cdmRequest),
@@ -324,7 +324,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
SetArgPointee<10>(kDefaultUrl), SetArgPointee<10>(kDefaultUrl),
Return(wvcdm::KEY_MESSAGE))); Return(wvcdm::KEY_MESSAGE)));
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData, EXPECT_CALL(*cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
kLicenseTypeStreaming, cdmParameters, kLicenseTypeStreaming, cdmParameters,
_, _, _, _, _)) _, _, _, _, _))
.WillOnce(DoAll(SetArgPointee<8>(cdmRequest), .WillOnce(DoAll(SetArgPointee<8>(cdmRequest),
@@ -332,7 +332,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
SetArgPointee<10>(kDefaultUrl), SetArgPointee<10>(kDefaultUrl),
Return(wvcdm::KEY_MESSAGE))); Return(wvcdm::KEY_MESSAGE)));
EXPECT_CALL(cdm, GenerateKeyRequest("", cdmKeySetId, mimeType, initData, EXPECT_CALL(*cdm, GenerateKeyRequest("", cdmKeySetId, mimeType, initData,
kLicenseTypeRelease, cdmParameters, kLicenseTypeRelease, cdmParameters,
NotNull(), StrEq(EMPTY_ORIGIN), _, _, NotNull(), StrEq(EMPTY_ORIGIN), _, _,
_)) _))
@@ -381,9 +381,9 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
} }
TEST_F(WVDrmPluginTest, AddsKeys) { TEST_F(WVDrmPluginTest, AddsKeys) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const uint32_t kResponseSize = 256; static const uint32_t kResponseSize = 256;
uint8_t responseRaw[kResponseSize]; uint8_t responseRaw[kResponseSize];
@@ -403,12 +403,12 @@ TEST_F(WVDrmPluginTest, AddsKeys) {
Vector<uint8_t> emptyKeySetId; Vector<uint8_t> emptyKeySetId;
EXPECT_CALL(cdm, AddKey(cdmSessionId, EXPECT_CALL(*cdm, AddKey(cdmSessionId,
ElementsAreArray(responseRaw, kResponseSize), _)) ElementsAreArray(responseRaw, kResponseSize), _))
.WillOnce(DoAll(SetArgPointee<2>(cdmKeySetId), .WillOnce(DoAll(SetArgPointee<2>(cdmKeySetId),
Return(wvcdm::KEY_ADDED))); Return(wvcdm::KEY_ADDED)));
EXPECT_CALL(cdm, AddKey("", ElementsAreArray(responseRaw, kResponseSize), EXPECT_CALL(*cdm, AddKey("", ElementsAreArray(responseRaw, kResponseSize),
Pointee(cdmKeySetId))) Pointee(cdmKeySetId)))
.Times(1); .Times(1);
@@ -422,9 +422,9 @@ TEST_F(WVDrmPluginTest, AddsKeys) {
} }
TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) { TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
sp<StrictMock<MockDrmPluginListener> > listener = sp<StrictMock<MockDrmPluginListener> > listener =
new StrictMock<MockDrmPluginListener>(); new StrictMock<MockDrmPluginListener>();
@@ -433,16 +433,16 @@ TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
static const uint32_t kResponseSize = 256; static const uint32_t kResponseSize = 256;
@@ -461,7 +461,7 @@ TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) {
NULL)) NULL))
.Times(1); .Times(1);
EXPECT_CALL(cdm, AddKey(_, _, _)) EXPECT_CALL(*cdm, AddKey(_, _, _))
.WillRepeatedly(Return(wvcdm::NEED_KEY)); .WillRepeatedly(Return(wvcdm::NEED_KEY));
plugin.openSession(sessionId); plugin.openSession(sessionId);
@@ -479,11 +479,11 @@ TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) {
} }
TEST_F(WVDrmPluginTest, RemovesKeys) { TEST_F(WVDrmPluginTest, RemovesKeys) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
EXPECT_CALL(cdm, RemoveKeys(cdmSessionId)) EXPECT_CALL(*cdm, RemoveKeys(cdmSessionId))
.Times(1); .Times(1);
status_t res = plugin.removeKeys(sessionId); status_t res = plugin.removeKeys(sessionId);
@@ -491,9 +491,9 @@ TEST_F(WVDrmPluginTest, RemovesKeys) {
} }
TEST_F(WVDrmPluginTest, RestoresKeys) { TEST_F(WVDrmPluginTest, RestoresKeys) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const size_t kKeySetIdSize = 32; static const size_t kKeySetIdSize = 32;
uint8_t keySetIdRaw[kKeySetIdSize]; uint8_t keySetIdRaw[kKeySetIdSize];
@@ -504,7 +504,7 @@ TEST_F(WVDrmPluginTest, RestoresKeys) {
Vector<uint8_t> keySetId; Vector<uint8_t> keySetId;
keySetId.appendArray(keySetIdRaw, kKeySetIdSize); keySetId.appendArray(keySetIdRaw, kKeySetIdSize);
EXPECT_CALL(cdm, RestoreKey(cdmSessionId, EXPECT_CALL(*cdm, RestoreKey(cdmSessionId,
ElementsAreArray(keySetIdRaw, kKeySetIdSize))) ElementsAreArray(keySetIdRaw, kKeySetIdSize)))
.Times(1); .Times(1);
@@ -513,9 +513,9 @@ TEST_F(WVDrmPluginTest, RestoresKeys) {
} }
TEST_F(WVDrmPluginTest, QueriesKeyStatus) { TEST_F(WVDrmPluginTest, QueriesKeyStatus) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
KeyedVector<String8, String8> expectedLicenseStatus; KeyedVector<String8, String8> expectedLicenseStatus;
CdmQueryMap cdmLicenseStatus; CdmQueryMap cdmLicenseStatus;
@@ -527,7 +527,7 @@ TEST_F(WVDrmPluginTest, QueriesKeyStatus) {
expectedLicenseStatus.add(String8("answer"), String8("42")); expectedLicenseStatus.add(String8("answer"), String8("42"));
cdmLicenseStatus["answer"] = "42"; cdmLicenseStatus["answer"] = "42";
EXPECT_CALL(cdm, QueryKeyStatus(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyStatus(cdmSessionId, _))
.WillOnce(DoAll(SetArgPointee<1>(cdmLicenseStatus), .WillOnce(DoAll(SetArgPointee<1>(cdmLicenseStatus),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
@@ -546,9 +546,9 @@ TEST_F(WVDrmPluginTest, QueriesKeyStatus) {
} }
TEST_F(WVDrmPluginTest, GetsProvisioningRequests) { TEST_F(WVDrmPluginTest, GetsProvisioningRequests) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const uint32_t kRequestSize = 256; static const uint32_t kRequestSize = 256;
uint8_t requestRaw[kRequestSize]; uint8_t requestRaw[kRequestSize];
@@ -560,7 +560,7 @@ TEST_F(WVDrmPluginTest, GetsProvisioningRequests) {
static const char* kDefaultUrl = "http://google.com/"; static const char* kDefaultUrl = "http://google.com/";
EXPECT_CALL(cdm, GetProvisioningRequest(kCertificateWidevine, IsEmpty(), EXPECT_CALL(*cdm, GetProvisioningRequest(kCertificateWidevine, IsEmpty(),
EMPTY_ORIGIN, _, _)) EMPTY_ORIGIN, _, _))
.WillOnce(DoAll(SetArgPointee<3>(cdmRequest), .WillOnce(DoAll(SetArgPointee<3>(cdmRequest),
SetArgPointee<4>(kDefaultUrl), SetArgPointee<4>(kDefaultUrl),
@@ -578,9 +578,9 @@ TEST_F(WVDrmPluginTest, GetsProvisioningRequests) {
} }
TEST_F(WVDrmPluginTest, HandlesProvisioningResponses) { TEST_F(WVDrmPluginTest, HandlesProvisioningResponses) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const uint32_t kResponseSize = 512; static const uint32_t kResponseSize = 512;
uint8_t responseRaw[kResponseSize]; uint8_t responseRaw[kResponseSize];
@@ -591,7 +591,7 @@ TEST_F(WVDrmPluginTest, HandlesProvisioningResponses) {
Vector<uint8_t> response; Vector<uint8_t> response;
response.appendArray(responseRaw, kResponseSize); response.appendArray(responseRaw, kResponseSize);
EXPECT_CALL(cdm, HandleProvisioningResponse(EMPTY_ORIGIN, EXPECT_CALL(*cdm, HandleProvisioningResponse(EMPTY_ORIGIN,
ElementsAreArray(responseRaw, ElementsAreArray(responseRaw,
kResponseSize), kResponseSize),
_, _)) _, _))
@@ -606,13 +606,13 @@ TEST_F(WVDrmPluginTest, HandlesProvisioningResponses) {
} }
TEST_F(WVDrmPluginTest, UnprovisionsDevice) { TEST_F(WVDrmPluginTest, UnprovisionsDevice) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL1, EMPTY_ORIGIN)) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL1, EMPTY_ORIGIN))
.Times(1); .Times(1);
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL3, EMPTY_ORIGIN)) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL3, EMPTY_ORIGIN))
.Times(1); .Times(1);
status_t res = plugin.unprovisionDevice(); status_t res = plugin.unprovisionDevice();
@@ -620,17 +620,17 @@ TEST_F(WVDrmPluginTest, UnprovisionsDevice) {
} }
TEST_F(WVDrmPluginTest, MuxesUnprovisioningErrors) { TEST_F(WVDrmPluginTest, MuxesUnprovisioningErrors) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
// Tests that both Unprovisions are called even if one fails. Also tests that // Tests that both Unprovisions are called even if one fails. Also tests that
// no matter which fails, the function always propagates the error. // no matter which fails, the function always propagates the error.
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL1, EMPTY_ORIGIN)) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL1, EMPTY_ORIGIN))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)) .WillOnce(Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(Return(wvcdm::NO_ERROR)) .WillOnce(Return(wvcdm::NO_ERROR))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)); .WillOnce(Return(wvcdm::UNKNOWN_ERROR));
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL3, EMPTY_ORIGIN)) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL3, EMPTY_ORIGIN))
.WillOnce(Return(wvcdm::NO_ERROR)) .WillOnce(Return(wvcdm::NO_ERROR))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)) .WillOnce(Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)); .WillOnce(Return(wvcdm::UNKNOWN_ERROR));
@@ -644,18 +644,18 @@ TEST_F(WVDrmPluginTest, MuxesUnprovisioningErrors) {
} }
TEST_F(WVDrmPluginTest, UnprovisionsOrigin) { TEST_F(WVDrmPluginTest, UnprovisionsOrigin) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
Vector<uint8_t> cert; Vector<uint8_t> cert;
Vector<uint8_t> key; Vector<uint8_t> key;
Vector<uint8_t> specialResponse; Vector<uint8_t> specialResponse;
specialResponse.appendArray(kUnprovisionResponse, kUnprovisionResponseSize); specialResponse.appendArray(kUnprovisionResponse, kUnprovisionResponseSize);
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL1, StrEq(kOrigin.string()))) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL1, StrEq(kOrigin.string())))
.Times(1); .Times(1);
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL3, StrEq(kOrigin.string()))) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL3, StrEq(kOrigin.string())))
.Times(1); .Times(1);
status_t res = plugin.setPropertyString(String8("origin"), kOrigin); status_t res = plugin.setPropertyString(String8("origin"), kOrigin);
@@ -665,16 +665,16 @@ TEST_F(WVDrmPluginTest, UnprovisionsOrigin) {
} }
TEST_F(WVDrmPluginTest, WillNotUnprovisionWithoutOrigin) { TEST_F(WVDrmPluginTest, WillNotUnprovisionWithoutOrigin) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
Vector<uint8_t> cert; Vector<uint8_t> cert;
Vector<uint8_t> key; Vector<uint8_t> key;
Vector<uint8_t> specialResponse; Vector<uint8_t> specialResponse;
specialResponse.appendArray(kUnprovisionResponse, kUnprovisionResponseSize); specialResponse.appendArray(kUnprovisionResponse, kUnprovisionResponseSize);
EXPECT_CALL(cdm, Unprovision(_, _)) EXPECT_CALL(*cdm, Unprovision(_, _))
.Times(0); .Times(0);
status_t res = plugin.provideProvisionResponse(specialResponse, cert, key); status_t res = plugin.provideProvisionResponse(specialResponse, cert, key);
@@ -682,9 +682,9 @@ TEST_F(WVDrmPluginTest, WillNotUnprovisionWithoutOrigin) {
} }
TEST_F(WVDrmPluginTest, MuxesOriginUnprovisioningErrors) { TEST_F(WVDrmPluginTest, MuxesOriginUnprovisioningErrors) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
Vector<uint8_t> cert; Vector<uint8_t> cert;
Vector<uint8_t> key; Vector<uint8_t> key;
@@ -693,11 +693,11 @@ TEST_F(WVDrmPluginTest, MuxesOriginUnprovisioningErrors) {
// Tests that both Unprovisions are called even if one fails. Also tests that // Tests that both Unprovisions are called even if one fails. Also tests that
// no matter which fails, the function always propagates the error. // no matter which fails, the function always propagates the error.
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL1, StrEq(kOrigin.string()))) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL1, StrEq(kOrigin.string())))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)) .WillOnce(Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(Return(wvcdm::NO_ERROR)) .WillOnce(Return(wvcdm::NO_ERROR))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)); .WillOnce(Return(wvcdm::UNKNOWN_ERROR));
EXPECT_CALL(cdm, Unprovision(kSecurityLevelL3, StrEq(kOrigin.string()))) EXPECT_CALL(*cdm, Unprovision(kSecurityLevelL3, StrEq(kOrigin.string())))
.WillOnce(Return(wvcdm::NO_ERROR)) .WillOnce(Return(wvcdm::NO_ERROR))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)) .WillOnce(Return(wvcdm::UNKNOWN_ERROR))
.WillOnce(Return(wvcdm::UNKNOWN_ERROR)); .WillOnce(Return(wvcdm::UNKNOWN_ERROR));
@@ -713,9 +713,9 @@ TEST_F(WVDrmPluginTest, MuxesOriginUnprovisioningErrors) {
} }
TEST_F(WVDrmPluginTest, GetsSecureStops) { TEST_F(WVDrmPluginTest, GetsSecureStops) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const char* app_id = "my_app_id"; const char* app_id = "my_app_id";
plugin.setPropertyString(String8("appId"), String8(app_id)); plugin.setPropertyString(String8("appId"), String8(app_id));
@@ -733,7 +733,7 @@ TEST_F(WVDrmPluginTest, GetsSecureStops) {
cdmStops.push_back(string(stopsRaw[i], stopsRaw[i] + kStopSize)); cdmStops.push_back(string(stopsRaw[i], stopsRaw[i] + kStopSize));
} }
EXPECT_CALL(cdm, GetUsageInfo(StrEq(app_id), _)) EXPECT_CALL(*cdm, GetUsageInfo(StrEq(app_id), _))
.WillOnce(DoAll(SetArgPointee<1>(cdmStops), .WillOnce(DoAll(SetArgPointee<1>(cdmStops),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
@@ -757,14 +757,14 @@ TEST_F(WVDrmPluginTest, GetsSecureStops) {
} }
TEST_F(WVDrmPluginTest, ReleasesAllSecureStops) { TEST_F(WVDrmPluginTest, ReleasesAllSecureStops) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
status_t res = plugin.setPropertyString(String8("appId"), String8("")); status_t res = plugin.setPropertyString(String8("appId"), String8(""));
ASSERT_EQ(OK, res); ASSERT_EQ(OK, res);
EXPECT_CALL(cdm, ReleaseAllUsageInfo(StrEq(""))) EXPECT_CALL(*cdm, ReleaseAllUsageInfo(StrEq("")))
.Times(1); .Times(1);
res = plugin.releaseAllSecureStops(); res = plugin.releaseAllSecureStops();
@@ -772,9 +772,9 @@ TEST_F(WVDrmPluginTest, ReleasesAllSecureStops) {
} }
TEST_F(WVDrmPluginTest, ReleasesSecureStops) { TEST_F(WVDrmPluginTest, ReleasesSecureStops) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const uint32_t kMessageSize = 128; static const uint32_t kMessageSize = 128;
uint8_t messageRaw[kMessageSize]; uint8_t messageRaw[kMessageSize];
@@ -785,7 +785,7 @@ TEST_F(WVDrmPluginTest, ReleasesSecureStops) {
Vector<uint8_t> message; Vector<uint8_t> message;
message.appendArray(messageRaw, kMessageSize); message.appendArray(messageRaw, kMessageSize);
EXPECT_CALL(cdm, ReleaseUsageInfo(ElementsAreArray(messageRaw, EXPECT_CALL(*cdm, ReleaseUsageInfo(ElementsAreArray(messageRaw,
kMessageSize))) kMessageSize)))
.Times(1); .Times(1);
@@ -795,9 +795,9 @@ TEST_F(WVDrmPluginTest, ReleasesSecureStops) {
} }
TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) { TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
CdmQueryMap l1Map; CdmQueryMap l1Map;
l1Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L1; l1Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L1;
@@ -825,7 +825,7 @@ TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) {
CdmQueryMap maxSessionsMap; CdmQueryMap maxSessionsMap;
maxSessionsMap[QUERY_KEY_MAX_NUMBER_OF_SESSIONS] = maxSessions; maxSessionsMap[QUERY_KEY_MAX_NUMBER_OF_SESSIONS] = maxSessions;
EXPECT_CALL(cdm, QueryStatus(_, _)) EXPECT_CALL(*cdm, QueryStatus(_, _))
.WillOnce(DoAll(SetArgPointee<1>(l1Map), .WillOnce(DoAll(SetArgPointee<1>(l1Map),
Return(wvcdm::NO_ERROR))) Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(SetArgPointee<1>(l3Map), .WillOnce(DoAll(SetArgPointee<1>(l3Map),
@@ -891,9 +891,9 @@ TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) {
} }
TEST_F(WVDrmPluginTest, DoesNotGetUnknownProperties) { TEST_F(WVDrmPluginTest, DoesNotGetUnknownProperties) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
String8 stringResult; String8 stringResult;
Vector<uint8_t> vectorResult; Vector<uint8_t> vectorResult;
@@ -910,9 +910,9 @@ TEST_F(WVDrmPluginTest, DoesNotGetUnknownProperties) {
} }
TEST_F(WVDrmPluginTest, DoesNotSetUnknownProperties) { TEST_F(WVDrmPluginTest, DoesNotSetUnknownProperties) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const uint32_t kValueSize = 32; static const uint32_t kValueSize = 32;
uint8_t valueRaw[kValueSize]; uint8_t valueRaw[kValueSize];
@@ -932,9 +932,9 @@ TEST_F(WVDrmPluginTest, DoesNotSetUnknownProperties) {
} }
TEST_F(WVDrmPluginTest, FailsGenericMethodsWithoutAnAlgorithmSet) { TEST_F(WVDrmPluginTest, FailsGenericMethodsWithoutAnAlgorithmSet) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
Vector<uint8_t> keyId; Vector<uint8_t> keyId;
Vector<uint8_t> input; Vector<uint8_t> input;
@@ -943,16 +943,16 @@ TEST_F(WVDrmPluginTest, FailsGenericMethodsWithoutAnAlgorithmSet) {
bool match; bool match;
// Provide expected behavior to support session creation // Provide expected behavior to support session creation
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -985,9 +985,9 @@ MATCHER_P(IsIV, iv, "") {
} }
TEST_F(WVDrmPluginTest, CallsGenericEncrypt) { TEST_F(WVDrmPluginTest, CallsGenericEncrypt) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const size_t kDataSize = 256; static const size_t kDataSize = 256;
uint8_t keyIdRaw[KEY_ID_SIZE]; uint8_t keyIdRaw[KEY_ID_SIZE];
@@ -1022,16 +1022,16 @@ TEST_F(WVDrmPluginTest, CallsGenericEncrypt) {
} }
// Provide expected behavior to support session creation // Provide expected behavior to support session creation
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -1045,9 +1045,9 @@ TEST_F(WVDrmPluginTest, CallsGenericEncrypt) {
} }
TEST_F(WVDrmPluginTest, CallsGenericDecrypt) { TEST_F(WVDrmPluginTest, CallsGenericDecrypt) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const size_t kDataSize = 256; static const size_t kDataSize = 256;
uint8_t keyIdRaw[KEY_ID_SIZE]; uint8_t keyIdRaw[KEY_ID_SIZE];
@@ -1082,16 +1082,16 @@ TEST_F(WVDrmPluginTest, CallsGenericDecrypt) {
} }
// Provide expected behavior to support session creation // Provide expected behavior to support session creation
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -1105,9 +1105,9 @@ TEST_F(WVDrmPluginTest, CallsGenericDecrypt) {
} }
TEST_F(WVDrmPluginTest, CallsGenericSign) { TEST_F(WVDrmPluginTest, CallsGenericSign) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const size_t kDataSize = 256; static const size_t kDataSize = 256;
uint8_t keyIdRaw[KEY_ID_SIZE]; uint8_t keyIdRaw[KEY_ID_SIZE];
@@ -1144,16 +1144,16 @@ TEST_F(WVDrmPluginTest, CallsGenericSign) {
} }
// Provide expected behavior to support session creation // Provide expected behavior to support session creation
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -1167,9 +1167,9 @@ TEST_F(WVDrmPluginTest, CallsGenericSign) {
} }
TEST_F(WVDrmPluginTest, CallsGenericVerify) { TEST_F(WVDrmPluginTest, CallsGenericVerify) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
static const size_t kDataSize = 256; static const size_t kDataSize = 256;
static const size_t kSignatureSize = 16; static const size_t kSignatureSize = 16;
@@ -1216,16 +1216,16 @@ TEST_F(WVDrmPluginTest, CallsGenericVerify) {
} }
// Provide expected behavior to support session creation // Provide expected behavior to support session creation
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -1244,21 +1244,21 @@ TEST_F(WVDrmPluginTest, CallsGenericVerify) {
} }
TEST_F(WVDrmPluginTest, RegistersForEvents) { TEST_F(WVDrmPluginTest, RegistersForEvents) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
// Provide expected behavior to support session creation // Provide expected behavior to support session creation
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, &plugin, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, &plugin, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -1266,11 +1266,11 @@ TEST_F(WVDrmPluginTest, RegistersForEvents) {
} }
TEST_F(WVDrmPluginTest, UnregistersForAllEventsOnDestruction) { TEST_F(WVDrmPluginTest, UnregistersForAllEventsOnDestruction) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
{ {
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
uint8_t sessionIdRaw1[kSessionIdSize]; uint8_t sessionIdRaw1[kSessionIdSize];
uint8_t sessionIdRaw2[kSessionIdSize]; uint8_t sessionIdRaw2[kSessionIdSize];
@@ -1282,19 +1282,19 @@ TEST_F(WVDrmPluginTest, UnregistersForAllEventsOnDestruction) {
CdmSessionId cdmSessionId1(sessionIdRaw1, sessionIdRaw1 + kSessionIdSize); CdmSessionId cdmSessionId1(sessionIdRaw1, sessionIdRaw1 + kSessionIdSize);
CdmSessionId cdmSessionId2(sessionIdRaw2, sessionIdRaw2 + kSessionIdSize); CdmSessionId cdmSessionId2(sessionIdRaw2, sessionIdRaw2 + kSessionIdSize);
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.WillOnce(DoAll(SetArgPointee<4>(cdmSessionId1), .WillOnce(DoAll(SetArgPointee<4>(cdmSessionId1),
Return(wvcdm::NO_ERROR))) Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(SetArgPointee<4>(cdmSessionId2), .WillOnce(DoAll(SetArgPointee<4>(cdmSessionId2),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId1, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId1, _))
.WillOnce(Invoke(setSessionIdOnMap<4>)); .WillOnce(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId2, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId2, _))
.WillOnce(Invoke(setSessionIdOnMap<5>)); .WillOnce(Invoke(setSessionIdOnMap<5>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.openSession(sessionId); status_t res = plugin.openSession(sessionId);
@@ -1306,9 +1306,9 @@ TEST_F(WVDrmPluginTest, UnregistersForAllEventsOnDestruction) {
} }
TEST_F(WVDrmPluginTest, MarshalsEvents) { TEST_F(WVDrmPluginTest, MarshalsEvents) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
sp<StrictMock<MockDrmPluginListener> > listener = sp<StrictMock<MockDrmPluginListener> > listener =
new StrictMock<MockDrmPluginListener>(); new StrictMock<MockDrmPluginListener>();
@@ -1393,9 +1393,9 @@ TEST_F(WVDrmPluginTest, MarshalsEvents) {
} }
TEST_F(WVDrmPluginTest, GeneratesProvisioningNeededEvent) { TEST_F(WVDrmPluginTest, GeneratesProvisioningNeededEvent) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
sp<StrictMock<MockDrmPluginListener> > listener = sp<StrictMock<MockDrmPluginListener> > listener =
new StrictMock<MockDrmPluginListener>(); new StrictMock<MockDrmPluginListener>();
@@ -1406,12 +1406,12 @@ TEST_F(WVDrmPluginTest, GeneratesProvisioningNeededEvent) {
NULL)) NULL))
.Times(1); .Times(1);
EXPECT_CALL(cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _))
.Times(AtLeast(1)) .Times(AtLeast(1))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NEED_PROVISIONING))); Return(wvcdm::NEED_PROVISIONING)));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
status_t res = plugin.setListener(listener); status_t res = plugin.setListener(listener);
@@ -1422,9 +1422,9 @@ TEST_F(WVDrmPluginTest, GeneratesProvisioningNeededEvent) {
} }
TEST_F(WVDrmPluginTest, ProvidesExpectedDefaultPropertiesToCdm) { TEST_F(WVDrmPluginTest, ProvidesExpectedDefaultPropertiesToCdm) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const CdmClientPropertySet* propertySet = NULL; const CdmClientPropertySet* propertySet = NULL;
@@ -1432,16 +1432,16 @@ TEST_F(WVDrmPluginTest, ProvidesExpectedDefaultPropertiesToCdm) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
@@ -1457,9 +1457,9 @@ TEST_F(WVDrmPluginTest, ProvidesExpectedDefaultPropertiesToCdm) {
} }
TEST_F(WVDrmPluginTest, CanSetAppId) { TEST_F(WVDrmPluginTest, CanSetAppId) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const CdmClientPropertySet* propertySet = NULL; const CdmClientPropertySet* propertySet = NULL;
@@ -1470,21 +1470,21 @@ TEST_F(WVDrmPluginTest, CanSetAppId) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin queries for the security level // Provide expected behavior when plugin queries for the security level
EXPECT_CALL(cdm, QueryStatus(_, _)) EXPECT_CALL(*cdm, QueryStatus(_, _))
.WillRepeatedly(DoAll(SetArgPointee<1>(l3Map), .WillRepeatedly(DoAll(SetArgPointee<1>(l3Map),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
@@ -1510,24 +1510,24 @@ TEST_F(WVDrmPluginTest, CanSetAppId) {
} }
TEST_P(WVDrmPluginOriginTest, CanSetOrigin) { TEST_P(WVDrmPluginOriginTest, CanSetOrigin) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
OriginTestVariant params = GetParam(); OriginTestVariant params = GetParam();
// Provide expected mock behavior // Provide expected mock behavior
{ {
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
// Provide expected behavior when plugin closes a session // Provide expected behavior when plugin closes a session
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
// Note which mock calls we expect // Note which mock calls we expect
EXPECT_CALL(cdm, OpenSession(_, _, StrEq(params.expectedOrigin), _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, StrEq(params.expectedOrigin), _, _))
.WillOnce(DoAll(SetArgPointee<4>(cdmSessionId), .WillOnce(DoAll(SetArgPointee<4>(cdmSessionId),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
@@ -1546,9 +1546,9 @@ INSTANTIATE_TEST_CASE_P(OriginTests, WVDrmPluginOriginTest, Values(
OriginTestVariant("With an Origin", kOrigin, kOrigin.string()))); OriginTestVariant("With an Origin", kOrigin, kOrigin.string())));
TEST_F(WVDrmPluginTest, CanSetSecurityLevel) { TEST_F(WVDrmPluginTest, CanSetSecurityLevel) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const CdmClientPropertySet* propertySet = NULL; const CdmClientPropertySet* propertySet = NULL;
@@ -1558,7 +1558,7 @@ TEST_F(WVDrmPluginTest, CanSetSecurityLevel) {
CdmQueryMap l3Map; CdmQueryMap l3Map;
l3Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L3; l3Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L3;
EXPECT_CALL(cdm, QueryStatus(_, _)) EXPECT_CALL(*cdm, QueryStatus(_, _))
.WillOnce(DoAll(SetArgPointee<1>(l3Map), .WillOnce(DoAll(SetArgPointee<1>(l3Map),
Return(wvcdm::NO_ERROR))) Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(SetArgPointee<1>(l1Map), .WillOnce(DoAll(SetArgPointee<1>(l1Map),
@@ -1568,16 +1568,16 @@ TEST_F(WVDrmPluginTest, CanSetSecurityLevel) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
@@ -1643,9 +1643,9 @@ TEST_F(WVDrmPluginTest, CanSetSecurityLevel) {
} }
TEST_F(WVDrmPluginTest, CanSetPrivacyMode) { TEST_F(WVDrmPluginTest, CanSetPrivacyMode) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const CdmClientPropertySet* propertySet = NULL; const CdmClientPropertySet* propertySet = NULL;
@@ -1653,16 +1653,16 @@ TEST_F(WVDrmPluginTest, CanSetPrivacyMode) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
@@ -1687,9 +1687,9 @@ TEST_F(WVDrmPluginTest, CanSetPrivacyMode) {
} }
TEST_F(WVDrmPluginTest, CanSetServiceCertificate) { TEST_F(WVDrmPluginTest, CanSetServiceCertificate) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const CdmClientPropertySet* propertySet = NULL; const CdmClientPropertySet* propertySet = NULL;
@@ -1708,16 +1708,16 @@ TEST_F(WVDrmPluginTest, CanSetServiceCertificate) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
@@ -1739,9 +1739,9 @@ TEST_F(WVDrmPluginTest, CanSetServiceCertificate) {
} }
TEST_F(WVDrmPluginTest, CanSetSessionSharing) { TEST_F(WVDrmPluginTest, CanSetSessionSharing) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
const CdmClientPropertySet* propertySet = NULL; const CdmClientPropertySet* propertySet = NULL;
@@ -1749,16 +1749,16 @@ TEST_F(WVDrmPluginTest, CanSetSessionSharing) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }
@@ -1793,9 +1793,9 @@ TEST_F(WVDrmPluginTest, CanSetSessionSharing) {
} }
TEST_F(WVDrmPluginTest, AllowsStoringOfSessionSharingId) { TEST_F(WVDrmPluginTest, AllowsStoringOfSessionSharingId) {
StrictMock<MockCDM> cdm; android::sp<StrictMock<MockCDM>> cdm = new StrictMock<MockCDM>();
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(cdm.get(), &crypto);
CdmClientPropertySet* propertySet = NULL; CdmClientPropertySet* propertySet = NULL;
@@ -1808,16 +1808,16 @@ TEST_F(WVDrmPluginTest, AllowsStoringOfSessionSharingId) {
{ {
// Provide expected behavior in response to OpenSession and store the // Provide expected behavior in response to OpenSession and store the
// property set // property set
EXPECT_CALL(cdm, OpenSession(_, _, _, _, _)) EXPECT_CALL(*cdm, OpenSession(_, _, _, _, _))
.WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId), .WillRepeatedly(DoAll(SetArgPointee<4>(cdmSessionId),
SaveArg<1>(&propertySet), SaveArg<1>(&propertySet),
Return(wvcdm::NO_ERROR))); Return(wvcdm::NO_ERROR)));
// Provide expected behavior when plugin requests session control info // Provide expected behavior when plugin requests session control info
EXPECT_CALL(cdm, QueryKeyControlInfo(cdmSessionId, _)) EXPECT_CALL(*cdm, QueryKeyControlInfo(cdmSessionId, _))
.WillRepeatedly(Invoke(setSessionIdOnMap<4>)); .WillRepeatedly(Invoke(setSessionIdOnMap<4>));
EXPECT_CALL(cdm, CloseSession(_)) EXPECT_CALL(*cdm, CloseSession(_))
.Times(AtLeast(0)); .Times(AtLeast(0));
} }