1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2012 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// 1608fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan 17cf175a098081f3f0e9ca52d997a7ce1585c14c2dGilad Arnold#ifndef UPDATE_ENGINE_FAKE_SYSTEM_STATE_H_ 18cf175a098081f3f0e9ca52d997a7ce1585c14c2dGilad Arnold#define UPDATE_ENGINE_FAKE_SYSTEM_STATE_H_ 1908fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan 201f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold#include <base/logging.h> 2108fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan#include <gmock/gmock.h> 224348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan#include <policy/mock_device_policy.h> 23d6deb1d0357f47d5525bfaeffa6c201b19abd3e7Alex Deymo#include <power_manager/dbus-proxies.h> 24d6deb1d0357f47d5525bfaeffa6c201b19abd3e7Alex Deymo#include <power_manager/dbus-proxy-mocks.h> 25f057205065339c54d3403263f049e2ea69417665Jay Srinivasan 261f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold#include "metrics/metrics_library_mock.h" 2739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/fake_boot_control.h" 2839910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/fake_clock.h" 2939910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/fake_hardware.h" 3039910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/mock_prefs.h" 311cac5aa8265d9d34e7a1a45d86594429222f82bbDavid Zeuthen#include "update_engine/mock_connection_manager.h" 32560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo#include "update_engine/mock_omaha_request_params.h" 33526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen#include "update_engine/mock_p2p_manager.h" 346f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan#include "update_engine/mock_payload_state.h" 35560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo#include "update_engine/mock_update_attempter.h" 364348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan#include "update_engine/system_state.h" 3763784a578dd26880454d70797519358a2326291bAlex Deymo#include "update_engine/update_manager/fake_update_manager.h" 3808fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan 3908fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasannamespace chromeos_update_engine { 4008fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan 4108fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan// Mock the SystemStateInterface so that we could lie that 4208fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan// OOBE is completed even when there's no such marker file, etc. 435bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnoldclass FakeSystemState : public SystemState { 444348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan public: 455bb4c90b8bdf931426d1926b21b0316a86b4b4e4Gilad Arnold FakeSystemState(); 4655f50c24c2624487b803ba2f93588494cc69e523Jay Srinivasan 471f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Base class overrides. All getters return the current implementation of 481f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // various members, either the default (fake/mock) or the one set to override 491f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // it by client code. 504348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan 51763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo BootControlInterface* boot_control() override { return boot_control_; } 52763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo 53157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline ClockInterface* clock() override { return clock_; } 54f413fe59759c73d6a5624c2158260b4302d01fe2David Zeuthen 55157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline void set_device_policy( 561f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold const policy::DevicePolicy* device_policy) override { 571f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold device_policy_ = device_policy; 581f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 591f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 60157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline const policy::DevicePolicy* device_policy() override { 611f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return device_policy_; 621f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 631f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 64f6ee0163504eaf1a7cc136ba2c075d77ae2b4dd5Alex Deymo inline ConnectionManagerInterface* connection_manager() override { 656f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan return connection_manager_; 666f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan } 676f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan 68157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline HardwareInterface* hardware() override { return hardware_; } 694243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 70157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline MetricsLibraryInterface* metrics_lib() override { 711f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return metrics_lib_; 726f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan } 736f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan 74157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline PrefsInterface* prefs() override { return prefs_; } 756f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan 76157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline PrefsInterface* powerwash_safe_prefs() override { 77aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa return powerwash_safe_prefs_; 78aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa } 79aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa 80157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline PayloadStateInterface* payload_state() override { 81526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen return payload_state_; 826f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan } 836f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan 84157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline UpdateAttempter* update_attempter() override { 851f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return update_attempter_; 8676b2b4822d57360d0c77f070bd8fc25bc08fd93eGilad Arnold } 8755f50c24c2624487b803ba2f93588494cc69e523Jay Srinivasan 88f7ead8100211e7a285b48b52f4a235647274ab6eAlex Deymo inline WeaveServiceInterface* weave_service() override { return nullptr; } 89f7ead8100211e7a285b48b52f4a235647274ab6eAlex Deymo 90157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline OmahaRequestParams* request_params() override { 91ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan return request_params_; 92ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan } 93ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 94157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline P2PManager* p2p_manager() override { return p2p_manager_; } 95526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen 96157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline chromeos_update_manager::UpdateManager* update_manager() override { 9763784a578dd26880454d70797519358a2326291bAlex Deymo return update_manager_; 9894c0616c9f81b65154953ac31e488cc87191e17cAlex Deymo } 9994c0616c9f81b65154953ac31e488cc87191e17cAlex Deymo 100305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo inline org::chromium::PowerManagerProxyInterface* power_manager_proxy() 101305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo override { 102305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo return power_manager_proxy_; 103305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo } 104305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo 105157fe307f162d13f53e7f98f6e2da7c60c0ff001Alex Vakulenko inline bool system_rebooted() override { return fake_system_rebooted_; } 1064348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan 1071f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Setters for the various members, can be used for overriding the default 1081f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // implementations. For convenience, setting to a null pointer will restore 1091f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // the default implementation. 1104348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan 111763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo void set_boot_control(BootControlInterface* boot_control) { 112763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo boot_control_ = boot_control ? boot_control : &fake_boot_control_; 113763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo } 114763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo 115f413fe59759c73d6a5624c2158260b4302d01fe2David Zeuthen inline void set_clock(ClockInterface* clock) { 1161f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold clock_ = clock ? clock : &fake_clock_; 1171f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1181f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 119f6ee0163504eaf1a7cc136ba2c075d77ae2b4dd5Alex Deymo inline void set_connection_manager( 120f6ee0163504eaf1a7cc136ba2c075d77ae2b4dd5Alex Deymo ConnectionManagerInterface* connection_manager) { 1211f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold connection_manager_ = (connection_manager ? connection_manager : 1221f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold &mock_connection_manager_); 123f413fe59759c73d6a5624c2158260b4302d01fe2David Zeuthen } 124f413fe59759c73d6a5624c2158260b4302d01fe2David Zeuthen 1254243291a6655972fe89d4747a0089834c9e47c20Alex Deymo inline void set_hardware(HardwareInterface* hardware) { 1261f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold hardware_ = hardware ? hardware : &fake_hardware_; 1274243291a6655972fe89d4747a0089834c9e47c20Alex Deymo } 1284243291a6655972fe89d4747a0089834c9e47c20Alex Deymo 1291f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_metrics_lib(MetricsLibraryInterface* metrics_lib) { 1301f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold metrics_lib_ = metrics_lib ? metrics_lib : &mock_metrics_lib_; 1314da2cc108871803c765b3479d5c1ce329cb0dd13J. Richard Barnette } 1324da2cc108871803c765b3479d5c1ce329cb0dd13J. Richard Barnette 133bf7919ba5ecd58a6a03afdca8ff88caebd25581dGilad Arnold inline void set_prefs(PrefsInterface* prefs) { 1341f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold prefs_ = prefs ? prefs : &mock_prefs_; 135f057205065339c54d3403263f049e2ea69417665Jay Srinivasan } 1366f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan 1371f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_powerwash_safe_prefs(PrefsInterface* powerwash_safe_prefs) { 1381f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold powerwash_safe_prefs_ = (powerwash_safe_prefs ? powerwash_safe_prefs : 1391f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold &mock_powerwash_safe_prefs_); 1401f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1411f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1421f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_payload_state(PayloadStateInterface *payload_state) { 1431f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold payload_state_ = payload_state ? payload_state : &mock_payload_state_; 1441f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1451f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1461f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_update_attempter(UpdateAttempter* update_attempter) { 1471f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold update_attempter_ = (update_attempter ? update_attempter : 1481f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold &mock_update_attempter_); 1491f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1501f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1511f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_request_params(OmahaRequestParams* request_params) { 1521f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold request_params_ = (request_params ? request_params : 153560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo &mock_request_params_); 1541f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1551f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1561f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_p2p_manager(P2PManager *p2p_manager) { 1571f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold p2p_manager_ = p2p_manager ? p2p_manager : &mock_p2p_manager_; 1581f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1591f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 16063784a578dd26880454d70797519358a2326291bAlex Deymo inline void set_update_manager( 16163784a578dd26880454d70797519358a2326291bAlex Deymo chromeos_update_manager::UpdateManager *update_manager) { 16263784a578dd26880454d70797519358a2326291bAlex Deymo update_manager_ = update_manager ? update_manager : &fake_update_manager_; 1631f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1641f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1651f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline void set_system_rebooted(bool system_rebooted) { 1661f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold fake_system_rebooted_ = system_rebooted; 1671f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1681f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1691f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Getters for the built-in default implementations. These return the actual 1701f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // concrete type of each implementation. For additional safety, they will fail 1711f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // whenever the requested default was overridden by a different 1721f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // implementation. 1731f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 174763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo inline FakeBootControl* fake_boot_control() { 175763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo CHECK(boot_control_ == &fake_boot_control_); 176763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo return &fake_boot_control_; 177763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo } 178763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo 1791f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline FakeClock* fake_clock() { 1801f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(clock_ == &fake_clock_); 1811f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return &fake_clock_; 1821f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1831f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1841f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline testing::NiceMock<MockConnectionManager>* mock_connection_manager() { 1851f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(connection_manager_ == &mock_connection_manager_); 1861f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return &mock_connection_manager_; 1871f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1881f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1891f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline FakeHardware* fake_hardware() { 1901f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(hardware_ == &fake_hardware_); 1911f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return &fake_hardware_; 1921f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 1931f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 1941f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline testing::NiceMock<MetricsLibraryMock>* mock_metrics_lib() { 1951f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(metrics_lib_ == &mock_metrics_lib_); 1961f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return &mock_metrics_lib_; 197aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa } 198aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa 1998427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo inline testing::NiceMock<MockPrefs> *mock_prefs() { 2001f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(prefs_ == &mock_prefs_); 2016f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan return &mock_prefs_; 202f057205065339c54d3403263f049e2ea69417665Jay Srinivasan } 203f057205065339c54d3403263f049e2ea69417665Jay Srinivasan 2048427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo inline testing::NiceMock<MockPrefs> *mock_powerwash_safe_prefs() { 2051f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(powerwash_safe_prefs_ == &mock_powerwash_safe_prefs_); 206aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa return &mock_powerwash_safe_prefs_; 207aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa } 208aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa 2091f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline testing::NiceMock<MockPayloadState>* mock_payload_state() { 2101f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(payload_state_ == &mock_payload_state_); 2116f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan return &mock_payload_state_; 2126f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan } 213f057205065339c54d3403263f049e2ea69417665Jay Srinivasan 214560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo inline testing::NiceMock<MockUpdateAttempter>* mock_update_attempter() { 2151f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(update_attempter_ == &mock_update_attempter_); 2161f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return &mock_update_attempter_; 217526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen } 218526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen 219560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo inline testing::NiceMock<MockOmahaRequestParams>* mock_request_params() { 220560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo CHECK(request_params_ == &mock_request_params_); 221560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo return &mock_request_params_; 22294c0616c9f81b65154953ac31e488cc87191e17cAlex Deymo } 22394c0616c9f81b65154953ac31e488cc87191e17cAlex Deymo 2241f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold inline testing::NiceMock<MockP2PManager>* mock_p2p_manager() { 2251f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold CHECK(p2p_manager_ == &mock_p2p_manager_); 2261f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold return &mock_p2p_manager_; 2271f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold } 2281f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 22963784a578dd26880454d70797519358a2326291bAlex Deymo inline chromeos_update_manager::FakeUpdateManager* fake_update_manager() { 23063784a578dd26880454d70797519358a2326291bAlex Deymo CHECK(update_manager_ == &fake_update_manager_); 23163784a578dd26880454d70797519358a2326291bAlex Deymo return &fake_update_manager_; 232526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen } 233526cb58ddecbbc1ba5d2e3faf068d26d0661d464David Zeuthen 2344348879380222dc8c74b0976e527bf3da66ba08fJay Srinivasan private: 2351f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Default mock/fake implementations (owned). 236763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo FakeBootControl fake_boot_control_; 2371f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold FakeClock fake_clock_; 2381f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold testing::NiceMock<MockConnectionManager> mock_connection_manager_; 2391f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold FakeHardware fake_hardware_; 24055f50c24c2624487b803ba2f93588494cc69e523Jay Srinivasan testing::NiceMock<MetricsLibraryMock> mock_metrics_lib_; 2418427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo testing::NiceMock<MockPrefs> mock_prefs_; 2428427b4a6d0e6e02beedbb53798272f8ddc39386fAlex Deymo testing::NiceMock<MockPrefs> mock_powerwash_safe_prefs_; 2432b5a0f065187fd19179e3809148dbfc376ada7a0Jay Srinivasan testing::NiceMock<MockPayloadState> mock_payload_state_; 244560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo testing::NiceMock<MockUpdateAttempter> mock_update_attempter_; 245560ae1da0e62f7897699f63631452f0c4144d413Alex Deymo testing::NiceMock<MockOmahaRequestParams> mock_request_params_; 2461f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold testing::NiceMock<MockP2PManager> mock_p2p_manager_; 24763784a578dd26880454d70797519358a2326291bAlex Deymo chromeos_update_manager::FakeUpdateManager fake_update_manager_; 248305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo org::chromium::PowerManagerProxyMock mock_power_manager_; 249ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan 2501f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Pointers to objects that client code can override. They are initialized to 2511f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // the default implementations above. 252763e7dbaac735da0ae802933a1015b6b7874bce2Alex Deymo BootControlInterface* boot_control_{&fake_boot_control_}; 253f413fe59759c73d6a5624c2158260b4302d01fe2David Zeuthen ClockInterface* clock_; 254f6ee0163504eaf1a7cc136ba2c075d77ae2b4dd5Alex Deymo ConnectionManagerInterface* connection_manager_; 2554243291a6655972fe89d4747a0089834c9e47c20Alex Deymo HardwareInterface* hardware_; 2561f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold MetricsLibraryInterface* metrics_lib_; 2576f6ea00aa8c4cf54b6842be32ca1226854c24f78Jay Srinivasan PrefsInterface* prefs_; 258aa18e1641879f2df5993c2b02eb6f50d4443a649Chris Sosa PrefsInterface* powerwash_safe_prefs_; 2591f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold PayloadStateInterface* payload_state_; 2601f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold UpdateAttempter* update_attempter_; 261ae4697c073b84b260990a141acd53c6806da0708Jay Srinivasan OmahaRequestParams* request_params_; 26294c0616c9f81b65154953ac31e488cc87191e17cAlex Deymo P2PManager* p2p_manager_; 26363784a578dd26880454d70797519358a2326291bAlex Deymo chromeos_update_manager::UpdateManager* update_manager_; 264305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo org::chromium::PowerManagerProxyInterface* power_manager_proxy_{ 265305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo &mock_power_manager_}; 2661f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 2671f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Other object pointers (not preinitialized). 2681f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold const policy::DevicePolicy* device_policy_; 2691f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold 2701f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold // Other data members. 2711f84723f499b3b309efac11324ed4e6c937341b6Gilad Arnold bool fake_system_rebooted_; 27208fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan}; 27308fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan 27494c0616c9f81b65154953ac31e488cc87191e17cAlex Deymo} // namespace chromeos_update_engine 27508fce04e5341c99f308ee7462b1f351f5232eacdJay Srinivasan 276cf175a098081f3f0e9ca52d997a7ce1585c14c2dGilad Arnold#endif // UPDATE_ENGINE_FAKE_SYSTEM_STATE_H_ 277