summaryrefslogtreecommitdiff
path: root/tools/aapt2/ResourceParser_test.cpp
diff options
context:
space:
mode:
authorRyan Mitchell <rtmitchell@google.com>2018-12-13 15:44:29 -0800
committerRyan Mitchell <rtmitchell@google.com>2018-12-13 16:05:10 -0800
commit54237ffed4e63279042084968b77cc17e13c84a8 (patch)
tree4fa2731f7d0174066653690725f68377895b0b05 /tools/aapt2/ResourceParser_test.cpp
parent066f0314793d7beac785d0bd736eb01de88c3f97 (diff)
Add actor and name parsing for overlayable
Add parsing of two overlayable attributes: name : The unnique identifying name of the overlayable set of resources actor: The component responsible for enabling and disabling overlays targeting the specified set of resources Bug: 110869880 Bug: 119390855 Test: m -j aapt2_tests Change-Id: Id42463e2b92b69034fb39cd29bc8606affb61ba7
Diffstat (limited to 'tools/aapt2/ResourceParser_test.cpp')
-rw-r--r--tools/aapt2/ResourceParser_test.cpp144
1 files changed, 89 insertions, 55 deletions
diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp
index 03e6197027cb..debca9c1e1ba 100644
--- a/tools/aapt2/ResourceParser_test.cpp
+++ b/tools/aapt2/ResourceParser_test.cpp
@@ -892,11 +892,8 @@ TEST_F(ResourceParserTest, ParsePlatformIndependentNewline) {
}
TEST_F(ResourceParserTest, ParseOverlayable) {
- std::string input = R"(<overlayable />)";
- EXPECT_TRUE(TestParse(input));
-
- input = R"(
- <overlayable>
+ std::string input = R"(
+ <overlayable name="Name" actor="overlay://theme">
<item type="string" name="foo" />
<item type="drawable" name="bar" />
</overlayable>)";
@@ -905,24 +902,35 @@ TEST_F(ResourceParserTest, ParseOverlayable) {
auto search_result = table_.FindResource(test::ParseNameOrDie("string/foo"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- EXPECT_THAT(search_result.value().entry->overlayable.value().policies,
- Eq(Overlayable::Policy::kNone));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ OverlayableItem& result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.overlayable->actor, Eq("overlay://theme"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kNone));
search_result = table_.FindResource(test::ParseNameOrDie("drawable/bar"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- EXPECT_THAT(search_result.value().entry->overlayable.value().policies,
- Eq(Overlayable::Policy::kNone));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.overlayable->actor, Eq("overlay://theme"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kNone));
}
-TEST_F(ResourceParserTest, ParseOverlayablePolicy) {
- std::string input = R"(<overlayable />)";
- EXPECT_TRUE(TestParse(input));
+TEST_F(ResourceParserTest, ParseOverlayableRequiresName) {
+ EXPECT_FALSE(TestParse(R"(<overlayable actor="overlay://theme" />)"));
+ EXPECT_TRUE(TestParse(R"(<overlayable name="Name" />)"));
+ EXPECT_TRUE(TestParse(R"(<overlayable name="Name" actor="overlay://theme" />)"));
+}
- input = R"(
- <overlayable>
+TEST_F(ResourceParserTest, ParseOverlayableBadActorFail) {
+ EXPECT_FALSE(TestParse(R"(<overlayable name="Name" actor="overley://theme" />)"));
+}
+
+TEST_F(ResourceParserTest, ParseOverlayablePolicy) {
+ std::string input = R"(
+ <overlayable name="Name">
<item type="string" name="foo" />
<policy type="product">
<item type="string" name="bar" />
@@ -945,49 +953,55 @@ TEST_F(ResourceParserTest, ParseOverlayablePolicy) {
auto search_result = table_.FindResource(test::ParseNameOrDie("string/foo"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- Overlayable& overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kNone));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ OverlayableItem result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kNone));
search_result = table_.FindResource(test::ParseNameOrDie("string/bar"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kProduct));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProduct));
search_result = table_.FindResource(test::ParseNameOrDie("string/baz"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kProductServices));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProductServices));
search_result = table_.FindResource(test::ParseNameOrDie("string/fiz"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kSystem));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kSystem));
search_result = table_.FindResource(test::ParseNameOrDie("string/fuz"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kVendor));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kVendor));
search_result = table_.FindResource(test::ParseNameOrDie("string/faz"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kPublic));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kPublic));
}
TEST_F(ResourceParserTest, ParseOverlayableBadPolicyError) {
std::string input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="illegal_policy">
<item type="string" name="foo" />
</policy>
@@ -995,7 +1009,7 @@ TEST_F(ResourceParserTest, ParseOverlayableBadPolicyError) {
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="product">
<item name="foo" />
</policy>
@@ -1003,7 +1017,7 @@ TEST_F(ResourceParserTest, ParseOverlayableBadPolicyError) {
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="vendor">
<item type="string" />
</policy>
@@ -1013,7 +1027,7 @@ TEST_F(ResourceParserTest, ParseOverlayableBadPolicyError) {
TEST_F(ResourceParserTest, ParseOverlayableMultiplePolicy) {
std::string input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="vendor|product_services">
<item type="string" name="foo" />
</policy>
@@ -1026,39 +1040,59 @@ TEST_F(ResourceParserTest, ParseOverlayableMultiplePolicy) {
auto search_result = table_.FindResource(test::ParseNameOrDie("string/foo"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- Overlayable& overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kVendor
- | Overlayable::Policy::kProductServices));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ OverlayableItem result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kVendor
+ | OverlayableItem::Policy::kProductServices));
search_result = table_.FindResource(test::ParseNameOrDie("string/bar"));
ASSERT_TRUE(search_result);
ASSERT_THAT(search_result.value().entry, NotNull());
- ASSERT_TRUE(search_result.value().entry->overlayable);
- overlayable = search_result.value().entry->overlayable.value();
- EXPECT_THAT(overlayable.policies, Eq(Overlayable::Policy::kProduct
- | Overlayable::Policy::kSystem));
+ ASSERT_TRUE(search_result.value().entry->overlayable_item);
+ result_overlayable_item = search_result.value().entry->overlayable_item.value();
+ EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name"));
+ EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProduct
+ | OverlayableItem::Policy::kSystem));
}
TEST_F(ResourceParserTest, DuplicateOverlayableIsError) {
std::string input = R"(
- <overlayable>
+ <overlayable name="Name">
+ <item type="string" name="foo" />
+ <item type="string" name="foo" />
+ </overlayable>)";
+ EXPECT_FALSE(TestParse(input));
+
+ input = R"(
+ <overlayable name="Name">
+ <item type="string" name="foo" />
+ </overlayable>
+ <overlayable name="Name">
<item type="string" name="foo" />
+ </overlayable>)";
+ EXPECT_FALSE(TestParse(input));
+
+ input = R"(
+ <overlayable name="Name">
+ <item type="string" name="foo" />
+ </overlayable>
+ <overlayable name="Other">
<item type="string" name="foo" />
</overlayable>)";
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name" actor="overlay://my.actor.one">
<item type="string" name="foo" />
</overlayable>
- <overlayable>
+ <overlayable name="Other" actor="overlay://my.actor.two">
<item type="string" name="foo" />
</overlayable>)";
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="product">
<item type="string" name="foo" />
<item type="string" name="foo" />
@@ -1067,7 +1101,7 @@ TEST_F(ResourceParserTest, DuplicateOverlayableIsError) {
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="product">
<item type="string" name="foo" />
</policy>
@@ -1076,7 +1110,7 @@ TEST_F(ResourceParserTest, DuplicateOverlayableIsError) {
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="product">
<item type="string" name="foo" />
</policy>
@@ -1087,13 +1121,13 @@ TEST_F(ResourceParserTest, DuplicateOverlayableIsError) {
EXPECT_FALSE(TestParse(input));
input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="product">
<item type="string" name="foo" />
</policy>
</overlayable>
- <overlayable>
+ <overlayable name="Name">
<policy type="product">
<item type="string" name="foo" />
</policy>
@@ -1103,7 +1137,7 @@ TEST_F(ResourceParserTest, DuplicateOverlayableIsError) {
TEST_F(ResourceParserTest, NestPolicyInOverlayableError) {
std::string input = R"(
- <overlayable>
+ <overlayable name="Name">
<policy type="vendor|product">
<policy type="product_services">
<item type="string" name="foo" />