16eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// 26eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// Copyright (C) 2015 The Android Open Source Project 36eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// 46eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// Licensed under the Apache License, Version 2.0 (the "License"); 56eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// you may not use this file except in compliance with the License. 66eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// You may obtain a copy of the License at 76eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// 86eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// http://www.apache.org/licenses/LICENSE-2.0 96eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// 106eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// Unless required by applicable law or agreed to in writing, software 116eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// distributed under the License is distributed on an "AS IS" BASIS, 126eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// See the License for the specific language governing permissions and 146eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// limitations under the License. 156eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// 166eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 1739910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#ifndef UPDATE_ENGINE_COMMON_BOOT_CONTROL_STUB_H_ 1839910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#define UPDATE_ENGINE_COMMON_BOOT_CONTROL_STUB_H_ 196eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 206eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen#include <string> 216eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 2239910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/boot_control_interface.h" 236eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 246eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthennamespace chromeos_update_engine { 256eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 266eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// An implementation of the BootControlInterface that does nothing, 276eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// typically used when e.g. an underlying HAL implementation cannot be 286eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// loaded or doesn't exist. 296eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// 306eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// You are gauranteed that the implementation of GetNumSlots() method 316eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// always returns 0. This can be used to identify that this 326eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen// implementation is in use. 336eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthenclass BootControlStub : public BootControlInterface { 346eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen public: 356eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen BootControlStub() = default; 366eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen ~BootControlStub() = default; 376eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 386eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen // BootControlInterface overrides. 396eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen unsigned int GetNumSlots() const override; 406eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen BootControlInterface::Slot GetCurrentSlot() const override; 416eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen bool GetPartitionDevice(const std::string& partition_name, 426eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen BootControlInterface::Slot slot, 436eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen std::string* device) const override; 446eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen bool IsSlotBootable(BootControlInterface::Slot slot) const override; 456eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen bool MarkSlotUnbootable(BootControlInterface::Slot slot) override; 466eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen bool SetActiveBootSlot(BootControlInterface::Slot slot) override; 476eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen bool MarkBootSuccessfulAsync(base::Callback<void(bool)> callback) override; 486eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 496eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen private: 506eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen DISALLOW_COPY_AND_ASSIGN(BootControlStub); 516eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen}; 526eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 536eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen} // namespace chromeos_update_engine 546eddf26ce30989c0f4812b3b9de17760a40fdea7David Zeuthen 5539910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#endif // UPDATE_ENGINE_COMMON_BOOT_CONTROL_STUB_H_ 56