summaryrefslogtreecommitdiff
path: root/cas
diff options
context:
space:
mode:
authorHenry Fang <quxiangfang@google.com>2021-02-11 10:20:51 -0800
committerHenry Fang <quxiangfang@google.com>2021-02-12 19:41:24 +0000
commitb4695c83bc7afefa4af74990f6c4670a8b49aede (patch)
treef03f47038ab264c9b4e2bf5103e5251bfdbe6a52 /cas
parent7d92b37989cab64958bc6647c34b886c998b0a03 (diff)
handle multiple cas plugins.
some of them support descrambler, some of them don't bug: 176799453 Test: atest VtsHalCasV1_[#]TargetTest Change-Id: Ifec298486b413129601787755bbe8e7bbea6cbf3
Diffstat (limited to 'cas')
-rw-r--r--cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp34
-rw-r--r--cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp25
-rw-r--r--cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp18
3 files changed, 46 insertions, 31 deletions
diff --git a/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp b/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp
index df0c85934f..a1d5930386 100644
--- a/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp
+++ b/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp
@@ -256,12 +256,19 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
::testing::AssertionResult MediaCasHidlTest::createCasPlugin(int32_t caSystemId) {
auto status = mService->isSystemIdSupported(caSystemId);
+ bool skipDescrambler = false;
if (!status.isOk() || !status) {
return ::testing::AssertionFailure();
}
status = mService->isDescramblerSupported(caSystemId);
if (!status.isOk() || !status) {
- return ::testing::AssertionFailure();
+ if (mIsTestDescrambler) {
+ return ::testing::AssertionFailure();
+ } else {
+ ALOGI("Skip Descrambler test since it's not required in cas@1.2.");
+ mDescramblerBase = nullptr;
+ skipDescrambler = true;
+ }
}
mCasListener = new MediaCasListener();
@@ -274,16 +281,15 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
return ::testing::AssertionFailure();
}
+ if (skipDescrambler) {
+ return ::testing::AssertionSuccess();
+ }
+
auto descramblerStatus = mService->createDescrambler(caSystemId);
if (!descramblerStatus.isOk()) {
- if (mIsTestDescrambler) {
- return ::testing::AssertionFailure();
- } else {
- ALOGI("Skip Descrambler test since it's not required in cas@1.2.");
- return ::testing::AssertionSuccess();
- }
+ return ::testing::AssertionFailure();
}
- mIsTestDescrambler = true;
+
mDescramblerBase = descramblerStatus;
return ::testing::AssertionResult(mDescramblerBase != nullptr);
}
@@ -506,7 +512,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApis) {
returnStatus = mMediaCas->setSessionPrivateData(streamSessionId, hidlPvtData);
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
returnStatus = mDescramblerBase->setMediaCasSession(sessionId);
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
@@ -556,7 +562,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApis) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
EXPECT_FALSE(mDescramblerBase->requiresSecureDecoderComponent("video/avc"));
sp<IDescrambler> descrambler;
@@ -606,7 +612,7 @@ TEST_P(MediaCasHidlTest, TestClearKeySessionClosedAfterRelease) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
returnStatus = mDescramblerBase->setMediaCasSession(sessionId);
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::ERROR_CAS_SESSION_NOT_OPENED, returnStatus);
@@ -672,7 +678,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyErrors) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::ERROR_CAS_UNKNOWN, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
/*
* Test MediaDescrambler error codes
*/
@@ -720,7 +726,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyOobFails) {
std::vector<uint8_t> sessionId;
ASSERT_TRUE(openCasSession(&sessionId));
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
returnStatus = mDescramblerBase->setMediaCasSession(sessionId);
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
@@ -732,7 +738,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyOobFails) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
sp<IDescrambler> descrambler = IDescrambler::castFrom(mDescramblerBase);
ASSERT_NE(nullptr, descrambler.get());
diff --git a/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp b/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp
index 6797506642..42d70cfeb9 100644
--- a/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp
+++ b/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp
@@ -297,12 +297,19 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
::testing::AssertionResult MediaCasHidlTest::createCasPlugin(int32_t caSystemId) {
auto status = mService->isSystemIdSupported(caSystemId);
+ bool skipDescrambler = false;
if (!status.isOk() || !status) {
return ::testing::AssertionFailure();
}
status = mService->isDescramblerSupported(caSystemId);
if (!status.isOk() || !status) {
- return ::testing::AssertionFailure();
+ if (mIsTestDescrambler) {
+ return ::testing::AssertionFailure();
+ } else {
+ ALOGI("Skip Descrambler test since it's not required in cas@1.2.");
+ mDescramblerBase = nullptr;
+ skipDescrambler = true;
+ }
}
mCasListener = new MediaCasListener();
@@ -315,16 +322,14 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
return ::testing::AssertionFailure();
}
+ if (skipDescrambler) {
+ return ::testing::AssertionSuccess();
+ }
+
auto descramblerStatus = mService->createDescrambler(caSystemId);
if (!descramblerStatus.isOk()) {
- if (mIsTestDescrambler) {
- return ::testing::AssertionFailure();
- } else {
- ALOGI("Skip Descrambler test since it's not required in cas@1.2.");
- return ::testing::AssertionSuccess();
- }
+ return ::testing::AssertionFailure();
}
- mIsTestDescrambler = true;
mDescramblerBase = descramblerStatus;
return ::testing::AssertionResult(mDescramblerBase != nullptr);
@@ -481,7 +486,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
returnStatus = mDescramblerBase->setMediaCasSession(sessionId);
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
@@ -533,7 +538,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
EXPECT_FALSE(mDescramblerBase->requiresSecureDecoderComponent("video/avc"));
sp<IDescrambler> descrambler;
diff --git a/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp b/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp
index 333dea61db..0d75f5b812 100644
--- a/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp
+++ b/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp
@@ -311,7 +311,6 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
sp<ICas> mMediaCas;
sp<IDescramblerBase> mDescramblerBase;
sp<MediaCasListener> mCasListener;
- bool mIsTestDescrambler = false;
typedef struct _OobInputTestParams {
const SubSample* subSamples;
uint32_t numSubSamples;
@@ -336,12 +335,15 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
::testing::AssertionResult MediaCasHidlTest::createCasPlugin(int32_t caSystemId) {
auto status = mService->isSystemIdSupported(caSystemId);
+ bool skipDescrambler = false;
if (!status.isOk() || !status) {
return ::testing::AssertionFailure();
}
status = mService->isDescramblerSupported(caSystemId);
if (!status.isOk() || !status) {
- return ::testing::AssertionFailure();
+ ALOGI("Skip Descrambler test since it's not required in cas@1.2.");
+ mDescramblerBase = nullptr;
+ skipDescrambler = true;
}
mCasListener = new MediaCasListener();
@@ -354,12 +356,14 @@ class MediaCasHidlTest : public testing::TestWithParam<std::string> {
return ::testing::AssertionFailure();
}
+ if (skipDescrambler) {
+ return ::testing::AssertionSuccess();
+ }
+
auto descramblerStatus = mService->createDescrambler(caSystemId);
if (!descramblerStatus.isOk()) {
- ALOGI("Skip Descrambler test since it's not required in cas@1.2.");
- return ::testing::AssertionSuccess();
+ return ::testing::AssertionFailure();
}
- mIsTestDescrambler = true;
mDescramblerBase = descramblerStatus;
return ::testing::AssertionResult(mDescramblerBase != nullptr);
@@ -516,7 +520,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
returnStatus = mDescramblerBase->setMediaCasSession(sessionId);
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
@@ -571,7 +575,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) {
EXPECT_TRUE(returnStatus.isOk());
EXPECT_EQ(Status::OK, returnStatus);
- if (mIsTestDescrambler) {
+ if (mDescramblerBase != nullptr) {
EXPECT_FALSE(mDescramblerBase->requiresSecureDecoderComponent("video/avc"));
sp<IDescrambler> descrambler;