diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000..7514d046 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,92 @@ +# Copyright 2023 Google LLC. All Rights Reserved. This file and proprietary +# source code may only be used and distributed under the Widevine License +# Agreement. + +Checks: > + -*, + bugprone-*, + -bugprone-branch-clone, + -bugprone-easily-swappable-parameters, + -bugprone-implicit-widening-of-multiplication-result, + -bugprone-integer-division, + -bugprone-macro-parentheses, + -bugprone-narrowing-conversions, + -bugprone-not-null-terminated-result, + -bugprone-sizeof-expression, + -bugprone-unhandled-self-assignment, + clang-analyzer-*, + -clang-analyzer-core.CallAndMessage, + -clang-analyzer-core.NullDereference, + -clang-analyzer-core.UndefinedBinaryOperatorResult, + -clang-analyzer-cplusplus.NewDelete, + -clang-analyzer-cplusplus.NewDeleteLeaks, + -clang-analyzer-optin.cplusplus.VirtualCall, + -clang-analyzer-optin.performance.Padding, + -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, + -clang-analyzer-valist.Uninitialized, + clang-diagnostic-*, + google-build-explicit-make-pair, + google-build-namespaces, + google-global-names-in-headers, + google-readability-namespace-comments, + google-runtime-operator, + misc-*, + -misc-no-recursion, + -misc-non-private-member-variables-in-classes, + -misc-redundant-expression, + -misc-unconventional-assign-operator, + -misc-unused-parameters, + modernize-avoid-bind, + modernize-concat-nested-namespaces, + modernize-deprecated-ios-base-aliases, + modernize-make-shared, + modernize-replace-auto-ptr, + modernize-replace-disallow-copy-and-assign-macro, + modernize-replace-random-shuffle, + modernize-shrink-to-fit, + modernize-unary-static-assert, + modernize-use-bool-literals, + modernize-use-nodiscard, + modernize-use-noexcept, + modernize-use-transparent-functors, + modernize-use-uncaught-exceptions, + performance-faster-string-find, + performance-implicit-conversion-in-loop, + performance-inefficient-algorithm, + performance-move-const-arg, + performance-move-constructor-init, + performance-trivially-destructible, + performance-type-promotion-in-math-fn, + performance-unnecessary-copy-initialization, + readability-avoid-const-params-in-decls, + readability-container-contains, + readability-delete-null-pointer, + readability-duplicate-include, + readability-identifier-naming, + readability-misleading-indentation, + readability-misplaced-array-index, + readability-redundant-access-specifiers, + readability-redundant-control-flow, + readability-redundant-function-ptr-dereference, + readability-redundant-preprocessor, + readability-redundant-smartptr-get, + readability-redundant-string-cstr, + readability-simplify-boolean-expr, + readability-simplify-subscript-expr, + readability-static-definition-in-anonymous-namespace, + readability-string-compare, + readability-uniqueptr-delete-release +CheckOptions: +- key: bugprone-reserved-identifier.AllowedIdentifiers + value: > + _; + __assert_fail; + __bswap_constant_16; + __bswap_constant_32; + __bswap_constant_64 +- key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison + value: true +- key: bugprone-suspicious-string-compare.StringCompareLikeFunctions + value: crypto_memcmp +WarningsAsErrors: '*' +FormatStyle: file diff --git a/libwvdrmengine/cdm/core/include/cdm_engine.h b/libwvdrmengine/cdm/core/include/cdm_engine.h index dc7a9db9..c8bbe7ad 100644 --- a/libwvdrmengine/cdm/core/include/cdm_engine.h +++ b/libwvdrmengine/cdm/core/include/cdm_engine.h @@ -88,7 +88,7 @@ class CdmEngine { // request to. virtual CdmResponseType GenerateKeyRequest( const CdmSessionId& session_id, const CdmKeySetId& key_set_id, - const InitializationData& init_data, const CdmLicenseType license_type, + const InitializationData& init_data, CdmLicenseType license_type, CdmAppParameterMap& app_parameters, CdmKeyRequest* key_request); // This API may // (a) accept license response, extract key info and load keys. diff --git a/libwvdrmengine/cdm/core/include/cdm_usage_table.h b/libwvdrmengine/cdm/core/include/cdm_usage_table.h index 5c9c874c..07cc3a3f 100644 --- a/libwvdrmengine/cdm/core/include/cdm_usage_table.h +++ b/libwvdrmengine/cdm/core/include/cdm_usage_table.h @@ -157,24 +157,24 @@ class CdmUsageTable { // will be deleted. // Threading: Method takes exclusive use of |lock_| // when required. - bool CreateNewTable(CryptoSession* const crypto_session); + bool CreateNewTable(CryptoSession* crypto_session); // Attempts to restore the usage table from persistent storage, and // loads the usage table header into OEMCrypto. // Note: No other OEMCrypto session should be opened before calling. // Threading: Method takes exclusive use of |lock_| // when required. - bool RestoreTable(CryptoSession* const crypto_session); + bool RestoreTable(CryptoSession* crypto_session); // Performs a check that there are no open OEMCrypto sessions for // the current security level of the usage table. // Threading: No special threading requirements. - bool OpenSessionCheck(CryptoSession* const crypto_session); + bool OpenSessionCheck(CryptoSession* crypto_session); // Performs a check that the OEMCrypto table can support at least // one more entry if the table is at or near the reported capacity. // If this check fails, a new usage table SHOULD be created. // Threading: Method requires caller to take exclusive use of // |lock_|. - bool CapacityCheck(CryptoSession* const crypto_session); + bool CapacityCheck(CryptoSession* crypto_session); // Attempts to determine the capacity of the OEMCrypto usage table. // Sets the result to |potential_table_capacity_|. @@ -189,7 +189,7 @@ class CdmUsageTable { // Creates a new entry for the provided crypto session. If the // entry is created successfully in OEMCrypto, then a new entry // info is added to the table's vector of entry info. - CdmResponseType CreateEntry(CryptoSession* const crypto_session, + CdmResponseType CreateEntry(CryptoSession* crypto_session, UsageEntryIndex* entry_index); // Attempts to relocate a newly created usage entry associated with @@ -198,27 +198,27 @@ class CdmUsageTable { // |entry_index| is treated as both an input and output. // Returns NO_ERROR so long as no internal operation fails, // regardless of whether the entry was moved or not. - CdmResponseType RelocateNewEntry(CryptoSession* const crypto_session, + CdmResponseType RelocateNewEntry(CryptoSession* crypto_session, UsageEntryIndex* entry_index); // Checks if the specified |entry_index| is known to be // unoccupied (released). - bool IsEntryUnoccupied(const UsageEntryIndex entry_index) const; + bool IsEntryUnoccupied(UsageEntryIndex entry_index) const; // SetOfflineEntryInfo() and SetUsageInfoEntryInfo() populate the // entry meta-data with the required information based on the type // of entry. - void SetOfflineEntryInfo(const UsageEntryIndex entry_index, + void SetOfflineEntryInfo(UsageEntryIndex entry_index, const std::string& key_set_id, const CdmKeyResponse& license_message); - void SetUsageInfoEntryInfo(const UsageEntryIndex entry_index, + void SetUsageInfoEntryInfo(UsageEntryIndex entry_index, const std::string& key_set_id, const std::string& usage_info_file_name); // Shrinks the table, removing all trailing unoccupied entries. // |entry_info_list_| will be resized appropriately. // Caller must store the table after a successful call. - CdmResponseType RefitTable(CryptoSession* const crypto_session); + CdmResponseType RefitTable(CryptoSession* crypto_session); virtual CdmResponseType InvalidateEntryInternal( UsageEntryIndex entry_index, bool defrag_table, DeviceFiles* device_files, diff --git a/libwvdrmengine/cdm/core/include/device_files.h b/libwvdrmengine/cdm/core/include/device_files.h index de2e81f7..e2125bea 100644 --- a/libwvdrmengine/cdm/core/include/device_files.h +++ b/libwvdrmengine/cdm/core/include/device_files.h @@ -275,7 +275,7 @@ class DeviceFiles { const CdmUsageData& usage_data); virtual bool StoreHlsAttributes(const std::string& key_set_id, - const CdmHlsMethod method, + CdmHlsMethod method, const std::vector& media_segment_iv); virtual bool RetrieveHlsAttributes(const std::string& key_set_id, CdmHlsMethod* method, diff --git a/libwvdrmengine/cdm/core/include/license_key_status.h b/libwvdrmengine/cdm/core/include/license_key_status.h index db9bd644..6bb6e0a5 100644 --- a/libwvdrmengine/cdm/core/include/license_key_status.h +++ b/libwvdrmengine/cdm/core/include/license_key_status.h @@ -143,7 +143,7 @@ class LicenseKeyStatus { using ConstraintList = ::google::protobuf::RepeatedPtrField; - LicenseKeyStatus(const KeyContainer& key, const CdmSecurityLevel level); + LicenseKeyStatus(const KeyContainer& key, CdmSecurityLevel level); virtual ~LicenseKeyStatus() {} diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index 3d9fde2d..55a586b3 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -521,13 +521,11 @@ class CdmResponseType { const char* crypto_session_method_ = nullptr; }; -static inline bool operator==(const CdmResponseEnum lhs, - const CdmResponseType& rhs) { +inline bool operator==(const CdmResponseEnum lhs, const CdmResponseType& rhs) { return lhs == rhs.code(); } -static inline bool operator!=(const CdmResponseEnum lhs, - const CdmResponseType& rhs) { +inline bool operator!=(const CdmResponseEnum lhs, const CdmResponseType& rhs) { return lhs != rhs.code(); } @@ -708,17 +706,14 @@ class CdmKeyAllowedUsage { } bool Equals(const CdmKeyAllowedUsage& other) { - if (!valid_ || !other.Valid() || - decrypt_to_clear_buffer != other.decrypt_to_clear_buffer || - decrypt_to_secure_buffer != other.decrypt_to_secure_buffer || - generic_encrypt != other.generic_encrypt || - generic_decrypt != other.generic_decrypt || - generic_sign != other.generic_sign || - generic_verify != other.generic_verify || - key_security_level_ != other.key_security_level_) { - return false; - } - return true; + return valid_ && other.Valid() && + decrypt_to_clear_buffer == other.decrypt_to_clear_buffer && + decrypt_to_secure_buffer == other.decrypt_to_secure_buffer && + generic_encrypt == other.generic_encrypt && + generic_decrypt == other.generic_decrypt && + generic_sign == other.generic_sign && + generic_verify == other.generic_verify && + key_security_level_ == other.key_security_level_; } bool decrypt_to_clear_buffer; diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 6c10ad31..783c0416 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -1249,7 +1249,7 @@ CdmResponseType CdmSession::LoadPrivateKey( DrmKeyTypeToMetricValue(private_key.type())); drm_certificate_ = drm_certificate; - wrapped_private_key_ = std::move(private_key); + wrapped_private_key_ = private_key; return CdmResponseType(NO_ERROR); case SESSION_LOST_STATE_ERROR: case SYSTEM_INVALIDATED_ERROR: diff --git a/libwvdrmengine/cdm/core/src/cdm_usage_table.cpp b/libwvdrmengine/cdm/core/src/cdm_usage_table.cpp index b3e65827..f2dbe368 100644 --- a/libwvdrmengine/cdm/core/src/cdm_usage_table.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_usage_table.cpp @@ -317,8 +317,6 @@ CdmResponseType CdmUsageTable::LoadEntry(CryptoSession* crypto_session, return CdmResponseType(USAGE_INVALID_LOAD_ENTRY); } } - metrics::CryptoMetrics* metrics = crypto_session->GetCryptoMetrics(); - if (metrics == nullptr) metrics = &alternate_crypto_metrics_; const CdmResponseType status = crypto_session->LoadUsageEntry(entry_index, entry); @@ -590,14 +588,11 @@ CdmResponseType CdmUsageTable::RelocateNewEntry( } bool CdmUsageTable::IsEntryUnoccupied(const UsageEntryIndex entry_index) const { - if (entry_info_list_[entry_index].storage_type != kStorageTypeUnknown) { - return false; - } // TODO(sigquit): Check that entry is not in use by another session. // NOTE: The |storage_type| check will protect the integrity of the // entry. Attempting to use an entry index that is used by another // session is recoverable and will not affect any opened sessions. - return true; + return entry_info_list_[entry_index].storage_type == kStorageTypeUnknown; } void CdmUsageTable::SetOfflineEntryInfo(const UsageEntryIndex entry_index, diff --git a/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp b/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp index 304c41ff..44f40bc7 100644 --- a/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp +++ b/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp @@ -89,7 +89,6 @@ bool RetrieveOemCertificateAndLoadPrivateKey(CryptoSession& crypto_session, } // namespace // Protobuf generated classes. using video_widevine::DrmCertificate; -using video_widevine::EncryptedClientIdentification; using video_widevine::HashAlgorithmProto; using video_widevine::ProvisioningOptions; using video_widevine::ProvisioningRequest; diff --git a/libwvdrmengine/cdm/core/src/client_identification.cpp b/libwvdrmengine/cdm/core/src/client_identification.cpp index b3f74b56..08f252d9 100644 --- a/libwvdrmengine/cdm/core/src/client_identification.cpp +++ b/libwvdrmengine/cdm/core/src/client_identification.cpp @@ -62,11 +62,6 @@ using ClientCapabilities = video_widevine::ClientIdentification::ClientCapabilities; using AnalogOutputCapabilities = ClientCapabilities::AnalogOutputCapabilities; using video_widevine::ClientIdentification_NameValue; -using video_widevine::EncryptedClientIdentification; -using video_widevine::ProvisioningOptions; -using video_widevine::ProvisioningRequest; -using video_widevine::ProvisioningResponse; -using video_widevine::SignedProvisioningMessage; CdmResponseType ClientIdentification::InitForProvisioningRequest( const std::string& client_token, CryptoSession* crypto_session) { diff --git a/libwvdrmengine/cdm/core/src/device_files.cpp b/libwvdrmengine/cdm/core/src/device_files.cpp index 4bbb786e..c3ca252a 100644 --- a/libwvdrmengine/cdm/core/src/device_files.cpp +++ b/libwvdrmengine/cdm/core/src/device_files.cpp @@ -693,9 +693,7 @@ bool DeviceFiles::RetrieveLegacyCertificate(std::string* certificate, const CertificateState state = RetrieveCertificate( kCertificateLegacy, certificate, private_key, serial_number, system_id); - if (state == kCertificateValid || state == kCertificateExpired) return true; - - return false; + return state == kCertificateValid || state == kCertificateExpired; } bool DeviceFiles::HasCertificate(bool atsc_mode_enabled) { diff --git a/libwvdrmengine/cdm/core/src/initialization_data.cpp b/libwvdrmengine/cdm/core/src/initialization_data.cpp index e819aef7..373e5a96 100644 --- a/libwvdrmengine/cdm/core/src/initialization_data.cpp +++ b/libwvdrmengine/cdm/core/src/initialization_data.cpp @@ -43,11 +43,8 @@ namespace wvcdm { // Protobuf generated classes. using video_widevine::WidevinePsshData; -using video_widevine::WidevinePsshData_Algorithm; using video_widevine::WidevinePsshData_Algorithm_AESCTR; -using video_widevine::WidevinePsshData_Type; using video_widevine::WidevinePsshData_Type_ENTITLED_KEY; -using video_widevine::WidevinePsshData_Type_SINGLE; InitializationData::InitializationData(const std::string& type, const CdmInitData& data, @@ -376,7 +373,7 @@ bool InitializationData::ExtractHlsAttributes(const std::string& attribute_list, std::vector versions = ExtractKeyFormatVersions(value); bool supported = false; for (size_t i = 0; i < versions.size(); ++i) { - if (versions[i].compare(HLS_KEYFORMAT_VERSION_VALUE_1) == 0) { + if (versions[i] == HLS_KEYFORMAT_VERSION_VALUE_1) { supported = true; break; } @@ -393,11 +390,11 @@ bool InitializationData::ExtractHlsAttributes(const std::string& attribute_list, return false; } - if (value.compare(HLS_METHOD_AES_128) == 0) { + if (value == HLS_METHOD_AES_128) { *method = kHlsMethodAes128; - } else if (value.compare(HLS_METHOD_SAMPLE_AES) == 0) { + } else if (value == HLS_METHOD_SAMPLE_AES) { *method = kHlsMethodSampleAes; - } else if (value.compare(HLS_METHOD_NONE) == 0) { + } else if (value == HLS_METHOD_NONE) { *method = kHlsMethodNone; } else { LOGV("HLS method unrecognized: value = %s", value.c_str()); @@ -734,7 +731,8 @@ void InitializationData::DumpToLogs() const { } for (int i = 0; i < pssh.entitled_keys_size(); i++) { - video_widevine::WidevinePsshData_EntitledKey key = pssh.entitled_keys(i); + const video_widevine::WidevinePsshData_EntitledKey& key = + pssh.entitled_keys(i); LOGD("InitData: entitlement_key_id %d: %s -> %s", i, wvutil::b2a_hex(key.entitlement_key_id()).c_str(), wvutil::b2a_hex(key.key_id()).c_str()); diff --git a/libwvdrmengine/cdm/core/src/license_key_status.cpp b/libwvdrmengine/cdm/core/src/license_key_status.cpp index 7326be0d..cbe69191 100644 --- a/libwvdrmengine/cdm/core/src/license_key_status.cpp +++ b/libwvdrmengine/cdm/core/src/license_key_status.cpp @@ -323,7 +323,7 @@ void LicenseKeyStatus::ParseContentKey(const KeyContainer& key, void LicenseKeyStatus::ParseOperatorSessionKey(const KeyContainer& key) { is_content_key_ = false; if (key.has_operator_session_key_permissions()) { - OperatorSessionKeyPermissions permissions = + const OperatorSessionKeyPermissions& permissions = key.operator_session_key_permissions(); if (permissions.has_allow_encrypt()) allowed_usage_.generic_encrypt = permissions.allow_encrypt(); diff --git a/libwvdrmengine/cdm/core/src/policy_timers.cpp b/libwvdrmengine/cdm/core/src/policy_timers.cpp index 6a17f810..d03dc8b5 100644 --- a/libwvdrmengine/cdm/core/src/policy_timers.cpp +++ b/libwvdrmengine/cdm/core/src/policy_timers.cpp @@ -10,8 +10,6 @@ #include "log.h" -using video_widevine::License; - namespace wvcdm { void PolicyTimers::SetLicense(const video_widevine::License& license) { @@ -68,7 +66,7 @@ bool PolicyTimers::GetSecondsSinceStarted(int64_t current_time, if (playback_start_time_ == 0) return false; *seconds_since_started = current_time - playback_start_time_; - return (*seconds_since_started >= 0) ? true : false; + return *seconds_since_started >= 0; } bool PolicyTimers::GetSecondsSinceLastPlayed( @@ -81,7 +79,7 @@ bool PolicyTimers::GetSecondsSinceLastPlayed( if (last_playback_time_ == 0) return false; *seconds_since_last_played = current_time - last_playback_time_; - return (*seconds_since_last_played >= 0) ? true : false; + return *seconds_since_last_played >= 0; } bool PolicyTimers::IsLicenseForFuture(int64_t current_time) { diff --git a/libwvdrmengine/cdm/core/src/policy_timers_v16.cpp b/libwvdrmengine/cdm/core/src/policy_timers_v16.cpp index 60f663f0..30e71b84 100644 --- a/libwvdrmengine/cdm/core/src/policy_timers_v16.cpp +++ b/libwvdrmengine/cdm/core/src/policy_timers_v16.cpp @@ -28,11 +28,8 @@ bool PolicyTimersV16::UpdateLicense(int64_t current_time, next_renewal_time_ = license.license_start_time() + policy_.renewal_delay_seconds(); - if (!policy_.can_play() || - HasLicenseOrRentalOrPlaybackDurationExpired(current_time)) - return false; - - return true; + return policy_.can_play() && + !HasLicenseOrRentalOrPlaybackDurationExpired(current_time); } void PolicyTimersV16::BeginDecryption(int64_t current_time) { diff --git a/libwvdrmengine/cdm/core/src/policy_timers_v18.cpp b/libwvdrmengine/cdm/core/src/policy_timers_v18.cpp index e112faf2..ad46cf80 100644 --- a/libwvdrmengine/cdm/core/src/policy_timers_v18.cpp +++ b/libwvdrmengine/cdm/core/src/policy_timers_v18.cpp @@ -65,11 +65,8 @@ bool PolicyTimersV18::UpdateLicense(int64_t current_time, license_renewal_ = true; } - if (!policy_.can_play() || - HasLicenseOrRentalOrPlaybackDurationExpired(current_time)) - return false; - - return true; + return policy_.can_play() && + !HasLicenseOrRentalOrPlaybackDurationExpired(current_time); } void PolicyTimersV18::BeginDecryption(int64_t current_time) { diff --git a/libwvdrmengine/cdm/core/src/service_certificate.cpp b/libwvdrmengine/cdm/core/src/service_certificate.cpp index 09ab4939..c89648a1 100644 --- a/libwvdrmengine/cdm/core/src/service_certificate.cpp +++ b/libwvdrmengine/cdm/core/src/service_certificate.cpp @@ -19,7 +19,7 @@ namespace { // as the root of a signing chain. // clang-format off -static const unsigned char kRootCertForProd[] = { +const unsigned char kRootCertForProd[] = { 0x0a, 0x9c, 0x03, 0x08, 0x00, 0x12, 0x01, 0x00, 0x18, 0xdd, 0x94, 0x88, 0x8b, 0x05, 0x22, 0x8e, 0x03, 0x30, 0x82, 0x01, 0x8a, 0x02, 0x82, 0x01, diff --git a/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp b/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp index b254e871..b325578d 100644 --- a/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp @@ -20,7 +20,6 @@ #include "wv_metrics.pb.h" using ::testing::_; -using ::testing::ByRef; using ::testing::Eq; using ::testing::Matcher; using ::testing::Return; diff --git a/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp b/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp index 8f266bed..9ab7598b 100644 --- a/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp @@ -34,7 +34,6 @@ namespace wvcdm { using drm_metrics::DistributionMetric; using drm_metrics::WvCdmMetrics; -using metrics::EngineMetrics; namespace { @@ -153,7 +152,7 @@ class WvCdmEngineTest : public WvCdmEnginePreProvTest { WvCdmEngineTest() {} void SetUp() override { - WvCdmTestBase::SetUp(); + WvCdmEnginePreProvTest::SetUp(); session_opened_ = false; WvCdmEnginePreProvTest::OpenSession(); } @@ -275,12 +274,12 @@ class WvCdmEngineTest : public WvCdmEnginePreProvTest { engine_metrics.Serialize(&metrics_proto); bool has_request_type = false; for (int i = 0; i < metrics_proto.session_metrics_size(); i++) { - WvCdmMetrics::SessionMetrics session_metrics = + const WvCdmMetrics::SessionMetrics& session_metrics = metrics_proto.session_metrics(i); for (int j = 0; j < session_metrics.cdm_session_license_request_latency_ms_size(); j++) { - DistributionMetric latency_distribution = + const DistributionMetric& latency_distribution = session_metrics.cdm_session_license_request_latency_ms(j); if (latency_distribution.attributes().key_request_type() == key_request_type && @@ -362,7 +361,7 @@ TEST_F(WvCdmEngineTest, BaseIsoBmffMessageTest) { TEST_F(WvCdmEngineTest, DISABLED_BaseWebmMessageTest) { // Extract the key ID from the PSSH box. InitializationData extractor(CENC_INIT_DATA_FORMAT, binary_key_id()); - KeyId key_id_unwrapped = extractor.data(); + const KeyId& key_id_unwrapped = extractor.data(); GenerateKeyRequest(key_id_unwrapped, kWebmMimeType); GetKeyRequestResponse(config_.license_server(), config_.client_auth()); } @@ -383,7 +382,7 @@ TEST_F(WvCdmEngineTest, ReturnsLicenseTypeDetailStreaming) { TEST_F(WvCdmEngineTest, DISABLED_NormalDecryptionWebm) { // Extract the key ID from the PSSH box. InitializationData extractor(CENC_INIT_DATA_FORMAT, binary_key_id()); - KeyId key_id_unwrapped = extractor.data(); + const KeyId& key_id_unwrapped = extractor.data(); GenerateKeyRequest(key_id_unwrapped, kWebmMimeType); VerifyNewKeyResponse(config_.license_server(), config_.client_auth()); } diff --git a/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp b/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp index 40e84c62..0e553f53 100644 --- a/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp @@ -30,7 +30,6 @@ using ::testing::NotNull; using ::testing::Return; using ::testing::Sequence; using ::testing::SetArgPointee; -using ::testing::StrEq; namespace wvcdm { @@ -216,7 +215,7 @@ class CdmSessionTest : public WvCdmTestBase { protected: void SetUp() override { WvCdmTestBase::SetUp(); - metrics_.reset(new metrics::SessionMetrics); + metrics_ = std::make_shared(); cdm_session_.reset(new CdmSession(nullptr, metrics_)); // Inject testing mocks. license_parser_ = new MockCdmLicense(cdm_session_->session_id()); diff --git a/libwvdrmengine/cdm/core/test/cdm_usage_table_unittest.cpp b/libwvdrmengine/cdm/core/test/cdm_usage_table_unittest.cpp index 369e2493..5d602796 100644 --- a/libwvdrmengine/cdm/core/test/cdm_usage_table_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_usage_table_unittest.cpp @@ -23,24 +23,16 @@ // gmock methods using ::testing::_; -using ::testing::AllOf; -using ::testing::AtMost; using ::testing::ContainerEq; using ::testing::Contains; using ::testing::DoAll; using ::testing::ElementsAre; -using ::testing::ElementsAreArray; -using ::testing::Ge; using ::testing::Invoke; -using ::testing::InvokeWithoutArgs; -using ::testing::Lt; using ::testing::NotNull; using ::testing::Return; using ::testing::SaveArg; using ::testing::SetArgPointee; using ::testing::SizeIs; -using ::testing::StrEq; -using ::testing::UnorderedElementsAre; using ::testing::UnorderedElementsAreArray; namespace wvcdm { @@ -561,9 +553,7 @@ class CdmUsageTableTest : public WvCdmTestBase { return mock_usage_table; } - void TearDown() override { - if (usage_table_ != nullptr) delete usage_table_; - } + void TearDown() override { delete usage_table_; } void Init(CdmSecurityLevel security_level, const UsageTableHeader& table_header, @@ -3703,7 +3693,7 @@ TEST_F(CdmUsageTableTest, LruUsageTableUpgrade_NoAction) { RetrieveUsageTableInfo(NotNull(), NotNull(), NotNull())) .WillOnce(DoAll(SetArgPointee<0>(kUpgradableUsageTableHeader), SetArgPointee<1>(kUpgradableUsageEntryInfoList), - SetArgPointee<2>(/* lru_upgrade = */ false), + SetArgPointee<2>(false), // lru_upgrade Return(true))); EXPECT_CALL(*crypto_session_, LoadUsageTableHeader(kLevelDefault, kUpgradableUsageTableHeader)) @@ -3733,7 +3723,7 @@ TEST_F(CdmUsageTableTest, LruUsageTableUpgrade_Succeed) { RetrieveUsageTableInfo(NotNull(), NotNull(), NotNull())) .WillOnce(DoAll(SetArgPointee<0>(kUpgradableUsageTableHeader), SetArgPointee<1>(kUpgradableUsageEntryInfoList), - SetArgPointee<2>(/* lru_upgrade = */ true), + SetArgPointee<2>(true), // lru_upgrade Return(true))); EXPECT_CALL(*crypto_session_, LoadUsageTableHeader(kLevelDefault, kUpgradableUsageTableHeader)) @@ -3802,7 +3792,7 @@ TEST_F(CdmUsageTableTest, RetrieveUsageTableInfo(NotNull(), NotNull(), NotNull())) .WillOnce(DoAll(SetArgPointee<0>(kUpgradableUsageTableHeader), SetArgPointee<1>(upgradable_usage_entry_info_list), - SetArgPointee<2>(/* lru_upgrade = */ true), + SetArgPointee<2>(true), // lru_upgrade Return(true))); EXPECT_CALL(*crypto_session_, LoadUsageTableHeader(kLevelDefault, kUpgradableUsageTableHeader)) @@ -3865,7 +3855,7 @@ TEST_F(CdmUsageTableTest, RetrieveUsageTableInfo(NotNull(), NotNull(), NotNull())) .WillOnce(DoAll(SetArgPointee<0>(kUpgradableUsageTableHeader), SetArgPointee<1>(kUpgradableUsageEntryInfoList), - SetArgPointee<2>(/* lru_upgrade = */ true), + SetArgPointee<2>(true), // lru_upgrade Return(true))); EXPECT_CALL(*crypto_session_, LoadUsageTableHeader(kLevelDefault, kUpgradableUsageTableHeader)) @@ -3923,7 +3913,7 @@ TEST_F(CdmUsageTableTest, LruUsageTableUpgrade_AllFailure) { RetrieveUsageTableInfo(NotNull(), NotNull(), NotNull())) .WillOnce(DoAll(SetArgPointee<0>(kUpgradableUsageTableHeader), SetArgPointee<1>(kUpgradableUsageEntryInfoList), - SetArgPointee<2>(/* lru_upgrade = */ true), + SetArgPointee<2>(true), // lru_upgrade Return(true))); EXPECT_CALL(*crypto_session_, LoadUsageTableHeader(kLevelDefault, kUpgradableUsageTableHeader)) diff --git a/libwvdrmengine/cdm/core/test/certificate_provisioning_unittest.cpp b/libwvdrmengine/cdm/core/test/certificate_provisioning_unittest.cpp index ce9173ab..9f80b2be 100644 --- a/libwvdrmengine/cdm/core/test/certificate_provisioning_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/certificate_provisioning_unittest.cpp @@ -87,9 +87,6 @@ class TestStubCryptoSessionFactory : public CryptoSessionFactory { } }; -// gmock methods -using ::testing::_; - class CertificateProvisioningTest : public WvCdmTestBase { protected: void SetUp() override { diff --git a/libwvdrmengine/cdm/core/test/device_files_unittest.cpp b/libwvdrmengine/cdm/core/test/device_files_unittest.cpp index 47cbc8c6..1e0f811a 100644 --- a/libwvdrmengine/cdm/core/test/device_files_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/device_files_unittest.cpp @@ -29,7 +29,6 @@ using wvutil::ArraySize; using wvutil::b2a_hex; using wvutil::CdmRandom; using wvutil::File; -using wvutil::FileSystem; const uint32_t kCertificateLen = 700; const uint32_t kWrappedKeyLen = 500; @@ -4444,17 +4443,12 @@ class MockFileSystem : public wvutil::FileSystem { // gmock methods using ::testing::_; using ::testing::AllArgs; -using ::testing::AllOf; using ::testing::AtLeast; using ::testing::ByMove; using ::testing::DoAll; using ::testing::Eq; using ::testing::Expectation; -using ::testing::Gt; -using ::testing::HasSubstr; -using ::testing::InSequence; using ::testing::Invoke; -using ::testing::InvokeWithoutArgs; using ::testing::NotNull; using ::testing::Return; using ::testing::ReturnArg; diff --git a/libwvdrmengine/cdm/core/test/fake_provisioning_server.cpp b/libwvdrmengine/cdm/core/test/fake_provisioning_server.cpp index 9b0b182b..359307e3 100644 --- a/libwvdrmengine/cdm/core/test/fake_provisioning_server.cpp +++ b/libwvdrmengine/cdm/core/test/fake_provisioning_server.cpp @@ -324,7 +324,7 @@ bool FakeProvisioningServer::MakeResponse( if (signed_request.has_oemcrypto_core_message()) { // If the request has a core message, then the response should also have a // core message. - std::string core_request = signed_request.oemcrypto_core_message(); + const std::string& core_request = signed_request.oemcrypto_core_message(); oemcrypto_core_message::ODK_ProvisioningRequest core_request_data; if (!oemcrypto_core_message::deserialize:: CoreProvisioningRequestFromMessage(core_request, diff --git a/libwvdrmengine/cdm/core/test/http_socket.cpp b/libwvdrmengine/cdm/core/test/http_socket.cpp index 9760a65e..51d0436d 100644 --- a/libwvdrmengine/cdm/core/test/http_socket.cpp +++ b/libwvdrmengine/cdm/core/test/http_socket.cpp @@ -67,8 +67,8 @@ SSL_CTX* InitSslContext() { return ctx; } -static int LogBoringSslError(const char* message, size_t /* length */, - void* /* user_data */) { +int LogBoringSslError(const char* message, size_t /* length */, + void* /* user_data */) { LOGE(" BoringSSL Error: %s", message); return 1; } diff --git a/libwvdrmengine/cdm/core/test/initialization_data_unittest.cpp b/libwvdrmengine/cdm/core/test/initialization_data_unittest.cpp index 86cfe36d..57d2265f 100644 --- a/libwvdrmengine/cdm/core/test/initialization_data_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/initialization_data_unittest.cpp @@ -24,9 +24,6 @@ using video_widevine::WidevinePsshData; namespace { -// Import names from ::testing for convenience -using ::testing::_; - // Constants for JSON formatting const std::string kLeftBrace = "{"; const std::string kRightBrace = "}"; @@ -807,12 +804,12 @@ TEST_P(HlsParseTest, Parse) { if (param.success_) { EXPECT_TRUE(init_data.is_hls()); EXPECT_FALSE(init_data.IsEmpty()); - if (param.key_.compare(HLS_METHOD_ATTRIBUTE) == 0) { - if (param.value_.compare(HLS_METHOD_SAMPLE_AES) == 0) { + if (param.key_ == HLS_METHOD_ATTRIBUTE) { + if (param.value_ == HLS_METHOD_SAMPLE_AES) { EXPECT_EQ(kHlsMethodSampleAes, init_data.hls_method()); - } else if (param.value_.compare(HLS_METHOD_AES_128) == 0) { + } else if (param.value_ == HLS_METHOD_AES_128) { EXPECT_EQ(kHlsMethodAes128, init_data.hls_method()); - } else if (param.value_.compare(HLS_METHOD_NONE) == 0) { + } else if (param.value_ == HLS_METHOD_NONE) { EXPECT_EQ(kHlsMethodNone, init_data.hls_method()); } } else { @@ -825,11 +822,11 @@ TEST_P(HlsParseTest, Parse) { CORE_UTIL_IGNORE_DEPRECATED EXPECT_EQ(video_widevine::WidevinePsshData_Algorithm_AESCTR, cenc_header.algorithm()); - if (param.key_.compare(kJsonProvider) == 0) { + if (param.key_ == kJsonProvider) { EXPECT_EQ(param.value_, cenc_header.provider()); - } else if (param.key_.compare(kJsonContentId) == 0) { + } else if (param.key_ == kJsonContentId) { EXPECT_EQ(param.value_, cenc_header.content_id()); - } else if (param.key_.compare(kJsonKeyIds) == 0) { + } else if (param.key_ == kJsonKeyIds) { EXPECT_EQ(param.value_, wvutil::b2a_hex(cenc_header.key_ids(0))); } CORE_UTIL_RESTORE_WARNINGS diff --git a/libwvdrmengine/cdm/core/test/license_holder.cpp b/libwvdrmengine/cdm/core/test/license_holder.cpp index 317dfdd6..873fe0f9 100644 --- a/libwvdrmengine/cdm/core/test/license_holder.cpp +++ b/libwvdrmengine/cdm/core/test/license_holder.cpp @@ -204,7 +204,7 @@ std::string LicenseHolder::MakeUrl(const std::string& server_url, } // If there is already a parameter, then we don't need to add another // question mark. - return path + ((path.find("?") == std::string::npos) ? "?" : "&") + + return path + ((path.find('?') == std::string::npos) ? '?' : '&') + video_query; } else { return path; diff --git a/libwvdrmengine/cdm/core/test/license_keys_unittest.cpp b/libwvdrmengine/cdm/core/test/license_keys_unittest.cpp index 8a8f7b91..1dc7991a 100644 --- a/libwvdrmengine/cdm/core/test/license_keys_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/license_keys_unittest.cpp @@ -12,59 +12,58 @@ namespace wvcdm { namespace { -static const uint32_t dev_lo_res = 200; -static const uint32_t dev_hi_res = 400; -static const uint32_t dev_top_res = 800; +const uint32_t dev_lo_res = 200; +const uint32_t dev_hi_res = 400; +const uint32_t dev_top_res = 800; -static const uint32_t key_lo_res_min = 151; -static const uint32_t key_lo_res_max = 300; -static const uint32_t key_hi_res_min = 301; -static const uint32_t key_hi_res_max = 450; -static const uint32_t key_top_res_min = 451; -static const uint32_t key_top_res_max = 650; +const uint32_t key_lo_res_min = 151; +const uint32_t key_lo_res_max = 300; +const uint32_t key_hi_res_min = 301; +const uint32_t key_hi_res_max = 450; +const uint32_t key_top_res_min = 451; +const uint32_t key_top_res_max = 650; // Content Keys -static const KeyId ck_sw_crypto = "c_key_SW_SECURE_CRYPTO"; -static const KeyId ck_sw_decode = "c_key_SW_SECURE_DECODE"; -static const KeyId ck_hw_crypto = "c_key_HW_SECURE_CRYPTO"; -static const KeyId ck_hw_decode = "c_key_HW_SECURE_DECODE"; -static const KeyId ck_hw_secure = "c_key_HW_SECURE_ALL"; +const KeyId ck_sw_crypto = "c_key_SW_SECURE_CRYPTO"; +const KeyId ck_sw_decode = "c_key_SW_SECURE_DECODE"; +const KeyId ck_hw_crypto = "c_key_HW_SECURE_CRYPTO"; +const KeyId ck_hw_decode = "c_key_HW_SECURE_DECODE"; +const KeyId ck_hw_secure = "c_key_HW_SECURE_ALL"; // Operator Session Keys -static const KeyId osk_decrypt = "os_key_generic_decrypt"; -static const KeyId osk_encrypt = "os_key_generic_encrypt"; -static const KeyId osk_sign = "os_key_generic_sign"; -static const KeyId osk_verify = "os_key_generic_verify"; -static const KeyId osk_encrypt_decrypt = "os_key_generic_encrypt_decrypt"; -static const KeyId osk_sign_verify = "os_key_generic_sign_verify"; -static const KeyId osk_all = "os_key_generic_all"; +const KeyId osk_decrypt = "os_key_generic_decrypt"; +const KeyId osk_encrypt = "os_key_generic_encrypt"; +const KeyId osk_sign = "os_key_generic_sign"; +const KeyId osk_verify = "os_key_generic_verify"; +const KeyId osk_encrypt_decrypt = "os_key_generic_encrypt_decrypt"; +const KeyId osk_sign_verify = "os_key_generic_sign_verify"; +const KeyId osk_all = "os_key_generic_all"; // HDCP test keys -static const KeyId ck_sw_crypto_NO_HDCP = "ck_sw_crypto_NO_HDCP"; -static const KeyId ck_hw_secure_NO_HDCP = "ck_hw_secure_NO_HDCP"; -static const KeyId ck_sw_crypto_HDCP_V2_1 = "ck_sw_crypto_HDCP_V2_1"; -static const KeyId ck_hw_secure_HDCP_V2_1 = "ck_hw_secure_HDCP_V2_1"; -static const KeyId ck_sw_crypto_HDCP_V2_2 = "ck_sw_crypto_HDCP_V2_2"; -static const KeyId ck_hw_secure_HDCP_V2_2 = "ck_hw_secure_HDCP_V2_2"; -static const KeyId ck_sw_crypto_HDCP_V2_3 = "ck_sw_crypto_HDCP_V2_3"; -static const KeyId ck_hw_secure_HDCP_V2_3 = "ck_hw_secure_HDCP_V2_3"; -static const KeyId ck_sw_crypto_HDCP_NO_OUTPUT = "ck_sw_crypto_HDCP_NO_OUT"; -static const KeyId ck_hw_secure_HDCP_NO_OUTPUT = "ck_hw_secure_HDCP_NO_OUT"; +const KeyId ck_sw_crypto_NO_HDCP = "ck_sw_crypto_NO_HDCP"; +const KeyId ck_hw_secure_NO_HDCP = "ck_hw_secure_NO_HDCP"; +const KeyId ck_sw_crypto_HDCP_V2_1 = "ck_sw_crypto_HDCP_V2_1"; +const KeyId ck_hw_secure_HDCP_V2_1 = "ck_hw_secure_HDCP_V2_1"; +const KeyId ck_sw_crypto_HDCP_V2_2 = "ck_sw_crypto_HDCP_V2_2"; +const KeyId ck_hw_secure_HDCP_V2_2 = "ck_hw_secure_HDCP_V2_2"; +const KeyId ck_sw_crypto_HDCP_V2_3 = "ck_sw_crypto_HDCP_V2_3"; +const KeyId ck_hw_secure_HDCP_V2_3 = "ck_hw_secure_HDCP_V2_3"; +const KeyId ck_sw_crypto_HDCP_NO_OUTPUT = "ck_sw_crypto_HDCP_NO_OUT"; +const KeyId ck_hw_secure_HDCP_NO_OUTPUT = "ck_hw_secure_HDCP_NO_OUT"; // Constraint test keys -static const KeyId ck_NO_HDCP_lo_res = "ck_NO_HDCP_lo_res"; -static const KeyId ck_HDCP_NO_OUTPUT_hi_res = "ck_HDCP_NO_OUTPUT_hi_res"; -static const KeyId ck_HDCP_V2_1_hi_res = "ck_HDCP_V2_1_hi_res"; -static const KeyId ck_HDCP_V2_2_max_res = "ck_HDCP_V2_2_max_res"; -static const KeyId ck_HDCP_V2_3_max_res = "ck_HDCP_V2_3_max_res"; -static const KeyId ck_NO_HDCP_dual_res = "ck_NO_HDCP_dual_res"; +const KeyId ck_NO_HDCP_lo_res = "ck_NO_HDCP_lo_res"; +const KeyId ck_HDCP_NO_OUTPUT_hi_res = "ck_HDCP_NO_OUTPUT_hi_res"; +const KeyId ck_HDCP_V2_1_hi_res = "ck_HDCP_V2_1_hi_res"; +const KeyId ck_HDCP_V2_2_max_res = "ck_HDCP_V2_2_max_res"; +const KeyId ck_HDCP_V2_3_max_res = "ck_HDCP_V2_3_max_res"; +const KeyId ck_NO_HDCP_dual_res = "ck_NO_HDCP_dual_res"; } // namespace // protobuf generated classes. using video_widevine::License; using video_widevine::LicenseIdentification; -using video_widevine::OFFLINE; using video_widevine::STREAMING; using KeyContainer = ::video_widevine::License::KeyContainer; diff --git a/libwvdrmengine/cdm/core/test/license_unittest.cpp b/libwvdrmengine/cdm/core/test/license_unittest.cpp index 87c3fb59..c45804a0 100644 --- a/libwvdrmengine/cdm/core/test/license_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/license_unittest.cpp @@ -190,7 +190,6 @@ using video_widevine::WidevinePsshData_EntitledKey; // gmock methods using ::testing::_; using ::testing::DoAll; -using ::testing::Eq; using ::testing::NotNull; using ::testing::PrintToStringParamName; using ::testing::Return; @@ -229,11 +228,11 @@ class CdmLicenseTest : public WvCdmTestBase { } void TearDown() override { - if (cdm_license_) delete cdm_license_; - if (policy_engine_) delete policy_engine_; - if (init_data_) delete init_data_; - if (crypto_session_) delete crypto_session_; - if (clock_) delete clock_; + delete cdm_license_; + delete policy_engine_; + delete init_data_; + delete crypto_session_; + delete clock_; } virtual void CreateCdmLicense() { diff --git a/libwvdrmengine/cdm/core/test/policy_engine_constraints_unittest.cpp b/libwvdrmengine/cdm/core/test/policy_engine_constraints_unittest.cpp index 73b9285b..1158148f 100644 --- a/libwvdrmengine/cdm/core/test/policy_engine_constraints_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/policy_engine_constraints_unittest.cpp @@ -18,7 +18,6 @@ #include "wv_cdm_types.h" // protobuf generated classes. -using video_widevine::License; using video_widevine::License_Policy; using video_widevine::STREAMING; @@ -131,7 +130,6 @@ class PolicyEngineConstraintsTest : public WvCdmTestBase { id->set_type(STREAMING); License_Policy* policy = license_.mutable_policy(); - policy = license_.mutable_policy(); policy->set_can_play(true); policy->set_can_persist(false); policy->set_rental_duration_seconds(kRentalDuration); diff --git a/libwvdrmengine/cdm/core/test/policy_engine_unittest.cpp b/libwvdrmengine/cdm/core/test/policy_engine_unittest.cpp index 5ec542cf..677502a4 100644 --- a/libwvdrmengine/cdm/core/test/policy_engine_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/policy_engine_unittest.cpp @@ -130,7 +130,6 @@ using video_widevine::STREAMING; // gmock methods using ::testing::_; -using ::testing::AtLeast; using ::testing::InSequence; using ::testing::Invoke; using ::testing::MockFunction; @@ -162,7 +161,6 @@ class PolicyEngineTest : public WvCdmTestBase { key->set_id(kKeyId); License_Policy* policy = license_.mutable_policy(); - policy = license_.mutable_policy(); policy->set_can_play(true); policy->set_can_persist(false); policy->set_can_renew(false); diff --git a/libwvdrmengine/cdm/core/test/test_base.cpp b/libwvdrmengine/cdm/core/test/test_base.cpp index 1c478342..e54a64dc 100644 --- a/libwvdrmengine/cdm/core/test/test_base.cpp +++ b/libwvdrmengine/cdm/core/test/test_base.cpp @@ -159,24 +159,22 @@ void WvCdmTestBase::StripeBuffer(std::vector* buffer, size_t size, std::string WvCdmTestBase::Aes128CbcEncrypt(std::vector key, const std::vector& clear, - const std::vector iv) { + std::vector iv) { std::vector encrypted(clear.size()); - std::vector iv_mod(iv.begin(), iv.end()); AES_KEY aes_key; AES_set_encrypt_key(&key[0], 128, &aes_key); - AES_cbc_encrypt(&clear[0], &encrypted[0], clear.size(), &aes_key, &iv_mod[0], + AES_cbc_encrypt(&clear[0], &encrypted[0], clear.size(), &aes_key, &iv[0], AES_ENCRYPT); return std::string(encrypted.begin(), encrypted.end()); } std::string WvCdmTestBase::Aes128CbcDecrypt(std::vector key, const std::vector& clear, - const std::vector iv) { + std::vector iv) { std::vector encrypted(clear.size()); - std::vector iv_mod(iv.begin(), iv.end()); AES_KEY aes_key; AES_set_decrypt_key(&key[0], 128, &aes_key); - AES_cbc_encrypt(&clear[0], &encrypted[0], clear.size(), &aes_key, &iv_mod[0], + AES_cbc_encrypt(&clear[0], &encrypted[0], clear.size(), &aes_key, &iv[0], AES_DECRYPT); return std::string(encrypted.begin(), encrypted.end()); } @@ -277,7 +275,7 @@ void WvCdmTestBase::SetUp() { CryptoSession::SetCryptoSessionFactory(factory); const char* const disable_test_keybox_flag = getenv("DISABLE_TEST_KEYBOX"); if (disable_test_keybox_flag != nullptr && - !strcmp(disable_test_keybox_flag, "yes")) { + strcmp(disable_test_keybox_flag, "yes") == 0) { factory->SetDisableTestKeybox(true); } // TODO(fredgc): Add a test version of DeviceFiles. @@ -320,7 +318,7 @@ void WvCdmTestBase::Provision() { const CdmCertificateType cert_type = kCertificateWidevine; std::unique_ptr file_system(CreateTestFileSystem()); TestCdmEngine cdm_engine(file_system.get(), - std::shared_ptr(new EngineMetrics)); + std::make_shared()); ProvisioningHolder provisioner(&cdm_engine, config_.provisioning_server(), config_.provisioning_service_certificate()); provisioner.Provision(cert_type, binary_provisioning_); @@ -333,7 +331,7 @@ void WvCdmTestBase::EnsureProvisioned() { // GenerateKeyRequest will actually load the wrapped private key. // Either may return a NEED_PROVISIONING error, so both have to be checked. TestCdmEngine cdm_engine(file_system.get(), - std::shared_ptr(new EngineMetrics)); + std::make_shared()); CdmResponseType status = cdm_engine.OpenSession(config_.key_system(), nullptr, nullptr, &session_id); CdmAppParameterMap app_parameters; diff --git a/libwvdrmengine/cdm/core/test/test_base.h b/libwvdrmengine/cdm/core/test/test_base.h index c8d48776..8c41dd64 100644 --- a/libwvdrmengine/cdm/core/test/test_base.h +++ b/libwvdrmengine/cdm/core/test/test_base.h @@ -56,11 +56,11 @@ class WvCdmTestBase : public ::testing::Test { // Helper method for doing cryptography. static std::string Aes128CbcEncrypt(std::vector key, const std::vector& clear, - const std::vector iv); + std::vector iv); // Helper method for doing cryptography. static std::string Aes128CbcDecrypt(std::vector key, const std::vector& clear, - const std::vector iv); + std::vector iv); // Helper method for doing cryptography. static std::string SignHMAC(const std::string& message, const std::vector& key); diff --git a/libwvdrmengine/cdm/core/test/url_request.cpp b/libwvdrmengine/cdm/core/test/url_request.cpp index dc81da8d..302816b6 100644 --- a/libwvdrmengine/cdm/core/test/url_request.cpp +++ b/libwvdrmengine/cdm/core/test/url_request.cpp @@ -171,7 +171,7 @@ bool UrlRequest::GetDebugHeaderFields( // cases of parsing provisioning/license/renewal responses. for (size_t key_pos = find_next(0); key_pos != std::string::npos; key_pos = find_next(key_pos)) { - const size_t end_key_pos = response.find(":", key_pos); + const size_t end_key_pos = response.find(':', key_pos); const size_t end_value_pos = response.find(kCrLf, key_pos); // Skip if the colon cannot be found. Technically possible to find // "X-Google" inside the value of a nother header field. diff --git a/libwvdrmengine/cdm/metrics/include/metrics_collections.h b/libwvdrmengine/cdm/metrics/include/metrics_collections.h index 5cdbf3e8..655d9b13 100644 --- a/libwvdrmengine/cdm/metrics/include/metrics_collections.h +++ b/libwvdrmengine/cdm/metrics/include/metrics_collections.h @@ -61,7 +61,6 @@ namespace wvcdm { namespace metrics { -namespace { // Short name definitions to ease AttributeHandler definitions. // Internal namespace to help simplify declarations. const int kErrorCodeFieldNumber = @@ -91,7 +90,6 @@ const int kLicenseTypeFieldNumber = ::drm_metrics::Attributes::kLicenseTypeFieldNumber; const int kOemCryptoSignatureHashAlgorithmFieldNumber = ::drm_metrics::Attributes::kOemCryptoSignatureHashAlgorithmFieldNumber; -} // namespace // The maximum number of completed sessions that can be stored. More than this // will cause some metrics to be discarded. diff --git a/libwvdrmengine/cdm/metrics/include/value_metric.h b/libwvdrmengine/cdm/metrics/include/value_metric.h index 315bbe4f..d7113575 100644 --- a/libwvdrmengine/cdm/metrics/include/value_metric.h +++ b/libwvdrmengine/cdm/metrics/include/value_metric.h @@ -39,8 +39,6 @@ void SetValue(drm_metrics::ValueMetric* value_proto, const T& value); template class ValueMetric { public: - ValueMetric() {} - // Record the value of the metric. void Record(const T& value) { std::unique_lock lock(mutex_); @@ -103,7 +101,7 @@ class ValueMetric { private: enum ValueState { kNone, kHasValue, kHasError }; - T value_; + T value_ = T(); int error_code_ = 0; ValueState state_ = kNone; diff --git a/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp b/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp index 91c4ed84..ee054358 100644 --- a/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp +++ b/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp @@ -10,10 +10,7 @@ namespace wvcdm { namespace metrics { -using ::drm_metrics::Attributes; using ::drm_metrics::WvCdmMetrics; -using ::google::protobuf::RepeatedPtrField; -using ::wvcdm::metrics::EventMetric; namespace { // Helper struct for comparing session ids. struct CompareSessionIds { @@ -217,7 +214,7 @@ void CryptoMetrics::Serialize( crypto_metrics->mutable_oemcrypto_get_signature_hash_algorithm()); } -SessionMetrics::SessionMetrics() : session_id_(""), completed_(false) {} +SessionMetrics::SessionMetrics() : session_id_(), completed_(false) {} void SessionMetrics::Serialize( WvCdmMetrics::SessionMetrics* session_metrics) const {