blob: 4236051dfd9a6c88fddab6dbd9fd22eb876b620d [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
Kelvin Zhang1c4b9812022-04-06 17:29:00 -070030class DynamicPartitionControlStub final : public DynamicPartitionControlInterface {
Yifan Hongdaac7322019-11-07 10:48:26 -080031 public:
32 FeatureFlag GetDynamicPartitionsFeatureFlag() override;
33 FeatureFlag GetVirtualAbFeatureFlag() override;
Kelvin Zhangda1b3142020-09-24 17:09:02 -040034 FeatureFlag GetVirtualAbCompressionFeatureFlag() override;
Kelvin Zhang1c4b9812022-04-06 17:29:00 -070035 FeatureFlag GetVirtualAbCompressionXorFeatureFlag() override;
David Andersone35b4382022-03-08 23:18:29 -080036 FeatureFlag GetVirtualAbUserspaceSnapshotsFeatureFlag() override;
Yifan Hongf5261562020-03-10 10:28:10 -070037 bool OptimizeOperation(const std::string& partition_name,
38 const InstallOperation& operation,
39 InstallOperation* optimized) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080040 void Cleanup() override;
41 bool PreparePartitionsForUpdate(uint32_t source_slot,
42 uint32_t target_slot,
43 const DeltaArchiveManifest& manifest,
Yifan Hongf033ecb2020-01-07 18:13:56 -080044 bool update,
45 uint64_t* required_size) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080046
Yifan Hong7b3910a2020-03-24 17:47:32 -070047 bool FinishUpdate(bool powerwash_required) override;
Yifan Hong90965502020-02-19 15:22:47 -080048 std::unique_ptr<AbstractAction> GetCleanupPreviousUpdateAction(
49 BootControlInterface* boot_control,
50 PrefsInterface* prefs,
51 CleanupPreviousUpdateActionDelegateInterface* delegate) override;
Yifan Hong6a6d0f12020-03-11 13:20:52 -070052 bool ResetUpdate(PrefsInterface* prefs) override;
Tianjie99d570d2020-06-04 14:57:19 -070053
54 bool ListDynamicPartitionsForSlot(
Tianjie3a55fc22021-02-13 16:02:22 -080055 uint32_t slot,
56 uint32_t current_slot,
57 std::vector<std::string>* partitions) override;
Tianjie99d570d2020-06-04 14:57:19 -070058 bool GetDeviceDir(std::string* path) override;
Tianjie24f96092020-06-30 12:26:25 -070059
60 bool VerifyExtentsForUntouchedPartitions(
61 uint32_t source_slot,
62 uint32_t target_slot,
63 const std::vector<std::string>& partitions) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080064
Kelvin Zhang34618522020-09-28 09:21:02 -040065 std::unique_ptr<android::snapshot::ISnapshotWriter> OpenCowWriter(
66 const std::string& unsuffixed_partition_name,
67 const std::optional<std::string>&,
68 bool is_append) override;
Kelvin Zhang21a49912021-03-12 14:28:33 -050069
Kelvin Zhang1a0ed712022-01-26 16:09:05 -080070 std::unique_ptr<FileDescriptor> OpenCowFd(
71 const std::string& unsuffixed_partition_name,
72 const std::optional<std::string>&,
73 bool is_append = false) override {
Kelvin Zhang21a49912021-03-12 14:28:33 -050074 return nullptr;
75 }
Kelvin Zhang9d87d6d2020-10-23 17:03:59 -040076
77 bool MapAllPartitions() override;
78 bool UnmapAllPartitions() override;
Kelvin Zhangeb9de162020-11-16 15:47:28 -050079
Kelvin Zhangebd115e2021-03-08 16:10:25 -050080 bool IsDynamicPartition(const std::string& part_name, uint32_t slot) override;
Yifan Hongb0cbd392021-02-04 11:11:45 -080081 bool UpdateUsesSnapshotCompression() override;
Kelvin Zhang34618522020-09-28 09:21:02 -040082};
Yifan Hongdaac7322019-11-07 10:48:26 -080083} // namespace chromeos_update_engine
84
85#endif // UPDATE_ENGINE_COMMON_DYNAMIC_PARTITION_CONTROL_STUB_H_