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 84 // Setters SetIsOfficialBuild(bool is_official_build)85 void SetIsOfficialBuild(bool is_official_build) { 86 is_official_build_ = is_official_build; 87 } 88 SetIsNormalBootMode(bool is_normal_boot_mode)89 void SetIsNormalBootMode(bool is_normal_boot_mode) { 90 is_normal_boot_mode_ = is_normal_boot_mode; 91 } 92 SetAreDevFeaturesEnabled(bool are_dev_features_enabled)93 void SetAreDevFeaturesEnabled(bool are_dev_features_enabled) { 94 are_dev_features_enabled_ = are_dev_features_enabled; 95 } 96 97 // Sets the SetIsOOBEEnabled to |is_oobe_enabled|. SetIsOOBEEnabled(bool is_oobe_enabled)98 void SetIsOOBEEnabled(bool is_oobe_enabled) { 99 is_oobe_enabled_ = is_oobe_enabled; 100 } 101 102 // Sets the IsOOBEComplete to True with the given timestamp. SetIsOOBEComplete(base::Time oobe_timestamp)103 void SetIsOOBEComplete(base::Time oobe_timestamp) { 104 is_oobe_complete_ = true; 105 oobe_timestamp_ = oobe_timestamp; 106 } 107 UnsetIsOOBEComplete()108 void UnsetIsOOBEComplete() { 109 is_oobe_complete_ = false; 110 } 111 SetHardwareClass(const std::string & hardware_class)112 void SetHardwareClass(const std::string& hardware_class) { 113 hardware_class_ = hardware_class; 114 } 115 SetFirmwareVersion(const std::string & firmware_version)116 void SetFirmwareVersion(const std::string& firmware_version) { 117 firmware_version_ = firmware_version; 118 } 119 SetECVersion(const std::string & ec_version)120 void SetECVersion(const std::string& ec_version) { 121 ec_version_ = ec_version; 122 } 123 SetPowerwashCount(int powerwash_count)124 void SetPowerwashCount(int powerwash_count) { 125 powerwash_count_ = powerwash_count; 126 } 127 128 private: 129 bool is_official_build_{true}; 130 bool is_normal_boot_mode_{true}; 131 bool are_dev_features_enabled_{false}; 132 bool is_oobe_enabled_{true}; 133 bool is_oobe_complete_{true}; 134 base::Time oobe_timestamp_{base::Time::FromTimeT(1169280000)}; // Jan 20, 2007 135 std::string hardware_class_{"Fake HWID BLAH-1234"}; 136 std::string firmware_version_{"Fake Firmware v1.0.1"}; 137 std::string ec_version_{"Fake EC v1.0a"}; 138 int powerwash_count_{kPowerwashCountNotSet}; 139 bool powerwash_scheduled_{false}; 140 141 DISALLOW_COPY_AND_ASSIGN(FakeHardware); 142 }; 143 144 } // namespace chromeos_update_engine 145 146 #endif // UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 147