diff options
author | Alessio Balsini <balsini@google.com> | 2019-11-26 11:46:06 +0000 |
---|---|---|
committer | Alessio Balsini <balsini@google.com> | 2019-11-27 10:01:06 +0000 |
commit | 14980e2fbb885f966c5e531b83fee7a12d92b27c (patch) | |
tree | 52409949c50352b220a1d2179756f92ba75843a9 | |
parent | d6aa91fbaaa175f38d7e14e6e84db9d9fe25d687 (diff) |
SkipInstallOperation placeholders
For some devices, some InstallOperations can be skipped during the
update process. An example is the SOURCE_COPY operation with same
source and destination locations for Virtual A/B devices.
This patch extents the DynamicPartitionControl interface with the
ShouldSkipOperation() method to query if given operation should be
skipped or not.
Bug: 141207436
Test: build
Change-Id: I94dbf1d33d531944e04cb2ffcba274106e866d5d
Signed-off-by: Alessio Balsini <balsini@google.com>
-rw-r--r-- | common/dynamic_partition_control_interface.h | 3 | ||||
-rw-r--r-- | common/dynamic_partition_control_stub.cc | 5 | ||||
-rw-r--r-- | common/dynamic_partition_control_stub.h | 1 | ||||
-rw-r--r-- | dynamic_partition_control_android.cc | 5 | ||||
-rw-r--r-- | dynamic_partition_control_android.h | 1 |
5 files changed, 15 insertions, 0 deletions
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h index b092f7a3..39daf75c 100644 --- a/common/dynamic_partition_control_interface.h +++ b/common/dynamic_partition_control_interface.h @@ -50,6 +50,9 @@ class DynamicPartitionControlInterface { // Return the feature flags of Virtual A/B on this device. virtual FeatureFlag GetVirtualAbFeatureFlag() = 0; + // Checks if the provided InstallOperation can be skipped on this device. + virtual bool ShouldSkipOperation(const InstallOperation& operation) = 0; + // Do necessary cleanups before destroying the object. virtual void Cleanup() = 0; diff --git a/common/dynamic_partition_control_stub.cc b/common/dynamic_partition_control_stub.cc index 86f75aa0..06f6b3c2 100644 --- a/common/dynamic_partition_control_stub.cc +++ b/common/dynamic_partition_control_stub.cc @@ -32,6 +32,11 @@ FeatureFlag DynamicPartitionControlStub::GetVirtualAbFeatureFlag() { return FeatureFlag(FeatureFlag::Value::NONE); } +bool DynamicPartitionControlStub::ShouldSkipOperation( + const InstallOperation& operation) { + return false; +} + void DynamicPartitionControlStub::Cleanup() {} bool DynamicPartitionControlStub::PreparePartitionsForUpdate( diff --git a/common/dynamic_partition_control_stub.h b/common/dynamic_partition_control_stub.h index e7895dee..c62758bd 100644 --- a/common/dynamic_partition_control_stub.h +++ b/common/dynamic_partition_control_stub.h @@ -29,6 +29,7 @@ class DynamicPartitionControlStub : public DynamicPartitionControlInterface { public: FeatureFlag GetDynamicPartitionsFeatureFlag() override; FeatureFlag GetVirtualAbFeatureFlag() override; + bool ShouldSkipOperation(const InstallOperation& operation) override; void Cleanup() override; bool PreparePartitionsForUpdate(uint32_t source_slot, uint32_t target_slot, diff --git a/dynamic_partition_control_android.cc b/dynamic_partition_control_android.cc index 464cdf13..c24aee90 100644 --- a/dynamic_partition_control_android.cc +++ b/dynamic_partition_control_android.cc @@ -104,6 +104,11 @@ FeatureFlag DynamicPartitionControlAndroid::GetVirtualAbFeatureFlag() { return virtual_ab_; } +bool DynamicPartitionControlAndroid::ShouldSkipOperation( + const InstallOperation& operation) { + return false; +} + bool DynamicPartitionControlAndroid::MapPartitionInternal( const std::string& super_device, const std::string& target_partition_name, diff --git a/dynamic_partition_control_android.h b/dynamic_partition_control_android.h index c1837e07..2bfbcb15 100644 --- a/dynamic_partition_control_android.h +++ b/dynamic_partition_control_android.h @@ -35,6 +35,7 @@ class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface { ~DynamicPartitionControlAndroid(); FeatureFlag GetDynamicPartitionsFeatureFlag() override; FeatureFlag GetVirtualAbFeatureFlag() override; + bool ShouldSkipOperation(const InstallOperation& operation) override; void Cleanup() override; bool PreparePartitionsForUpdate(uint32_t source_slot, |