blob: 15137d2c41fe3a2ec6d298773679cb09d558350c [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;
Yifan Hongf5261562020-03-10 10:28:10 -070036 bool OptimizeOperation(const std::string& partition_name,
37 const InstallOperation& operation,
38 InstallOperation* optimized) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080039 void Cleanup() override;
40 bool PreparePartitionsForUpdate(uint32_t source_slot,
41 uint32_t target_slot,
42 const DeltaArchiveManifest& manifest,
Yifan Hongf033ecb2020-01-07 18:13:56 -080043 bool update,
44 uint64_t* required_size) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080045
Yifan Hong7b3910a2020-03-24 17:47:32 -070046 bool FinishUpdate(bool powerwash_required) override;
Yifan Hong90965502020-02-19 15:22:47 -080047 std::unique_ptr<AbstractAction> GetCleanupPreviousUpdateAction(
48 BootControlInterface* boot_control,
49 PrefsInterface* prefs,
50 CleanupPreviousUpdateActionDelegateInterface* delegate) override;
Yifan Hong6a6d0f12020-03-11 13:20:52 -070051 bool ResetUpdate(PrefsInterface* prefs) override;
Tianjie99d570d2020-06-04 14:57:19 -070052
53 bool ListDynamicPartitionsForSlot(
Tianjie3a55fc22021-02-13 16:02:22 -080054 uint32_t slot,
55 uint32_t current_slot,
56 std::vector<std::string>* partitions) override;
Tianjie99d570d2020-06-04 14:57:19 -070057 bool GetDeviceDir(std::string* path) override;
Tianjie24f96092020-06-30 12:26:25 -070058
59 bool VerifyExtentsForUntouchedPartitions(
60 uint32_t source_slot,
61 uint32_t target_slot,
62 const std::vector<std::string>& partitions) override;
Yifan Hongdaac7322019-11-07 10:48:26 -080063
Kelvin Zhang34618522020-09-28 09:21:02 -040064 std::unique_ptr<android::snapshot::ISnapshotWriter> OpenCowWriter(
65 const std::string& unsuffixed_partition_name,
66 const std::optional<std::string>&,
67 bool is_append) override;
Kelvin Zhang21a49912021-03-12 14:28:33 -050068
Kelvin Zhang1a0ed712022-01-26 16:09:05 -080069 std::unique_ptr<FileDescriptor> OpenCowFd(
70 const std::string& unsuffixed_partition_name,
71 const std::optional<std::string>&,
72 bool is_append = false) override {
Kelvin Zhang21a49912021-03-12 14:28:33 -050073 return nullptr;
74 }
Kelvin Zhang9d87d6d2020-10-23 17:03:59 -040075
76 bool MapAllPartitions() override;
77 bool UnmapAllPartitions() override;
Kelvin Zhangeb9de162020-11-16 15:47:28 -050078
Kelvin Zhangebd115e2021-03-08 16:10:25 -050079 bool IsDynamicPartition(const std::string& part_name, uint32_t slot) override;
Yifan Hongb0cbd392021-02-04 11:11:45 -080080 bool UpdateUsesSnapshotCompression() override;
Kelvin Zhang34618522020-09-28 09:21:02 -040081};
Yifan Hongdaac7322019-11-07 10:48:26 -080082} // namespace chromeos_update_engine
83
84#endif // UPDATE_ENGINE_COMMON_DYNAMIC_PARTITION_CONTROL_STUB_H_