fake_hardware.h revision 39910dcd1d68987ccee7c3031dc269233a8490bb
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 374da2cc108871803c765b3479d5c1ce329cb0dd13J. Richard Barnette FakeHardware() 38763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo : is_official_build_(true), 39763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo is_normal_boot_mode_(true), 40763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo is_oobe_complete_(false), 41763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo hardware_class_("Fake HWID BLAH-1234"), 42763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo firmware_version_("Fake Firmware v1.0.1"), 43763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo ec_version_("Fake EC v1.0a"), 44763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo powerwash_count_(kPowerwashCountNotSet) {} 454243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 464243291a6655972fe89d4747a0089834c9e47c20Alex Deymo // HardwareInterface methods. 47157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko bool IsOfficialBuild() const override { return is_official_build_; } 48d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 49157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko bool IsNormalBootMode() const override { return is_normal_boot_mode_; } 50d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 51157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko bool IsOOBEComplete(base::Time* out_time_of_oobe) const override { 52bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo if (out_time_of_oobe != nullptr) 53bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo *out_time_of_oobe = oobe_timestamp_; 54bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo return is_oobe_complete_; 55bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo } 56bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo 57157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko std::string GetHardwareClass() const override { return hardware_class_; } 58d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 59157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko std::string GetFirmwareVersion() const override { return firmware_version_; } 60d0fdfb3c8f36fca43fe92241bba6825b7bfca549Alex Vakulenko 61157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko std::string GetECVersion() const override { return ec_version_; } 624243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 63ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo int GetPowerwashCount() const override { return powerwash_count_; } 64ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo 65dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo bool GetNonVolatileDirectory(base::FilePath* path) const override { 66dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo return false; 67dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo } 68dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo 69dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo bool GetPowerwashSafeDirectory(base::FilePath* path) const override { 70dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo return false; 71dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo } 72dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo 734243291a6655972fe89d4747a0089834c9e47c20Alex Deymo // Setters 74056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette void SetIsOfficialBuild(bool is_official_build) { 75056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette is_official_build_ = is_official_build; 76056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette } 77056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette 78056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette void SetIsNormalBootMode(bool is_normal_boot_mode) { 79056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette is_normal_boot_mode_ = is_normal_boot_mode; 80056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette } 81056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette 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 // Sets the IsOOBEComplete to False. 89bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo void UnsetIsOOBEComplete() { 90bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo is_oobe_complete_ = false; 91bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo } 92bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo 93522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette void SetHardwareClass(std::string hardware_class) { 94522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette hardware_class_ = hardware_class; 95522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette } 96522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette 97522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette void SetFirmwareVersion(std::string firmware_version) { 98522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette firmware_version_ = firmware_version; 99522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette } 100522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette 101522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette void SetECVersion(std::string ec_version) { 102522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette ec_version_ = ec_version; 103522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette } 104522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette 105ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo void SetPowerwashCount(int powerwash_count) { 106ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo powerwash_count_ = powerwash_count; 107ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo } 108ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo 1094243291a6655972fe89d4747a0089834c9e47c20Alex Deymo private: 110056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette bool is_official_build_; 111056b0abc1273a6eebfd73060a1d0344ef02b8696J. Richard Barnette bool is_normal_boot_mode_; 112bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo bool is_oobe_complete_; 113bccbc387ed23ec18adcd0ef8b50d958ef38cd619Alex Deymo base::Time oobe_timestamp_; 114522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette std::string hardware_class_; 115522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette std::string firmware_version_; 116522d36ffca22b8c218cdc6a2d1dbab40f6d9b215J. Richard Barnette std::string ec_version_; 117ebbe7ef75279183ba3cf055158dbbb3b3b605e0eAlex Deymo int powerwash_count_; 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