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

Commit 356feb53 authored by Ryan Mitchell's avatar Ryan Mitchell Committed by Android (Google) Code Review
Browse files

Merge "AAPT: Modified StringPool uniqueness detection" into pi-dev

parents 1c70ecb4 35ecb89a
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -172,9 +172,10 @@ StringPool::Ref StringPool::MakeRef(const StringPiece& str, const Context& conte
StringPool::Ref StringPool::MakeRefImpl(const StringPiece& str, const Context& context,
                                        bool unique) {
  if (unique) {
    auto iter = indexed_strings_.find(str);
    if (iter != std::end(indexed_strings_)) {
      return Ref(iter->second);
    for (auto& indexed_str : indexed_strings_) {
      if (str == indexed_str.first && context.priority == indexed_str.second->context.priority) {
        return Ref(indexed_str.second);
      }
    }
  }

+11 −1
Original line number Diff line number Diff line
@@ -61,6 +61,17 @@ TEST(StringPoolTest, DoNotInsertNewDuplicateString) {
  EXPECT_THAT(pool.size(), Eq(1u));
}

TEST(StringPoolTest, DoNotDedupeSameStringDifferentPriority) {
  StringPool pool;

  StringPool::Ref ref_a = pool.MakeRef("wut", StringPool::Context(1));
  StringPool::Ref ref_b = pool.MakeRef("wut", StringPool::Context(2));

  EXPECT_THAT(*ref_a, Eq("wut"));
  EXPECT_THAT(*ref_b, Eq("wut"));
  EXPECT_THAT(pool.size(), Eq(2u));
}

TEST(StringPoolTest, MaintainInsertionOrderIndex) {
  StringPool pool;

@@ -292,7 +303,6 @@ TEST(StringPoolTest, Flatten) {
  }
}


TEST(StringPoolTest, MaxEncodingLength) {
  StdErrDiagnostics diag;
  using namespace android;  // For NO_ERROR on Windows.