summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessio Balsini <balsini@google.com>2019-11-26 11:46:06 +0000
committerAlessio Balsini <balsini@google.com>2019-11-27 10:01:06 +0000
commit14980e2fbb885f966c5e531b83fee7a12d92b27c (patch)
tree52409949c50352b220a1d2179756f92ba75843a9
parentd6aa91fbaaa175f38d7e14e6e84db9d9fe25d687 (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.h3
-rw-r--r--common/dynamic_partition_control_stub.cc5
-rw-r--r--common/dynamic_partition_control_stub.h1
-rw-r--r--dynamic_partition_control_android.cc5
-rw-r--r--dynamic_partition_control_android.h1
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,