diff --git a/libwvdrmengine/cdm/core/include/properties.h b/libwvdrmengine/cdm/core/include/properties.h index 9a0b7d00..04910ead 100644 --- a/libwvdrmengine/cdm/core/include/properties.h +++ b/libwvdrmengine/cdm/core/include/properties.h @@ -61,6 +61,9 @@ class Properties { static void set_provisioning_messages_are_binary(bool flag) { provisioning_messages_are_binary_ = flag; } + static inline bool delay_oem_crypto_termination() { + return delay_oem_crypto_termination_; + } static bool GetCompanyName(std::string* company_name); static bool GetModelName(std::string* model_name); static bool GetArchitectureName(std::string* arch_name); @@ -147,6 +150,7 @@ class Properties { static bool allow_service_certificate_requests_; static bool device_files_is_a_real_filesystem_; static bool allow_restore_of_offline_licenses_with_release_; + static bool delay_oem_crypto_termination_; static std::unique_ptr session_property_set_; CORE_DISALLOW_COPY_AND_ASSIGN(Properties); diff --git a/libwvdrmengine/cdm/core/src/properties.cpp b/libwvdrmengine/cdm/core/src/properties.cpp index 2e424c9e..e1bd17af 100644 --- a/libwvdrmengine/cdm/core/src/properties.cpp +++ b/libwvdrmengine/cdm/core/src/properties.cpp @@ -21,6 +21,7 @@ bool Properties::provisioning_messages_are_binary_; bool Properties::allow_service_certificate_requests_; bool Properties::device_files_is_a_real_filesystem_; bool Properties::allow_restore_of_offline_licenses_with_release_; +bool Properties::delay_oem_crypto_termination_; std::unique_ptr Properties::session_property_set_; bool Properties::AddSessionPropertySet(const CdmSessionId& session_id, diff --git a/libwvdrmengine/cdm/include/properties_configuration.h b/libwvdrmengine/cdm/include/properties_configuration.h index e4300814..f055b3eb 100644 --- a/libwvdrmengine/cdm/include/properties_configuration.h +++ b/libwvdrmengine/cdm/include/properties_configuration.h @@ -39,6 +39,11 @@ const bool kDeviceFilesIsARealFileSystem = true; // will be treated as a release request. If false, a restoration will fail. const bool kAllowRestoreOfflineLicenseWithRelease = false; +// This controls whether an OEMCrypto_Terminate call is issued immediately +// after crypto session count declines to 0 or if a termination is +// delayed by a countdown timer. If false, termination is immediate. +const bool kPropertyDelayOemCryptoTermination = true; + } // namespace wvcdm #endif // CDM_BASE_WV_PROPERTIES_CONFIGURATION_H_ diff --git a/libwvdrmengine/cdm/src/properties_android.cpp b/libwvdrmengine/cdm/src/properties_android.cpp index 214175b6..9ec43be4 100644 --- a/libwvdrmengine/cdm/src/properties_android.cpp +++ b/libwvdrmengine/cdm/src/properties_android.cpp @@ -52,6 +52,7 @@ void Properties::InitOnce() { device_files_is_a_real_filesystem_ = kDeviceFilesIsARealFileSystem; allow_restore_of_offline_licenses_with_release_ = kAllowRestoreOfflineLicenseWithRelease; + delay_oem_crypto_termination_ = kPropertyDelayOemCryptoTermination; session_property_set_.reset(new CdmClientPropertySetMap()); }