summaryrefslogtreecommitdiff
path: root/tools/aapt2/format/binary/TableFlattener_test.cpp
diff options
context:
space:
mode:
authorRyan Mitchell <rtmitchell@google.com>2018-11-16 11:21:41 -0800
committerRyan Mitchell <rtmitchell@google.com>2018-12-11 13:48:45 -0800
commit1bb1fe068a7e719711963c3cf3a50209e083a17f (patch)
tree70a6d9fbaa6e7f03626b92d345f73b48fcc3fa4a /tools/aapt2/format/binary/TableFlattener_test.cpp
parentc622083df99a87afef8348dd8e4bdfecf3050d94 (diff)
Refactor policy parsing
This change removes the ability for an overlayable resource to be defined in multiple policy blocks within the same overlayable. This change also changes aapt2 to use a bit mask to keep track of the parsed policies. Bug: 110869880 Bug: 120298168 Test: aapt2_tests Change-Id: Ie26cd913f94a16c0b312f222bccfa48f62feceaa
Diffstat (limited to 'tools/aapt2/format/binary/TableFlattener_test.cpp')
-rw-r--r--tools/aapt2/format/binary/TableFlattener_test.cpp103
1 files changed, 48 insertions, 55 deletions
diff --git a/tools/aapt2/format/binary/TableFlattener_test.cpp b/tools/aapt2/format/binary/TableFlattener_test.cpp
index 410efbe83b1b..e99ab1f37761 100644
--- a/tools/aapt2/format/binary/TableFlattener_test.cpp
+++ b/tools/aapt2/format/binary/TableFlattener_test.cpp
@@ -628,14 +628,17 @@ TEST_F(TableFlattenerTest, ObfuscatingResourceNamesWithWhitelistSucceeds) {
}
TEST_F(TableFlattenerTest, FlattenOverlayable) {
+ Overlayable overlayable{};
+ overlayable.policies |= Overlayable::Policy::kProduct;
+ overlayable.policies |= Overlayable::Policy::kSystem;
+ overlayable.policies |= Overlayable::Policy::kVendor;
+
std::string name = "com.app.test:integer/overlayable";
std::unique_ptr<ResourceTable> table =
test::ResourceTableBuilder()
.SetPackageId("com.app.test", 0x7f)
.AddSimple(name, ResourceId(0x7f020000))
- .AddOverlayable(name, Overlayable::Policy::kProduct)
- .AddOverlayable(name, Overlayable::Policy::kSystem)
- .AddOverlayable(name, Overlayable::Policy::kVendor)
+ .SetOverlayable(name, overlayable)
.Build();
ResourceTable output_table;
@@ -644,39 +647,45 @@ TEST_F(TableFlattenerTest, FlattenOverlayable) {
auto search_result = output_table.FindResource(test::ParseNameOrDie(name));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- EXPECT_EQ(search_result.value().entry->overlayable_declarations.size(), 3);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[0].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[0].policy,
- Overlayable::Policy::kSystem);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[1].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[1].policy,
- Overlayable::Policy::kVendor);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[2].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[2].policy,
- Overlayable::Policy::kProduct);
+ ASSERT_TRUE(search_result.value().entry->overlayable);
+ Overlayable& result_overlayable = search_result.value().entry->overlayable.value();
+ EXPECT_EQ(result_overlayable.policies, Overlayable::Policy::kSystem
+ | Overlayable::Policy::kVendor
+ | Overlayable::Policy::kProduct);
}
TEST_F(TableFlattenerTest, FlattenMultipleOverlayablePolicies) {
std::string name_zero = "com.app.test:integer/overlayable_zero";
+ Overlayable overlayable_zero{};
+ overlayable_zero.policies |= Overlayable::Policy::kProduct;
+ overlayable_zero.policies |= Overlayable::Policy::kSystem;
+ overlayable_zero.policies |= Overlayable::Policy::kProductServices;
+
std::string name_one = "com.app.test:integer/overlayable_one";
+ Overlayable overlayable_one{};
+ overlayable_one.policies |= Overlayable::Policy::kPublic;
+ overlayable_one.policies |= Overlayable::Policy::kProductServices;
+
std::string name_two = "com.app.test:integer/overlayable_two";
+ Overlayable overlayable_two{};
+ overlayable_two.policies |= Overlayable::Policy::kProduct;
+ overlayable_two.policies |= Overlayable::Policy::kSystem;
+ overlayable_two.policies |= Overlayable::Policy::kVendor;
+
std::string name_three = "com.app.test:integer/overlayable_three";
+ Overlayable overlayable_three{};
+
std::unique_ptr<ResourceTable> table =
test::ResourceTableBuilder()
.SetPackageId("com.app.test", 0x7f)
.AddSimple(name_zero, ResourceId(0x7f020000))
- .AddOverlayable(name_zero, Overlayable::Policy::kProduct)
- .AddOverlayable(name_zero, Overlayable::Policy::kSystem)
- .AddOverlayable(name_zero, Overlayable::Policy::kProductServices)
+ .SetOverlayable(name_zero, overlayable_zero)
.AddSimple(name_one, ResourceId(0x7f020001))
- .AddOverlayable(name_one, Overlayable::Policy::kPublic)
- .AddOverlayable(name_one, Overlayable::Policy::kSystem)
+ .SetOverlayable(name_one, overlayable_one)
.AddSimple(name_two, ResourceId(0x7f020002))
- .AddOverlayable(name_two, Overlayable::Policy::kProduct)
- .AddOverlayable(name_two, Overlayable::Policy::kSystem)
- .AddOverlayable(name_two, Overlayable::Policy::kProductServices)
+ .SetOverlayable(name_two, overlayable_two)
.AddSimple(name_three, ResourceId(0x7f020003))
- .AddOverlayable(name_three, {})
+ .SetOverlayable(name_three, overlayable_three)
.Build();
ResourceTable output_table;
@@ -685,51 +694,35 @@ TEST_F(TableFlattenerTest, FlattenMultipleOverlayablePolicies) {
auto search_result = output_table.FindResource(test::ParseNameOrDie(name_zero));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- EXPECT_EQ(search_result.value().entry->overlayable_declarations.size(), 3);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[0].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[0].policy,
- Overlayable::Policy::kSystem);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[1].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[1].policy,
- Overlayable::Policy::kProduct);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[2].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[2].policy,
- Overlayable::Policy::kProductServices);
+ ASSERT_TRUE(search_result.value().entry->overlayable);
+ Overlayable& result_overlayable = search_result.value().entry->overlayable.value();
+ EXPECT_EQ(result_overlayable.policies, Overlayable::Policy::kSystem
+ | Overlayable::Policy::kProduct
+ | Overlayable::Policy::kProductServices);
search_result = output_table.FindResource(test::ParseNameOrDie(name_one));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- EXPECT_EQ(search_result.value().entry->overlayable_declarations.size(), 2);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[0].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[0].policy,
- Overlayable::Policy::kPublic);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[1].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[1].policy,
- Overlayable::Policy::kSystem);
+ ASSERT_TRUE(search_result.value().entry->overlayable);
+ result_overlayable = search_result.value().entry->overlayable.value();
+ EXPECT_EQ(result_overlayable.policies, Overlayable::Policy::kPublic
+ | Overlayable::Policy::kProductServices);
search_result = output_table.FindResource(test::ParseNameOrDie(name_two));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- EXPECT_EQ(search_result.value().entry->overlayable_declarations.size(), 3);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[0].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[0].policy,
- Overlayable::Policy::kSystem);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[1].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[1].policy,
- Overlayable::Policy::kProduct);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[2].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[2].policy,
- Overlayable::Policy::kProductServices);
+ ASSERT_TRUE(search_result.value().entry->overlayable);
+ result_overlayable = search_result.value().entry->overlayable.value();
+ EXPECT_EQ(result_overlayable.policies, Overlayable::Policy::kSystem
+ | Overlayable::Policy::kProduct
+ | Overlayable::Policy::kVendor);
search_result = output_table.FindResource(test::ParseNameOrDie(name_three));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- EXPECT_EQ(search_result.value().entry->overlayable_declarations.size(), 1);
- EXPECT_TRUE(search_result.value().entry->overlayable_declarations[0].policy);
- EXPECT_EQ(search_result.value().entry->overlayable_declarations[0].policy,
- Overlayable::Policy::kPublic);
-
+ ASSERT_TRUE(search_result.value().entry->overlayable);
+ result_overlayable = search_result.value().entry->overlayable.value();
+ EXPECT_EQ(result_overlayable.policies, Overlayable::Policy::kPublic);
}
-
} // namespace aapt