cast_sys_info_dummy.cc 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "chromecast/base/cast_sys_info_dummy.h"
  5. #include "base/files/file_path.h"
  6. #include "base/files/file_util.h"
  7. #include "base/json/json_reader.h"
  8. #include "base/logging.h"
  9. namespace chromecast {
  10. namespace {
  11. const char kJsonKeyProductName[] = "product_name";
  12. const char kJsonKeySerialNumber[] = "serial_number";
  13. const char kJsonKeyDeviceModel[] = "device_model";
  14. const char kJsonKeyManufacture[] = "manufacturer";
  15. const char kDefaultProductName[] = "cast_shell";
  16. const char kDefaultSerialNumber[] = "dummy.serial.number";
  17. const char kDefaultDeviceModel[] = "dummy model";
  18. const char kDefaultManufacturer[] = "google";
  19. std::string GetStringValue(const base::Value& sys_info_file,
  20. const std::string& key,
  21. const std::string& default_val) {
  22. DCHECK(sys_info_file.is_dict());
  23. const base::Value* val =
  24. sys_info_file.FindKeyOfType(key, base::Value::Type::STRING);
  25. if (!val) {
  26. LOG(WARNING) << "Json key not found: " << key;
  27. return default_val;
  28. }
  29. return val->GetString();
  30. }
  31. } // namespace
  32. CastSysInfoDummy::CastSysInfoDummy()
  33. : build_type_(BUILD_ENG),
  34. serial_number_("dummy.serial.number"),
  35. product_name_("cast_shell"),
  36. device_model_("dummy model"),
  37. board_name_("dummy board"),
  38. manufacturer_("google"),
  39. system_build_number_(__DATE__ " - " __TIME__),
  40. factory_country_("US"),
  41. factory_locale_list_({"en-US"}) {}
  42. CastSysInfoDummy::CastSysInfoDummy(const std::string& sys_info_file)
  43. : CastSysInfoDummy() {
  44. std::string content;
  45. if (!base::ReadFileToString(base::FilePath(sys_info_file), &content)) {
  46. LOG(ERROR) << "Failed to read sys info file: " << sys_info_file;
  47. return;
  48. }
  49. auto value = base::JSONReader::Read(content);
  50. if (!value || !value->is_dict()) {
  51. LOG(ERROR)
  52. << "Invaild sys info json file, using the default values instead.";
  53. return;
  54. }
  55. product_name_ =
  56. GetStringValue(*value, kJsonKeyProductName, kDefaultProductName);
  57. serial_number_ =
  58. GetStringValue(*value, kJsonKeySerialNumber, kDefaultSerialNumber);
  59. device_model_ =
  60. GetStringValue(*value, kJsonKeyDeviceModel, kDefaultDeviceModel);
  61. manufacturer_ =
  62. GetStringValue(*value, kJsonKeyManufacture, kDefaultManufacturer);
  63. }
  64. CastSysInfoDummy::~CastSysInfoDummy() {}
  65. CastSysInfo::BuildType CastSysInfoDummy::GetBuildType() {
  66. return build_type_;
  67. }
  68. std::string CastSysInfoDummy::GetSystemReleaseChannel() {
  69. return system_release_channel_;
  70. }
  71. std::string CastSysInfoDummy::GetSerialNumber() {
  72. return serial_number_;
  73. }
  74. std::string CastSysInfoDummy::GetProductName() {
  75. return product_name_;
  76. }
  77. std::string CastSysInfoDummy::GetDeviceModel() {
  78. return device_model_;
  79. }
  80. std::string CastSysInfoDummy::GetBoardName() {
  81. return board_name_;
  82. }
  83. std::string CastSysInfoDummy::GetBoardRevision() {
  84. return board_revision_;
  85. }
  86. std::string CastSysInfoDummy::GetManufacturer() {
  87. return manufacturer_;
  88. }
  89. std::string CastSysInfoDummy::GetSystemBuildNumber() {
  90. return system_build_number_;
  91. }
  92. std::string CastSysInfoDummy::GetFactoryCountry() {
  93. return factory_country_;
  94. }
  95. std::vector<std::string> CastSysInfoDummy::GetFactoryLocaleList() {
  96. return factory_locale_list_;
  97. }
  98. std::string CastSysInfoDummy::GetWifiInterface() {
  99. return wifi_interface_;
  100. }
  101. std::string CastSysInfoDummy::GetApInterface() {
  102. return ap_interface_;
  103. }
  104. std::string CastSysInfoDummy::GetProductSsidSuffix() {
  105. return ssid_suffix_;
  106. }
  107. void CastSysInfoDummy::SetBuildTypeForTesting(
  108. CastSysInfo::BuildType build_type) {
  109. build_type_ = build_type;
  110. }
  111. void CastSysInfoDummy::SetSystemReleaseChannelForTesting(
  112. const std::string& system_release_channel) {
  113. system_release_channel_ = system_release_channel;
  114. }
  115. void CastSysInfoDummy::SetSerialNumberForTesting(
  116. const std::string& serial_number) {
  117. serial_number_ = serial_number;
  118. }
  119. void CastSysInfoDummy::SetProductNameForTesting(
  120. const std::string& product_name) {
  121. product_name_ = product_name;
  122. }
  123. void CastSysInfoDummy::SetDeviceModelForTesting(
  124. const std::string& device_model) {
  125. device_model_ = device_model;
  126. }
  127. void CastSysInfoDummy::SetBoardNameForTesting(const std::string& board_name) {
  128. board_name_ = board_name;
  129. }
  130. void CastSysInfoDummy::SetBoardRevisionForTesting(
  131. const std::string& board_revision) {
  132. board_revision_ = board_revision;
  133. }
  134. void CastSysInfoDummy::SetManufacturerForTesting(
  135. const std::string& manufacturer) {
  136. manufacturer_ = manufacturer;
  137. }
  138. void CastSysInfoDummy::SetSystemBuildNumberForTesting(
  139. const std::string& system_build_number) {
  140. system_build_number_ = system_build_number;
  141. }
  142. void CastSysInfoDummy::SetFactoryCountryForTesting(
  143. const std::string& factory_country) {
  144. factory_country_ = factory_country;
  145. }
  146. void CastSysInfoDummy::SetFactoryLocaleListForTesting(
  147. const std::vector<std::string>& factory_locale_list) {
  148. factory_locale_list_ = factory_locale_list;
  149. }
  150. void CastSysInfoDummy::SetWifiInterfaceForTesting(
  151. const std::string& wifi_interface) {
  152. wifi_interface_ = wifi_interface;
  153. }
  154. void CastSysInfoDummy::SetApInterfaceForTesting(
  155. const std::string& ap_interface) {
  156. ap_interface_ = ap_interface;
  157. }
  158. void CastSysInfoDummy::SetProductSsidSuffixForTesting(
  159. const std::string& ssid_suffix) {
  160. ssid_suffix_ = ssid_suffix;
  161. }
  162. } // namespace chromecast