Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12690f29 authored by Jeremy Meyer's avatar Jeremy Meyer Committed by Automerger Merge Worker
Browse files

Merge "Update how flag read only status is passed to aapt2" into main am: 5494b51e am: 99f73943

parents 001cdf5d 99f73943
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -137,22 +137,25 @@ bool ParseFeatureFlagsParameter(StringPiece arg, android::IDiagnostics* diag,
      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;
      }
    }
+4 −4
Original line number Diff line number Diff line
@@ -383,7 +383,7 @@ TEST(UtilTest, ParseFeatureFlagsParameter_InvalidValue) {
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_DuplicateFlag) {
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})));