1 // 2 // Copyright (C) 2013 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #ifndef UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 18 #define UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 19 20 #include <map> 21 #include <string> 22 23 #include <base/time/time.h> 24 25 #include "update_engine/common/hardware_interface.h" 26 27 namespace chromeos_update_engine { 28 29 // Implements a fake hardware interface used for testing. 30 class FakeHardware : public HardwareInterface { 31 public: 32 // Value used to signal that the powerwash_count file is not present. When 33 // this value is used in SetPowerwashCount(), GetPowerwashCount() will return 34 // false. 35 static const int kPowerwashCountNotSet = -1; 36 37 FakeHardware() = default; 38 39 // HardwareInterface methods. IsOfficialBuild()40 bool IsOfficialBuild() const override { return is_official_build_; } 41 IsNormalBootMode()42 bool IsNormalBootMode() const override { return is_normal_boot_mode_; } 43 AreDevFeaturesEnabled()44 bool AreDevFeaturesEnabled() const override { 45 return are_dev_features_enabled_; 46 } 47 IsOOBEEnabled()48 bool IsOOBEEnabled() const override { return is_oobe_enabled_; } 49 IsOOBEComplete(base::Time * out_time_of_oobe)50 bool IsOOBEComplete(base::Time* out_time_of_oobe) const override { 51 if (out_time_of_oobe != nullptr) 52 *out_time_of_oobe = oobe_timestamp_; 53 return is_oobe_complete_; 54 } 55 GetHardwareClass()56 std::string GetHardwareClass() const override { return hardware_class_; } 57 GetFirmwareVersion()58 std::string GetFirmwareVersion() const override { return firmware_version_; } 59 GetECVersion()60 std::string GetECVersion() const override { return ec_version_; } 61 GetPowerwashCount()62 int GetPowerwashCount() const override { return powerwash_count_; } 63 SchedulePowerwash()64 bool SchedulePowerwash() override { 65 powerwash_scheduled_ = true; 66 return true; 67 } 68 CancelPowerwash()69 bool CancelPowerwash() override { 70 powerwash_scheduled_ = false; 71 return true; 72 } 73 IsPowerwashScheduled()74 bool IsPowerwashScheduled() { return powerwash_scheduled_; } 75 GetNonVolatileDirectory(base::FilePath * path)76 bool GetNonVolatileDirectory(base::FilePath* path) const override { 77 return false; 78 } 79 GetPowerwashSafeDirectory(base::FilePath * path)80 bool GetPowerwashSafeDirectory(base::FilePath* path) const override { 81 return false; 82 } 83 GetBuildTimestamp()84 int64_t GetBuildTimestamp() const override { return build_timestamp_; } 85 86 // Setters SetIsOfficialBuild(bool is_official_build)87 void SetIsOfficialBuild(bool is_official_build) { 88 is_official_build_ = is_official_build; 89 } 90 SetIsNormalBootMode(bool is_normal_boot_mode)91 void SetIsNormalBootMode(bool is_normal_boot_mode) { 92 is_normal_boot_mode_ = is_normal_boot_mode; 93 } 94 SetAreDevFeaturesEnabled(bool are_dev_features_enabled)95 void SetAreDevFeaturesEnabled(bool are_dev_features_enabled) { 96 are_dev_features_enabled_ = are_dev_features_enabled; 97 } 98 99 // Sets the SetIsOOBEEnabled to |is_oobe_enabled|. SetIsOOBEEnabled(bool is_oobe_enabled)100 void SetIsOOBEEnabled(bool is_oobe_enabled) { 101 is_oobe_enabled_ = is_oobe_enabled; 102 } 103 104 // Sets the IsOOBEComplete to True with the given timestamp. SetIsOOBEComplete(base::Time oobe_timestamp)105 void SetIsOOBEComplete(base::Time oobe_timestamp) { 106 is_oobe_complete_ = true; 107 oobe_timestamp_ = oobe_timestamp; 108 } 109 UnsetIsOOBEComplete()110 void UnsetIsOOBEComplete() { 111 is_oobe_complete_ = false; 112 } 113 SetHardwareClass(const std::string & hardware_class)114 void SetHardwareClass(const std::string& hardware_class) { 115 hardware_class_ = hardware_class; 116 } 117 SetFirmwareVersion(const std::string & firmware_version)118 void SetFirmwareVersion(const std::string& firmware_version) { 119 firmware_version_ = firmware_version; 120 } 121 SetECVersion(const std::string & ec_version)122 void SetECVersion(const std::string& ec_version) { 123 ec_version_ = ec_version; 124 } 125 SetPowerwashCount(int powerwash_count)126 void SetPowerwashCount(int powerwash_count) { 127 powerwash_count_ = powerwash_count; 128 } 129 SetBuildTimestamp(int64_t build_timestamp)130 void SetBuildTimestamp(int64_t build_timestamp) { 131 build_timestamp_ = build_timestamp; 132 } 133 134 private: 135 bool is_official_build_{true}; 136 bool is_normal_boot_mode_{true}; 137 bool are_dev_features_enabled_{false}; 138 bool is_oobe_enabled_{true}; 139 bool is_oobe_complete_{true}; 140 base::Time oobe_timestamp_{base::Time::FromTimeT(1169280000)}; // Jan 20, 2007 141 std::string hardware_class_{"Fake HWID BLAH-1234"}; 142 std::string firmware_version_{"Fake Firmware v1.0.1"}; 143 std::string ec_version_{"Fake EC v1.0a"}; 144 int powerwash_count_{kPowerwashCountNotSet}; 145 bool powerwash_scheduled_{false}; 146 int64_t build_timestamp_{0}; 147 148 DISALLOW_COPY_AND_ASSIGN(FakeHardware); 149 }; 150 151 } // namespace chromeos_update_engine 152 153 #endif // UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 154