fake_hardware.h revision 46a9aae85e78179a0acd0d1efd1d99685fb827bb
1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2013 The Android Open Source Project 3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License"); 5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License. 6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at 7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// http://www.apache.org/licenses/LICENSE-2.0 9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software 11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS, 12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and 14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License. 15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 164243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 1739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#ifndef UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 1839910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#define UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 194243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 2083692e4fd17b5669eeb3edb24b8c4cd8152c7283Don Garrett#include <map> 21df632d17329738d977494625c7819c9d4a123567Alex Deymo#include <string> 2283692e4fd17b5669eeb3edb24b8c4cd8152c7283Don Garrett 23bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo#include <base/time/time.h> 24bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo 2539910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/hardware_interface.h" 264243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 274243291a6655972fe89d4747a0089834c9e47c20Alex Deymonamespace chromeos_update_engine { 284243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 294243291a6655972fe89d4747a0089834c9e47c20Alex Deymo// Implements a fake hardware interface used for testing. 304243291a6655972fe89d4747a0089834c9e47c20Alex Deymoclass FakeHardware : public HardwareInterface { 314243291a6655972fe89d4747a0089834c9e47c20Alex Deymo public: 32ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo // Value used to signal that the powerwash_count file is not present. When 33ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo // this value is used in SetPowerwashCount(), GetPowerwashCount() will return 34ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo // false. 35ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo static const int kPowerwashCountNotSet = -1; 36ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo 3746a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo FakeHardware() = default; 384243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 394243291a6655972fe89d4747a0089834c9e47c20Alex Deymo // HardwareInterface methods. 40157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko bool IsOfficialBuild() const override { return is_official_build_; } 41d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 42157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko bool IsNormalBootMode() const override { return is_normal_boot_mode_; } 43d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 4446a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo bool IsOOBEEnabled() const override { return is_oobe_enabled_; } 4546a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo 46157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko bool IsOOBEComplete(base::Time* out_time_of_oobe) const override { 47bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo if (out_time_of_oobe != nullptr) 48bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo *out_time_of_oobe = oobe_timestamp_; 49bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo return is_oobe_complete_; 50bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo } 51bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo 52157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko std::string GetHardwareClass() const override { return hardware_class_; } 53d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 54157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko std::string GetFirmwareVersion() const override { return firmware_version_; } 55d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 56157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko std::string GetECVersion() const override { return ec_version_; } 574243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 58ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo int GetPowerwashCount() const override { return powerwash_count_; } 59ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo 60dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo bool GetNonVolatileDirectory(base::FilePath* path) const override { 61dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo return false; 62dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo } 63dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo 64dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo bool GetPowerwashSafeDirectory(base::FilePath* path) const override { 65dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo return false; 66dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo } 67dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo 684243291a6655972fe89d4747a0089834c9e47c20Alex Deymo // Setters 69056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette void SetIsOfficialBuild(bool is_official_build) { 70056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette is_official_build_ = is_official_build; 71056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette } 72056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette 73056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette void SetIsNormalBootMode(bool is_normal_boot_mode) { 74056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette is_normal_boot_mode_ = is_normal_boot_mode; 75056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette } 76056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette 7746a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo // Sets the SetIsOOBEEnabled to |is_oobe_enabled|. 7846a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo void SetIsOOBEEnabled(bool is_oobe_enabled) { 7946a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo is_oobe_enabled_ = is_oobe_enabled; 8046a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo } 8146a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo 82bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo // Sets the IsOOBEComplete to True with the given timestamp. 83bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo void SetIsOOBEComplete(base::Time oobe_timestamp) { 84bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo is_oobe_complete_ = true; 85bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo oobe_timestamp_ = oobe_timestamp; 86bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo } 87bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo 88bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo void UnsetIsOOBEComplete() { 89bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo is_oobe_complete_ = false; 90bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo } 91bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo 92522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette void SetHardwareClass(std::string hardware_class) { 93522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette hardware_class_ = hardware_class; 94522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette } 95522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette 96522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette void SetFirmwareVersion(std::string firmware_version) { 97522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette firmware_version_ = firmware_version; 98522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette } 99522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette 100522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette void SetECVersion(std::string ec_version) { 101522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette ec_version_ = ec_version; 102522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette } 103522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette 104ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo void SetPowerwashCount(int powerwash_count) { 105ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo powerwash_count_ = powerwash_count; 106ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo } 107ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo 1084243291a6655972fe89d4747a0089834c9e47c20Alex Deymo private: 10946a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo bool is_official_build_{true}; 11046a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo bool is_normal_boot_mode_{true}; 11146a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo bool is_oobe_enabled_{true}; 11246a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo bool is_oobe_complete_{true}; 11346a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo base::Time oobe_timestamp_{base::Time::FromTimeT(1169280000)}; // Jan 20, 2007 11446a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo std::string hardware_class_{"Fake HWID BLAH-1234"}; 11546a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo std::string firmware_version_{"Fake Firmware v1.0.1"}; 11646a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo std::string ec_version_{"Fake EC v1.0a"}; 11746a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo int powerwash_count_{kPowerwashCountNotSet}; 1184243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 1194243291a6655972fe89d4747a0089834c9e47c20Alex Deymo DISALLOW_COPY_AND_ASSIGN(FakeHardware); 1204243291a6655972fe89d4747a0089834c9e47c20Alex Deymo}; 1214243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 1224243291a6655972fe89d4747a0089834c9e47c20Alex Deymo} // namespace chromeos_update_engine 1234243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 12439910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#endif // UPDATE_ENGINE_COMMON_FAKE_HARDWARE_H_ 125