Merge "Replace MockCDM with Android Smart Pointer to MockCDM" into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e16e4c1a49
@@ -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);
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user