diff options
author | Ryan Mitchell <rtmitchell@google.com> | 2020-09-29 17:22:52 -0700 |
---|---|---|
committer | Ryan Mitchell <rtmitchell@google.com> | 2020-10-14 14:52:52 -0700 |
commit | bf1f45b071bd2fb28cbea7e7cea86cd2e4944a7c (patch) | |
tree | 81521006b59c4e16a7b593f0fe123be5f2f54c0c /cmds/idmap2/tests/BinaryStreamVisitorTests.cpp | |
parent | 0f942f99cac4f5f61b40847d20ecb3a94c96c843 (diff) |
Remove malloc/free for inline overlay values
Remove malloc/free of android::ResTable_entry for inline overlay
values.
Add `target_entry_inline` to the idmap format to encode inline overlay
values separate from direct mapping of target resource to overlay
resource. This reduces the number of bytes needed to represent a direct
mapping of target resource to overlay resource from 9 bytes to 8 bytes
per entry.
Fixed all idmap alignment issues that required the framework to use
"#pragma pack(push, 1)" when loading idmaps.
Bug: 170341022
Test: idmap2_tests and libandroidfw_tests
Change-Id: Iab4d3902508f02773464724913e0ee966e3689e4
Diffstat (limited to 'cmds/idmap2/tests/BinaryStreamVisitorTests.cpp')
-rw-r--r-- | cmds/idmap2/tests/BinaryStreamVisitorTests.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp b/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp index 5fea7bcdaac5..c3a3e0ba9047 100644 --- a/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp +++ b/cmds/idmap2/tests/BinaryStreamVisitorTests.cpp @@ -72,13 +72,20 @@ TEST(BinaryStreamVisitorTests, CreateBinaryStreamViaBinaryStreamVisitor) { const auto& target_entries2 = data2->GetTargetEntries(); ASSERT_EQ(target_entries1.size(), target_entries2.size()); ASSERT_EQ(target_entries1[0].target_id, target_entries2[0].target_id); - ASSERT_EQ(target_entries1[0].data_value, target_entries2[0].data_value); + ASSERT_EQ(target_entries1[0].overlay_id, target_entries2[0].overlay_id); ASSERT_EQ(target_entries1[1].target_id, target_entries2[1].target_id); - ASSERT_EQ(target_entries1[1].data_value, target_entries2[1].data_value); + ASSERT_EQ(target_entries1[1].overlay_id, target_entries2[1].overlay_id); ASSERT_EQ(target_entries1[2].target_id, target_entries2[2].target_id); - ASSERT_EQ(target_entries1[2].data_value, target_entries2[2].data_value); + ASSERT_EQ(target_entries1[2].overlay_id, target_entries2[2].overlay_id); + + const auto& target_inline_entries1 = data1->GetTargetInlineEntries(); + const auto& target_inline_entries2 = data2->GetTargetInlineEntries(); + ASSERT_EQ(target_inline_entries1.size(), target_inline_entries2.size()); + ASSERT_EQ(target_inline_entries1[0].target_id, target_inline_entries2[0].target_id); + ASSERT_EQ(target_inline_entries1[0].value.data_type, target_inline_entries2[0].value.data_type); + ASSERT_EQ(target_inline_entries1[0].value.data_value, target_inline_entries2[0].value.data_value); const auto& overlay_entries1 = data1->GetOverlayEntries(); const auto& overlay_entries2 = data2->GetOverlayEntries(); |