Source release 17.1.0
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
||||
// source code may only be used and distributed under the Widevine Master
|
||||
// License Agreement.
|
||||
// source code may only be used and distributed under the Widevine License
|
||||
// Agreement.
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
@@ -45,7 +45,7 @@ const std::string kJsonKeyIds = "key_ids";
|
||||
const uint32_t kFourCcCbc1 = 0x63626331;
|
||||
const uint32_t kFourCcCbcs = 0x63626373;
|
||||
|
||||
const std::string kWidevinePssh = a2bs_hex(
|
||||
const std::string kWidevinePssh = wvutil::a2bs_hex(
|
||||
// Widevine PSSH box
|
||||
"00000042" // atom size
|
||||
"70737368" // atom type="pssh"
|
||||
@@ -55,7 +55,7 @@ const std::string kWidevinePssh = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kWidevinePsshFirst = a2bs_hex(
|
||||
const std::string kWidevinePsshFirst = wvutil::a2bs_hex(
|
||||
// first PSSH box, Widevine
|
||||
"00000042" // atom size
|
||||
"70737368" // atom type "pssh"
|
||||
@@ -74,7 +74,7 @@ const std::string kWidevinePsshFirst = a2bs_hex(
|
||||
// arbitrary data:
|
||||
"0102030405060708");
|
||||
|
||||
const std::string kWidevinePsshAfterV0Pssh = a2bs_hex(
|
||||
const std::string kWidevinePsshAfterV0Pssh = wvutil::a2bs_hex(
|
||||
// first PSSH box, Playready [1]
|
||||
"00000028" // atom size
|
||||
"70737368" // atom type "pssh"
|
||||
@@ -93,7 +93,7 @@ const std::string kWidevinePsshAfterV0Pssh = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kWidevinePsshAfterNonZeroFlags = a2bs_hex(
|
||||
const std::string kWidevinePsshAfterNonZeroFlags = wvutil::a2bs_hex(
|
||||
// first PSSH box, Playready [1]
|
||||
"00000028" // atom size
|
||||
"70737368" // atom type "pssh"
|
||||
@@ -112,7 +112,7 @@ const std::string kWidevinePsshAfterNonZeroFlags = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kWidevinePsshAfterV1Pssh = a2bs_hex(
|
||||
const std::string kWidevinePsshAfterV1Pssh = wvutil::a2bs_hex(
|
||||
// first PSSH box, generic CENC [2]
|
||||
"00000044" // atom size
|
||||
"70737368" // atom type "pssh"
|
||||
@@ -132,7 +132,7 @@ const std::string kWidevinePsshAfterV1Pssh = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kWidevineV1Pssh = a2bs_hex(
|
||||
const std::string kWidevineV1Pssh = wvutil::a2bs_hex(
|
||||
// Widevine PSSH box, v1 format
|
||||
"00000066" // atom size
|
||||
"70737368" // atom type "pssh"
|
||||
@@ -145,7 +145,7 @@ const std::string kWidevineV1Pssh = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kOtherBoxFirst = a2bs_hex(
|
||||
const std::string kOtherBoxFirst = wvutil::a2bs_hex(
|
||||
// first box, not a PSSH box
|
||||
"00000018" // atom size
|
||||
"77686174" // atom type "what"
|
||||
@@ -160,7 +160,7 @@ const std::string kOtherBoxFirst = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kZeroSizedPsshBox = a2bs_hex(
|
||||
const std::string kZeroSizedPsshBox = wvutil::a2bs_hex(
|
||||
// Widevine PSSH box
|
||||
"00000000" // atom size (whole buffer)
|
||||
"70737368" // atom type="pssh"
|
||||
@@ -170,7 +170,7 @@ const std::string kZeroSizedPsshBox = a2bs_hex(
|
||||
// data:
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
|
||||
const std::string kMultipleWidevinePsshBox = a2bs_hex(
|
||||
const std::string kMultipleWidevinePsshBox = wvutil::a2bs_hex(
|
||||
// first PSSH box, Widevine with single keys
|
||||
"00000042" // atom size
|
||||
"70737368" // atom type "pssh"
|
||||
@@ -219,9 +219,9 @@ const std::string kMultipleWidevinePsshBox = a2bs_hex(
|
||||
"d543101cc842bbec2d0b30");
|
||||
// These are the data payloads of the two PSSH boxes in
|
||||
// kMultipleWidevinePsshBox.
|
||||
const CdmInitData kSingleKeyWidevinePsshBoxData = a2bs_hex(
|
||||
const CdmInitData kSingleKeyWidevinePsshBoxData = wvutil::a2bs_hex(
|
||||
"08011a0d7769646576696e655f74657374220f73747265616d696e675f636c697031");
|
||||
const CdmInitData kEntitledKeysWidevinePsshBoxData = a2bs_hex(
|
||||
const CdmInitData kEntitledKeysWidevinePsshBoxData = wvutil::a2bs_hex(
|
||||
"220b47726f7570563254657374381448"
|
||||
"e3dc959b065002580272580a10668093"
|
||||
"381a8c5be48a0168ce372726ac1210c8"
|
||||
@@ -341,11 +341,8 @@ class VectorOfStrings {
|
||||
std::string GenerateHlsUriData(const std::string& provider,
|
||||
const std::string& content_id,
|
||||
const std::vector<std::string>& key_ids) {
|
||||
std::string json = GenerateJsonInitData(provider, content_id, key_ids);
|
||||
std::vector<uint8_t> json_init_data(
|
||||
reinterpret_cast<const uint8_t*>(json.data()),
|
||||
reinterpret_cast<const uint8_t*>(json.data() + json.size()));
|
||||
return kHlsTestUriDataFormat + Base64Encode(json_init_data);
|
||||
const std::string json = GenerateJsonInitData(provider, content_id, key_ids);
|
||||
return kHlsTestUriDataFormat + wvutil::Base64Encode(json);
|
||||
}
|
||||
|
||||
std::string CreateHlsAttributeList(const std::string& method,
|
||||
@@ -511,7 +508,7 @@ TEST_P(InitializationDataTest, Parse) {
|
||||
EXPECT_FALSE(init_data.IsEmpty());
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
ParsePssh, InitializationDataTest,
|
||||
::testing::Values(kWidevinePssh, kWidevinePsshFirst,
|
||||
kWidevinePsshAfterV0Pssh, kWidevinePsshAfterNonZeroFlags,
|
||||
@@ -557,7 +554,7 @@ TEST_P(HlsKeyFormatVersionsExtractionTest, ExtractKeyFormatVersions) {
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HlsTest, HlsKeyFormatVersionsExtractionTest,
|
||||
::testing::Values(VectorOfStrings(kHlsTestKeyFormatVersion1).Generate(),
|
||||
VectorOfStrings(kHlsTestKeyFormatVersion21).Generate(),
|
||||
@@ -587,7 +584,7 @@ TEST_P(HlsAttributeExtractionTest, ExtractAttribute) {
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HlsTest, HlsAttributeExtractionTest,
|
||||
::testing::Values(
|
||||
HlsAttributeVariant(kHlsAttributeList, HLS_METHOD_ATTRIBUTE,
|
||||
@@ -647,14 +644,14 @@ TEST_P(HlsHexAttributeExtractionTest, ExtractHexAttribute) {
|
||||
if (param.success_) {
|
||||
EXPECT_TRUE(InitializationData::ExtractHexAttribute(param.attribute_list_,
|
||||
param.key_, &value));
|
||||
EXPECT_EQ(param.value_, b2a_hex(value));
|
||||
EXPECT_EQ(param.value_, wvutil::b2a_hex(value));
|
||||
} else {
|
||||
EXPECT_FALSE(InitializationData::ExtractHexAttribute(param.attribute_list_,
|
||||
param.key_, &value));
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HlsTest, HlsHexAttributeExtractionTest,
|
||||
::testing::Values(
|
||||
HlsAttributeVariant(kHlsAttributeList, HLS_IV_ATTRIBUTE, kHlsIvHexValue,
|
||||
@@ -685,7 +682,7 @@ TEST_P(HlsQuotedAttributeExtractionTest, ExtractQuotedAttribute) {
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HlsTest, HlsQuotedAttributeExtractionTest,
|
||||
::testing::Values(
|
||||
HlsAttributeVariant(
|
||||
@@ -716,21 +713,26 @@ TEST_P(HlsConstructionTest, InitData) {
|
||||
if (param.success_) {
|
||||
WidevinePsshData cenc_header;
|
||||
EXPECT_TRUE(cenc_header.ParseFromString(value));
|
||||
|
||||
CORE_UTIL_IGNORE_DEPRECATED
|
||||
EXPECT_EQ(video_widevine::WidevinePsshData_Algorithm_AESCTR,
|
||||
cenc_header.algorithm());
|
||||
EXPECT_EQ(param.provider_, cenc_header.provider());
|
||||
CORE_UTIL_RESTORE_WARNINGS
|
||||
|
||||
for (size_t i = 0; i < param.key_ids_.size(); ++i) {
|
||||
bool key_id_found = false;
|
||||
if (param.key_ids_[i].size() != 32) continue;
|
||||
for (int j = 0; j < cenc_header.key_ids_size(); ++j) {
|
||||
if (param.key_ids_[i] == b2a_hex(cenc_header.key_ids(j))) {
|
||||
if (param.key_ids_[i] == wvutil::b2a_hex(cenc_header.key_ids(j))) {
|
||||
key_id_found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
EXPECT_TRUE(key_id_found);
|
||||
}
|
||||
EXPECT_EQ(param.provider_, cenc_header.provider());
|
||||
std::vector<uint8_t> param_content_id_vec(Base64Decode(param.content_id_));
|
||||
std::vector<uint8_t> param_content_id_vec(
|
||||
wvutil::Base64Decode(param.content_id_));
|
||||
EXPECT_EQ(
|
||||
std::string(param_content_id_vec.begin(), param_content_id_vec.end()),
|
||||
cenc_header.content_id());
|
||||
@@ -749,7 +751,7 @@ TEST_P(HlsConstructionTest, InitData) {
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HlsTest, HlsConstructionTest,
|
||||
::testing::Values(
|
||||
HlsInitDataVariant(kHlsMethodAes128, "", kHlsTestContentId,
|
||||
@@ -782,19 +784,16 @@ INSTANTIATE_TEST_CASE_P(
|
||||
.AddKeyId(kHlsTestKeyId1)));
|
||||
|
||||
TEST_F(HlsInitDataConstructionTest, InvalidUriDataFormat) {
|
||||
std::string json =
|
||||
const std::string json =
|
||||
GenerateJsonInitData(kHlsTestProvider, kHlsTestContentId,
|
||||
VectorOfStrings(kHlsTestKeyId1).Generate());
|
||||
std::vector<uint8_t> json_init_data(
|
||||
reinterpret_cast<const uint8_t*>(json.data()),
|
||||
reinterpret_cast<const uint8_t*>(json.data() + json.size()));
|
||||
std::string value;
|
||||
EXPECT_FALSE(InitializationData::ConstructWidevineInitData(
|
||||
kHlsMethodAes128, Base64Encode(json_init_data), &value));
|
||||
kHlsMethodAes128, wvutil::Base64Encode(json), &value));
|
||||
}
|
||||
|
||||
TEST_F(HlsInitDataConstructionTest, InvalidUriBase64Encode) {
|
||||
std::string json =
|
||||
const std::string json =
|
||||
GenerateJsonInitData(kHlsTestProvider, kHlsTestContentId,
|
||||
VectorOfStrings(kHlsTestKeyId1).Generate());
|
||||
std::string value;
|
||||
@@ -822,6 +821,8 @@ TEST_P(HlsParseTest, Parse) {
|
||||
|
||||
WidevinePsshData cenc_header;
|
||||
EXPECT_TRUE(cenc_header.ParseFromString(init_data.data()));
|
||||
|
||||
CORE_UTIL_IGNORE_DEPRECATED
|
||||
EXPECT_EQ(video_widevine::WidevinePsshData_Algorithm_AESCTR,
|
||||
cenc_header.algorithm());
|
||||
if (param.key_.compare(kJsonProvider) == 0) {
|
||||
@@ -829,17 +830,18 @@ TEST_P(HlsParseTest, Parse) {
|
||||
} else if (param.key_.compare(kJsonContentId) == 0) {
|
||||
EXPECT_EQ(param.value_, cenc_header.content_id());
|
||||
} else if (param.key_.compare(kJsonKeyIds) == 0) {
|
||||
EXPECT_EQ(param.value_, b2a_hex(cenc_header.key_ids(0)));
|
||||
EXPECT_EQ(param.value_, wvutil::b2a_hex(cenc_header.key_ids(0)));
|
||||
}
|
||||
CORE_UTIL_RESTORE_WARNINGS
|
||||
|
||||
EXPECT_EQ(kHlsIvHexValue, b2a_hex(init_data.hls_iv()));
|
||||
EXPECT_EQ(kHlsIvHexValue, wvutil::b2a_hex(init_data.hls_iv()));
|
||||
} else {
|
||||
EXPECT_TRUE(init_data.is_hls());
|
||||
EXPECT_TRUE(init_data.IsEmpty());
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
HlsTest, HlsParseTest,
|
||||
::testing::Values(
|
||||
HlsAttributeVariant(kHlsAttributeList, "", "", true),
|
||||
|
||||
Reference in New Issue
Block a user