// Copyright 2013 Google Inc. All Rights Reserved. #ifndef WVCDM_CORE_PROPERTIES_H_ #define WVCDM_CORE_PROPERTIES_H_ #include #include #include "cdm_client_property_set.h" #include "lock.h" #include "scoped_ptr.h" #include "wv_cdm_types.h" namespace wvcdm { typedef std::map CdmClientPropertySetMap; // This class saves information about features and properties enabled // for a given platform. At initialization it initializes properties from // property_configuration.h. That file specifies features selected for each // platform. Core CDM can then query enabled features though specific getter // methods. // Setter methods are provided but their only planned use is for testing. class Properties { public: static void Init(); static inline bool oem_crypto_use_secure_buffers() { return oem_crypto_use_secure_buffers_; } static inline bool oem_crypto_use_fifo() { return oem_crypto_use_fifo_; } static inline bool oem_crypto_use_userspace_buffers() { return oem_crypto_use_userspace_buffers_; } static inline bool oem_crypto_require_usage_tables() { return oem_crypto_require_usage_tables_; } static inline bool use_certificates_as_identification() { return use_certificates_as_identification_; } static inline bool security_level_path_backward_compatibility_support() { return security_level_path_backward_compatibility_support_; } static bool GetCompanyName(std::string* company_name); static bool GetModelName(std::string* model_name); static bool GetArchitectureName(std::string* arch_name); static bool GetDeviceName(std::string* device_name); static bool GetProductName(std::string* product_name); static bool GetBuildInfo(std::string* build_info); static bool GetDeviceFilesBasePath(CdmSecurityLevel security_level, std::string* base_path); static bool GetFactoryKeyboxPath(std::string* keybox); static bool GetOEMCryptoPath(std::string* library_name); static bool GetSecurityLevelDirectories(std::vector* dirs); static const std::string GetSecurityLevel(const CdmSessionId& session_id); static const std::vector GetServiceCertificate( const CdmSessionId& session_id); static bool UsePrivacyMode(const CdmSessionId& session_id); static uint32_t GetSessionSharingId(const CdmSessionId& session_id); static bool AddSessionPropertySet(const CdmSessionId& session_id, const CdmClientPropertySet* property_set); static bool RemoveSessionPropertySet(const CdmSessionId& session_id); private: static const CdmClientPropertySet* GetCdmClientPropertySet( const CdmSessionId& session_id); static void set_oem_crypto_use_secure_buffers(bool flag) { oem_crypto_use_secure_buffers_ = flag; } static void set_oem_crypto_use_fifo(bool flag) { oem_crypto_use_fifo_ = flag; } static void set_oem_crypto_use_userspace_buffers(bool flag) { oem_crypto_use_userspace_buffers_ = flag; } static void set_oem_crypto_require_usage_tables(bool flag) { oem_crypto_require_usage_tables_ = flag; } static void set_use_certificates_as_identification(bool flag) { use_certificates_as_identification_ = flag; } static void set_security_level_path_backward_compatibility_support( bool flag) { security_level_path_backward_compatibility_support_ = flag; } private: static bool oem_crypto_use_secure_buffers_; static bool oem_crypto_use_fifo_; static bool oem_crypto_use_userspace_buffers_; static bool oem_crypto_require_usage_tables_; static bool use_certificates_as_identification_; static bool security_level_path_backward_compatibility_support_; static scoped_ptr session_property_set_; CORE_DISALLOW_COPY_AND_ASSIGN(Properties); }; } // namespace wvcdm #endif // WVCDM_CORE_PROPERTIES_H_