Update how flag read only status is passed to aapt2
Now in addition to name:ro we also support name:READ_ONLY and
name:READ_WRITE
Test: Automatic
Bug: atest 344979955
Flag: EXEMPT Aconfig not supported on host tools
Change-Id: I0b581ac250f36b209d5151d0caa0a5c3c2d311cc
diff --git a/tools/aapt2/cmd/Util.cpp b/tools/aapt2/cmd/Util.cpp
index e839fc1..7739171 100644
--- a/tools/aapt2/cmd/Util.cpp
+++ b/tools/aapt2/cmd/Util.cpp
@@ -137,22 +137,25 @@
diag->Error(android::DiagMessage() << "No name given for one or more flags in: " << arg);
return false;
}
+
std::vector<std::string> name_parts = util::Split(flag_name, ':');
if (name_parts.size() > 2) {
diag->Error(android::DiagMessage()
<< "Invalid feature flag and optional value '" << flag_and_value
- << "'. Must be in the format 'flag_name[:ro][=true|false]");
+ << "'. Must be in the format 'flag_name[:READ_ONLY|READ_WRITE][=true|false]");
return false;
}
flag_name = name_parts[0];
bool read_only = false;
if (name_parts.size() == 2) {
- if (name_parts[1] == "ro") {
+ if (name_parts[1] == "ro" || name_parts[1] == "READ_ONLY") {
read_only = true;
+ } else if (name_parts[1] == "READ_WRITE") {
+ read_only = false;
} else {
diag->Error(android::DiagMessage()
<< "Invalid feature flag and optional value '" << flag_and_value
- << "'. Must be in the format 'flag_name[:ro][=true|false]");
+ << "'. Must be in the format 'flag_name[:READ_ONLY|READ_WRITE][=true|false]");
return false;
}
}
diff --git a/tools/aapt2/cmd/Util_test.cpp b/tools/aapt2/cmd/Util_test.cpp
index 35bc637..7818340 100644
--- a/tools/aapt2/cmd/Util_test.cpp
+++ b/tools/aapt2/cmd/Util_test.cpp
@@ -383,7 +383,7 @@
TEST(UtilTest, ParseFeatureFlagsParameter_DuplicateFlag) {
auto diagnostics = test::ContextBuilder().Build()->GetDiagnostics();
FeatureFlagValues feature_flag_values;
- ASSERT_TRUE(ParseFeatureFlagsParameter("foo=true,bar=true,foo:ro=false", diagnostics,
+ ASSERT_TRUE(ParseFeatureFlagsParameter("foo=true,bar:READ_WRITE=true,foo:ro=false", diagnostics,
&feature_flag_values));
EXPECT_THAT(
feature_flag_values,
@@ -394,11 +394,11 @@
TEST(UtilTest, ParseFeatureFlagsParameter_Valid) {
auto diagnostics = test::ContextBuilder().Build()->GetDiagnostics();
FeatureFlagValues feature_flag_values;
- ASSERT_TRUE(ParseFeatureFlagsParameter("foo= true, bar:ro =FALSE,baz=, quux", diagnostics,
- &feature_flag_values));
+ ASSERT_TRUE(ParseFeatureFlagsParameter("foo:READ_ONLY= true, bar:ro =FALSE,baz:READ_WRITE=, quux",
+ diagnostics, &feature_flag_values));
EXPECT_THAT(
feature_flag_values,
- UnorderedElementsAre(Pair("foo", FeatureFlagProperties{false, std::optional<bool>(true)}),
+ UnorderedElementsAre(Pair("foo", FeatureFlagProperties{true, std::optional<bool>(true)}),
Pair("bar", FeatureFlagProperties{true, std::optional<bool>(false)}),
Pair("baz", FeatureFlagProperties{false, std::nullopt}),
Pair("quux", FeatureFlagProperties{false, std::nullopt})));