summaryrefslogtreecommitdiff
path: root/tools/aapt2/java/JavaClassGenerator_test.cpp
diff options
context:
space:
mode:
authorClark DuVall <cduvall@google.com>2020-04-22 13:19:28 -0700
committerClark DuVall <cduvall@google.com>2020-04-22 13:19:28 -0700
commit8f51d6b876644765f86c82d45fb363db60b3ced1 (patch)
treec23e75b364e6739e92630b96b697d5dfcbb243db /tools/aapt2/java/JavaClassGenerator_test.cpp
parent61115d7d8f1bdd8c9456dd930ff077be7fd2707e (diff)
Reorder styleable attributes in shared libraries
This is a similar fix to https://googleplex-android-review.git.corp.google.com/c/platform/frameworks/base/+/10109386 but deals with styleable attributes instead of style items. Bug: 147674078 Test: JavaClassGeneratorTest.SortsDynamicAttributesAfterFrameworkAttributes Change-Id: Ida6572cf07e2b5987e9d8941cf169a37c43578c4
Diffstat (limited to 'tools/aapt2/java/JavaClassGenerator_test.cpp')
-rw-r--r--tools/aapt2/java/JavaClassGenerator_test.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tools/aapt2/java/JavaClassGenerator_test.cpp b/tools/aapt2/java/JavaClassGenerator_test.cpp
index 1e1fe4740c6b..04e20101a0dd 100644
--- a/tools/aapt2/java/JavaClassGenerator_test.cpp
+++ b/tools/aapt2/java/JavaClassGenerator_test.cpp
@@ -551,4 +551,39 @@ TEST(JavaClassGeneratorTest, OnlyGenerateRText) {
ASSERT_TRUE(generator.Generate("android", nullptr));
}
+TEST(JavaClassGeneratorTest, SortsDynamicAttributesAfterFrameworkAttributes) {
+ std::unique_ptr<ResourceTable> table =
+ test::ResourceTableBuilder()
+ .SetPackageId("android", 0x01)
+ .SetPackageId("lib", 0x00)
+ .AddValue("android:attr/framework_attr", ResourceId(0x01010000),
+ test::AttributeBuilder().Build())
+ .AddValue("lib:attr/dynamic_attr", ResourceId(0x00010000),
+ test::AttributeBuilder().Build())
+ .AddValue("lib:styleable/MyStyleable", ResourceId(0x00030000),
+ test::StyleableBuilder()
+ .AddItem("android:attr/framework_attr", ResourceId(0x01010000))
+ .AddItem("lib:attr/dynamic_attr", ResourceId(0x00010000))
+ .Build())
+ .Build();
+
+ std::unique_ptr<IAaptContext> context =
+ test::ContextBuilder()
+ .AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
+ .SetNameManglerPolicy(NameManglerPolicy{"custom"})
+ .SetCompilationPackage("custom")
+ .Build();
+ JavaClassGenerator generator(context.get(), table.get(), {});
+
+ std::string output;
+ StringOutputStream out(&output);
+ EXPECT_TRUE(generator.Generate("lib", &out));
+ out.Flush();
+
+ EXPECT_THAT(output, HasSubstr("public static final int[] MyStyleable={"));
+ EXPECT_THAT(output, HasSubstr("0x01010000, 0x00010000"));
+ EXPECT_THAT(output, HasSubstr("public static final int MyStyleable_android_framework_attr=0;"));
+ EXPECT_THAT(output, HasSubstr("public static final int MyStyleable_dynamic_attr=1;"));
+}
+
} // namespace aapt