// Copyright 2021 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine License // Agreement. #include "properties_ce.h" #include "log.h" #include "properties.h" #include "wv_factory_extractor.h" // This anonymous namespace is shared between both the widevine namespace and // wvcdm namespace objects below. namespace { widevine::ClientInfo client_info_; bool GetValue(const std::string& source, std::string* output) { if (!output) { LOGE("Null output"); return false; } *output = source; return source.size() != 0; } } // namespace namespace widevine { // static bool PropertiesCE::SetClientInfo(const ClientInfo& client_info) { if (client_info.product_name.empty() || client_info.company_name.empty() || client_info.device_name.empty() || client_info.model_name.empty() || client_info.arch_name.empty() || client_info.build_info.empty()) { return false; } client_info_ = client_info; return true; } // static ClientInfo PropertiesCE::GetClientInfo() { return client_info_; } } // namespace widevine namespace wvcdm { // static bool Properties::GetCompanyName(std::string* company_name) { return GetValue(client_info_.company_name, company_name); } // static bool Properties::GetModelName(std::string* model_name) { return GetValue(client_info_.model_name, model_name); } // static bool Properties::GetArchitectureName(std::string* arch_name) { return GetValue(client_info_.arch_name, arch_name); } // static bool Properties::GetDeviceName(std::string* device_name) { return GetValue(client_info_.device_name, device_name); } // static bool Properties::GetProductName(std::string* product_name) { return GetValue(client_info_.product_name, product_name); } // static bool Properties::GetBuildInfo(std::string* build_info) { return GetValue(client_info_.build_info, build_info); } // static bool Properties::GetPlatform(std::string* /* platform */) { return false; // No attempt for upload tool. } // static bool Properties::GetFormFactor(std::string* /* form_factor */) { return false; // No attempt for upload tool. } // static bool Properties::GetOEMCryptoPath(std::string* path) { if (path == nullptr) return false; // Using an environment variable is useful for testing. const char* env_path = getenv("LIBOEMCRYPTO_PATH"); if (env_path) { *path = std::string(env_path); } else { *path = "liboemcrypto.so"; } return true; } } // namespace wvcdm