Skip to content

Commit 413d572

Browse files
author
Yifan Hong
committed
DynamicPartitionsControl: Add Virtual A/B feature flag.
Test: unittest Bug: 138816109 Change-Id: I7ae65ba0bf36a6ca5085bc4ec2c46245288b4703
1 parent 21030c1 commit 413d572

6 files changed

+16
-0
lines changed

boot_control_android_unittest.cc

+2
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class BootControlAndroidTest : public ::testing::Test {
6262

6363
ON_CALL(dynamicControl(), GetDynamicPartitionsFeatureFlag())
6464
.WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
65+
ON_CALL(dynamicControl(), GetVirtualAbFeatureFlag())
66+
.WillByDefault(Return(FeatureFlag(FeatureFlag::Value::NONE)));
6567
ON_CALL(dynamicControl(), DeviceExists(_)).WillByDefault(Return(true));
6668
ON_CALL(dynamicControl(), GetDeviceDir(_))
6769
.WillByDefault(Invoke([](auto path) {

dynamic_partition_control_android.cc

+6
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ using PartitionMetadata = BootControlInterface::PartitionMetadata;
5353
constexpr char kUseDynamicPartitions[] = "ro.boot.dynamic_partitions";
5454
constexpr char kRetrfoitDynamicPartitions[] =
5555
"ro.boot.dynamic_partitions_retrofit";
56+
constexpr char kVirtualAbEnabled[] = "ro.virtual_ab.enabled";
57+
constexpr char kVirtualAbRetrofit[] = "ro.virtual_ab.retrofit";
5658
constexpr uint64_t kMapTimeoutMillis = 1000;
5759

5860
DynamicPartitionControlAndroid::~DynamicPartitionControlAndroid() {
@@ -81,6 +83,10 @@ FeatureFlag DynamicPartitionControlAndroid::GetDynamicPartitionsFeatureFlag() {
8183
return GetFeatureFlag(kUseDynamicPartitions, kRetrfoitDynamicPartitions);
8284
}
8385

86+
FeatureFlag DynamicPartitionControlAndroid::GetVirtualAbFeatureFlag() {
87+
return GetFeatureFlag(kVirtualAbEnabled, kVirtualAbRetrofit);
88+
}
89+
8490
bool DynamicPartitionControlAndroid::MapPartitionInternal(
8591
const std::string& super_device,
8692
const std::string& target_partition_name,

dynamic_partition_control_android.h

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
3030
DynamicPartitionControlAndroid() = default;
3131
~DynamicPartitionControlAndroid();
3232
FeatureFlag GetDynamicPartitionsFeatureFlag() override;
33+
FeatureFlag GetVirtualAbFeatureFlag() override;
3334
bool MapPartitionOnDeviceMapper(const std::string& super_device,
3435
const std::string& target_partition_name,
3536
uint32_t slot,

dynamic_partition_control_android_unittest.cc

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class DynamicPartitionControlAndroidTest : public ::testing::Test {
4444

4545
ON_CALL(dynamicControl(), GetDynamicPartitionsFeatureFlag())
4646
.WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
47+
ON_CALL(dynamicControl(), GetVirtualAbFeatureFlag())
48+
.WillByDefault(Return(FeatureFlag(FeatureFlag::Value::NONE)));
4749

4850
ON_CALL(dynamicControl(), GetDeviceDir(_))
4951
.WillByDefault(Invoke([](auto path) {

dynamic_partition_control_interface.h

+3
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ class DynamicPartitionControlInterface {
5050
// NONE iff dynamic partitions is disabled on this device.
5151
virtual FeatureFlag GetDynamicPartitionsFeatureFlag() = 0;
5252

53+
// Return the feature flags of Virtual A/B on this device.
54+
virtual FeatureFlag GetVirtualAbFeatureFlag() = 0;
55+
5356
// Map logical partition on device-mapper.
5457
// |super_device| is the device path of the physical partition ("super").
5558
// |target_partition_name| is the identifier used in metadata; for example,

mock_dynamic_partition_control.h

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class MockDynamicPartitionControl : public DynamicPartitionControlInterface {
4949
uint32_t,
5050
const BootControlInterface::PartitionMetadata&));
5151
MOCK_METHOD1(GetSuperPartitionName, std::string(uint32_t));
52+
MOCK_METHOD0(GetVirtualAbFeatureFlag, FeatureFlag());
5253
};
5354

5455
class MockDynamicPartitionControlAndroid
@@ -75,6 +76,7 @@ class MockDynamicPartitionControlAndroid
7576
MOCK_METHOD1(GetDeviceDir, bool(std::string*));
7677
MOCK_METHOD0(GetDynamicPartitionsFeatureFlag, FeatureFlag());
7778
MOCK_METHOD1(GetSuperPartitionName, std::string(uint32_t));
79+
MOCK_METHOD0(GetVirtualAbFeatureFlag, FeatureFlag());
7880
};
7981

8082
} // namespace chromeos_update_engine

0 commit comments

Comments
 (0)