| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chromecast/base/cast_sys_info_dummy.h" |
| |
| #include "base/files/file_path.h" |
| #include "base/files/file_util.h" |
| #include "base/json/json_reader.h" |
| #include "base/logging.h" |
| |
| namespace chromecast { |
| |
| namespace { |
| const char kJsonKeyProductName[] = "product_name"; |
| const char kJsonKeySerialNumber[] = "serial_number"; |
| const char kJsonKeyDeviceModel[] = "device_model"; |
| const char kJsonKeyManufacture[] = "manufacturer"; |
| |
| const char kDefaultProductName[] = "cast_shell"; |
| const char kDefaultSerialNumber[] = "dummy.serial.number"; |
| const char kDefaultDeviceModel[] = "dummy model"; |
| const char kDefaultManufacturer[] = "google"; |
| |
| std::string GetStringValue(const base::Value& sys_info_file, |
| const std::string& key, |
| const std::string& default_val) { |
| DCHECK(sys_info_file.is_dict()); |
| |
| const std::string* val = sys_info_file.GetDict().FindString(key); |
| if (!val) { |
| LOG(WARNING) << "Json key not found: " << key; |
| return default_val; |
| } |
| return *val; |
| } |
| } // namespace |
| |
| CastSysInfoDummy::CastSysInfoDummy() |
| : build_type_(BUILD_ENG), |
| serial_number_("dummy.serial.number"), |
| product_name_("cast_shell"), |
| device_model_("dummy model"), |
| board_name_("dummy board"), |
| manufacturer_("google"), |
| system_build_number_(__DATE__ " - " __TIME__), |
| factory_country_("US"), |
| factory_locale_list_({"en-US"}) {} |
| |
| CastSysInfoDummy::CastSysInfoDummy(const std::string& sys_info_file) |
| : CastSysInfoDummy() { |
| std::string content; |
| if (!base::ReadFileToString(base::FilePath(sys_info_file), &content)) { |
| LOG(ERROR) << "Failed to read sys info file: " << sys_info_file; |
| return; |
| } |
| |
| auto value = base::JSONReader::Read(content); |
| if (!value || !value->is_dict()) { |
| LOG(ERROR) |
| << "Invaild sys info json file, using the default values instead."; |
| return; |
| } |
| |
| product_name_ = |
| GetStringValue(*value, kJsonKeyProductName, kDefaultProductName); |
| serial_number_ = |
| GetStringValue(*value, kJsonKeySerialNumber, kDefaultSerialNumber); |
| device_model_ = |
| GetStringValue(*value, kJsonKeyDeviceModel, kDefaultDeviceModel); |
| manufacturer_ = |
| GetStringValue(*value, kJsonKeyManufacture, kDefaultManufacturer); |
| } |
| |
| CastSysInfoDummy::~CastSysInfoDummy() {} |
| |
| CastSysInfo::BuildType CastSysInfoDummy::GetBuildType() { |
| return build_type_; |
| } |
| |
| std::string CastSysInfoDummy::GetSystemReleaseChannel() { |
| return system_release_channel_; |
| } |
| |
| std::string CastSysInfoDummy::GetSerialNumber() { |
| return serial_number_; |
| } |
| |
| std::string CastSysInfoDummy::GetProductName() { |
| return product_name_; |
| } |
| |
| std::string CastSysInfoDummy::GetDeviceModel() { |
| return device_model_; |
| } |
| |
| std::string CastSysInfoDummy::GetBoardName() { |
| return board_name_; |
| } |
| |
| std::string CastSysInfoDummy::GetBoardRevision() { |
| return board_revision_; |
| } |
| |
| std::string CastSysInfoDummy::GetManufacturer() { |
| return manufacturer_; |
| } |
| |
| std::string CastSysInfoDummy::GetSystemBuildNumber() { |
| return system_build_number_; |
| } |
| |
| std::string CastSysInfoDummy::GetFactoryCountry() { |
| return factory_country_; |
| } |
| |
| std::vector<std::string> CastSysInfoDummy::GetFactoryLocaleList() { |
| return factory_locale_list_; |
| } |
| |
| std::string CastSysInfoDummy::GetWifiInterface() { |
| return wifi_interface_; |
| } |
| |
| std::string CastSysInfoDummy::GetApInterface() { |
| return ap_interface_; |
| } |
| |
| std::string CastSysInfoDummy::GetProductSsidSuffix() { |
| return ssid_suffix_; |
| } |
| |
| void CastSysInfoDummy::SetBuildTypeForTesting( |
| CastSysInfo::BuildType build_type) { |
| build_type_ = build_type; |
| } |
| |
| void CastSysInfoDummy::SetSystemReleaseChannelForTesting( |
| const std::string& system_release_channel) { |
| system_release_channel_ = system_release_channel; |
| } |
| |
| void CastSysInfoDummy::SetSerialNumberForTesting( |
| const std::string& serial_number) { |
| serial_number_ = serial_number; |
| } |
| |
| void CastSysInfoDummy::SetProductNameForTesting( |
| const std::string& product_name) { |
| product_name_ = product_name; |
| } |
| |
| void CastSysInfoDummy::SetDeviceModelForTesting( |
| const std::string& device_model) { |
| device_model_ = device_model; |
| } |
| |
| void CastSysInfoDummy::SetBoardNameForTesting(const std::string& board_name) { |
| board_name_ = board_name; |
| } |
| |
| void CastSysInfoDummy::SetBoardRevisionForTesting( |
| const std::string& board_revision) { |
| board_revision_ = board_revision; |
| } |
| |
| void CastSysInfoDummy::SetManufacturerForTesting( |
| const std::string& manufacturer) { |
| manufacturer_ = manufacturer; |
| } |
| |
| void CastSysInfoDummy::SetSystemBuildNumberForTesting( |
| const std::string& system_build_number) { |
| system_build_number_ = system_build_number; |
| } |
| |
| void CastSysInfoDummy::SetFactoryCountryForTesting( |
| const std::string& factory_country) { |
| factory_country_ = factory_country; |
| } |
| |
| void CastSysInfoDummy::SetFactoryLocaleListForTesting( |
| const std::vector<std::string>& factory_locale_list) { |
| factory_locale_list_ = factory_locale_list; |
| } |
| |
| void CastSysInfoDummy::SetWifiInterfaceForTesting( |
| const std::string& wifi_interface) { |
| wifi_interface_ = wifi_interface; |
| } |
| |
| void CastSysInfoDummy::SetApInterfaceForTesting( |
| const std::string& ap_interface) { |
| ap_interface_ = ap_interface; |
| } |
| |
| void CastSysInfoDummy::SetProductSsidSuffixForTesting( |
| const std::string& ssid_suffix) { |
| ssid_suffix_ = ssid_suffix; |
| } |
| |
| } // namespace chromecast |