blob: 610a82a5d2d4f8338b14bcf93c22ff9ddcabbbfb [file] [log] [blame]
Yifan Hongdaac7322019-11-07 10:48:26 -08001//
2// Copyright (C) 2019 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_DYNAMIC_PARTITION_CONTROL_STUB_H_
18#define UPDATE_ENGINE_COMMON_DYNAMIC_PARTITION_CONTROL_STUB_H_
19
20#include <stdint.h>
21
Yifan Hong90965502020-02-19 15:22:47 -080022#include <memory>
Yifan Hongdaac7322019-11-07 10:48:26 -080023#include <string>
Tianjie99d570d2020-06-04 14:57:19 -070024#include <vector>
Yifan Hongdaac7322019-11-07 10:48:26 -080025
26#include "update_engine/common/dynamic_partition_control_interface.h"
27
28namespace chromeos_update_engine {
29
David Andersona4b7ba62023-05-10 21:41:37 -070030class DynamicPartitionControlStub final
31 : public DynamicPartitionControlInterface {
Yifan Hongdaac7322019-11-07 10:48:26 -080032 public:
33 FeatureFlag GetDynamicPartitionsFeatureFlag() override;
34 FeatureFlag GetVirtualAbFeatureFlag() override;
Kelvin Zhangda1b3142020-09-24 17:09:02 -040035 FeatureFlag GetVirtualAbCompressionFeatureFlag() override;
Kelvin Zhang1c4b9812022-04-06 17:29:00 -070036 FeatureFlag GetVirtualAbCompressionXorFeatureFlag() override;
David Andersone35b4382022-03-08 23:18:29 -080037 FeatureFlag GetVirtualAbUserspaceSnapshotsFeatureFlag() override;
Yifan Hongf5261562020-03-10 10:28:10 -070038 bool OptimizeOperation(const std::string& partition_name,
39 const InstallOperation& operation,
40 InstallOperation* optimized) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080041 void Cleanup() override;
42 bool PreparePartitionsForUpdate(uint32_t source_slot,
43 uint32_t target_slot,
44 const DeltaArchiveManifest& manifest,
Yifan Hongf033ecb2020-01-07 18:13:56 -080045 bool update,
Daniel Zhengeede4c82023-06-13 11:21:06 -070046 uint64_t* required_size,
47 ErrorCode* error = nullptr) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080048
Yifan Hong7b3910a2020-03-24 17:47:32 -070049 bool FinishUpdate(bool powerwash_required) override;
Yifan Hong90965502020-02-19 15:22:47 -080050 std::unique_ptr<AbstractAction> GetCleanupPreviousUpdateAction(
51 BootControlInterface* boot_control,
52 PrefsInterface* prefs,
53 CleanupPreviousUpdateActionDelegateInterface* delegate) override;
Yifan Hong6a6d0f12020-03-11 13:20:52 -070054 bool ResetUpdate(PrefsInterface* prefs) override;
Tianjie99d570d2020-06-04 14:57:19 -070055
56 bool ListDynamicPartitionsForSlot(
Tianjie3a55fc22021-02-13 16:02:22 -080057 uint32_t slot,
58 uint32_t current_slot,
59 std::vector<std::string>* partitions) override;
Tianjie99d570d2020-06-04 14:57:19 -070060 bool GetDeviceDir(std::string* path) override;
Tianjie24f96092020-06-30 12:26:25 -070061
62 bool VerifyExtentsForUntouchedPartitions(
63 uint32_t source_slot,
64 uint32_t target_slot,
65 const std::vector<std::string>& partitions) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080066
David Andersona4b7ba62023-05-10 21:41:37 -070067 std::unique_ptr<android::snapshot::ICowWriter> OpenCowWriter(
Kelvin Zhang34618522020-09-28 09:21:02 -040068 const std::string& unsuffixed_partition_name,
69 const std::optional<std::string>&,
David Andersona4b7ba62023-05-10 21:41:37 -070070 std::optional<uint64_t> label) override;
Kelvin Zhang21a49912021-03-12 14:28:33 -050071
Kelvin Zhang1a0ed712022-01-26 16:09:05 -080072 std::unique_ptr<FileDescriptor> OpenCowFd(
73 const std::string& unsuffixed_partition_name,
74 const std::optional<std::string>&,
75 bool is_append = false) override {
Kelvin Zhang21a49912021-03-12 14:28:33 -050076 return nullptr;
77 }
Kelvin Zhang9d87d6d2020-10-23 17:03:59 -040078
79 bool MapAllPartitions() override;
80 bool UnmapAllPartitions() override;
Kelvin Zhangeb9de162020-11-16 15:47:28 -050081
Kelvin Zhangebd115e2021-03-08 16:10:25 -050082 bool IsDynamicPartition(const std::string& part_name, uint32_t slot) override;
Yifan Hongb0cbd392021-02-04 11:11:45 -080083 bool UpdateUsesSnapshotCompression() override;
Kelvin Zhang34618522020-09-28 09:21:02 -040084};
Yifan Hongdaac7322019-11-07 10:48:26 -080085} // namespace chromeos_update_engine
86
87#endif // UPDATE_ENGINE_COMMON_DYNAMIC_PARTITION_CONTROL_STUB_H_