diff --git a/libwvdrmengine/cdm/core/include/properties.h b/libwvdrmengine/cdm/core/include/properties.h index 3e7aa62e..fa207cc6 100644 --- a/libwvdrmengine/cdm/core/include/properties.h +++ b/libwvdrmengine/cdm/core/include/properties.h @@ -52,6 +52,9 @@ class Properties { static inline bool allow_service_certificate_requests() { return allow_service_certificate_requests_; } + static inline bool device_files_is_a_real_filesystem() { + return device_files_is_a_real_filesystem_; + } static void set_provisioning_messages_are_binary(bool flag) { provisioning_messages_are_binary_ = flag; } @@ -62,6 +65,9 @@ class Properties { static bool GetProductName(std::string* product_name); static bool GetBuildInfo(std::string* build_info); static bool GetWVCdmVersion(std::string* version); + // Gets the base path for the device non-secure storage. Note that, depending + // on the value of device_files_is_a_real_filesystem, this may or may not be + // a real filesystem path. static bool GetDeviceFilesBasePath(CdmSecurityLevel security_level, std::string* base_path); static bool GetFactoryKeyboxPath(std::string* keybox); @@ -136,6 +142,7 @@ class Properties { static bool use_certificates_as_identification_; static bool provisioning_messages_are_binary_; static bool allow_service_certificate_requests_; + static bool device_files_is_a_real_filesystem_; 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 d2c21649..d49a7e03 100644 --- a/libwvdrmengine/cdm/core/src/properties.cpp +++ b/libwvdrmengine/cdm/core/src/properties.cpp @@ -19,6 +19,7 @@ bool Properties::oem_crypto_use_fifo_; bool Properties::oem_crypto_use_userspace_buffers_; bool Properties::provisioning_messages_are_binary_; bool Properties::allow_service_certificate_requests_; +bool Properties::device_files_is_a_real_filesystem_; 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 52da313e..7b8fee14 100644 --- a/libwvdrmengine/cdm/include/properties_configuration.h +++ b/libwvdrmengine/cdm/include/properties_configuration.h @@ -29,6 +29,11 @@ const bool kPropertyProvisioningMessagesAreBinary = false; // an error will be generated. const bool kAllowServiceCertificateRequests = true; +// Indicates whether this platform's FileSystem abstraction maps directly to the +// device filesystem or whether there is a layer of indirection. If set to true, +// code may treat the DeviceFiles base path as a raw filesystem path. +const bool kDeviceFilesIsARealFileSystem = 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 77b67817..f2b3be24 100644 --- a/libwvdrmengine/cdm/src/properties_android.cpp +++ b/libwvdrmengine/cdm/src/properties_android.cpp @@ -49,6 +49,7 @@ void Properties::InitOnce() { oem_crypto_use_userspace_buffers_ = kPropertyOemCryptoUseUserSpaceBuffers; provisioning_messages_are_binary_ = kPropertyProvisioningMessagesAreBinary; allow_service_certificate_requests_ = kAllowServiceCertificateRequests; + device_files_is_a_real_filesystem_ = kDeviceFilesIsARealFileSystem; session_property_set_.reset(new CdmClientPropertySetMap()); }