History log of /frameworks/base/tools/aapt2/ResourceParser_test.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
eaf77e1d3a6ad4995ddd92a429802cffbf0f0209 26-Apr-2018 Ryan Mitchell <rtmitchell@google.com> AAPT2: Fixed id parsing error

A previous change, editied the logic for parsing ids to allow for ids to
reference other ids. This change though caused a regression that made
ids in the form '<id name="name" />' cease to parse. This changes fixes
that regression.

Bug: 78513618
Test: Updated tests in ResourceParser_test.cpp
Change-Id: I3608bb764464e951a50910be55e199c6ec575d09
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
9efbbef2e060cd5e05f5b652ba5c7aaf687f64d6 18-Apr-2018 y <rtmitchell@google.com> AAPT2: Support id reference chaining from AAPT

AAPT would allow for ids to be declared in the form:

<item name="name" type="id>@id/other</item>

@id/name should hold a reference to @id/other. When
getResources().getValue() is called on R.id.name with resolveRefs
enabled, the resuling reference should be R.id.other.

Bug: 69445910
Test: Created tests for correct parsing of id references and correct
resolving of deep references

Change-Id: Id1feb37b2565c213dc6a19b4c401906260d7fc14
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
9beaa9cfe3bd8c7c59eed053ff6ca18951c34a86 29-Mar-2018 Ryan Mitchell <rtmitchell@google.com> Changed AAPT2 to abide by AAPT resource whitespace triming.

Bug: b/74331008
Test: Created tests in ResourceParser_test.cpp
Change-Id: Id7b387692b795774cd77452ca8cf06a8447bf3be
(cherry picked from commit a04880771254f5169a1fe460ff40b565d9dceb0d)
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
2eed52ecc0c2fa3e96530e4b5556eaa82f7c2dfc 22-Feb-2018 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix styled string whitespace processing

Change styled string whitespace processing to be like AAPT's was.

Main changes:
- whitespace around tags is preserved.
- tags start exactly where they are supposed to, not off by one.

Bug: 72406283
Test: make aapt2_tests
Change-Id: I4d12728c493efd8c978e2e3d2718b56534ff52ef
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
71be70507de9cb619b644e55eda1cc181e3f7e90 13-Dec-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK

Resources can be marked as overlayable, which means they can
be overlaid by runtime resource overlays.

This change propagates this state to the final resource table that
is installed on device.

Future work:
- Have the idmap tool respect the overlayable state and ignore
entries that overlay anything else.

Bug: 64980941
Test: make aapt2_tests
Change-Id: Id45b1e141a281be2ee32a4ac3096fcf1114d523b
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
004511660671511ae88e0e837a6f92db28eadaef 03-Oct-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Define and Implement AAPT Container Format

AAPT Container Format (.apc) is a simple container that
enumerates the various intermediate files that AAPT2 generates
during the compile phase.

The format is defined in formats.md.

For now, continue using the .flat extension for the container file,
and keep making use of the .flata zip for storing multiple files.
This will allow easier integration with existing build systems and allow
the evolution of the APC format to better handle arbitrarily large
files.

Test: make aapt2_tests
Change-Id: Id7216e5b76316bdd683f0fa4eaf2d2da273ba815
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
46c4d72bf0c30d3bc2071b84e2741e404c45e2b7 23-Aug-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Add <overlayable> tag support

This doesn't actually do anything yet, but makes sure
it is not a syntax error and allows teams to start marking
their resources as overlayable.

The syntax form marking a set of resources as overlayable
looks like:

<overlayable policy="system">
<item type="string" name="foo" />
<item type="style" name="bar" />
</overlayable>

Currently, the only supported policy is "system", meaning only
the system will be able to overlay the resources. Leaving
out the policy attribute defaults to "system".

Bug: 64980941
Test: make aapt2_tests
Change-Id: Ied7a9ddae87a4a0af6a0f4d1c213bfce8a0ed612
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
4ffea040641d3b74ab04b6d2d3e78280bc893d5f 11-Aug-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Define intermediate compiled XML proto

This proto format is meant to encapsulate more information
that is specific to Android and allows for easier validation
and manipulation across tools.

Test: make aapt2_tests
Change-Id: I13bc34a460671fc0a36246be0d287a3d37d244d6
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
efeb7af13be4446ce4a511a2ca707691e9a67c1e 02-Aug-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix windows unicode path issues

Mingw64 was being difficult, so instead of defining a wmain entrypoint,
the command line parameters are parsed manually using built-in Windows
methods that support Unicode. The results are converted to UTF8 and
handled just like the rest of the linux/mac version of the code.

This also removes dependencies on std::istream in favour of a
FileInputStream which calls the appropriate unicode version of
open to read a file.

No speed regressions found on Linux or MacOS.

Bug: 62336414
Bug: 63830502
Test: manual
Change-Id: I597da51e33729ed1b98bf246e7e773337fd3fee8
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
060b53d0287f9e685fb5b49b52a864ef85315a22 29-Jul-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Ensure style strings are always first in StringPool

Move the styled strings to a separate section of the StringPool so
that sorting can never mess up the order of Styles.

Bug: 63570514
Test: make aapt2_tests
Change-Id: Id2ce1355b92be1bb31ce0daa7e54ae9b5b6c2ffe
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
549e437e14f3b92f02bd3abc7d1cd68387132ce1 28-Jun-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Iterate over UTF-8 string by codepoints

Iterating over a UTF-8 string by codepoints ensures that
unicode characters do not get sliced. Otherwise the resulting
string could contain malformed characters.

Bug: 62839202
Test: make aapt2_tests
Change-Id: Ia0c44fbceb7dcfa11e77a1a77011da0f5466e342
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
a45893a5c51cc26f1fd63ec1aa4c39f55911c85b 31-May-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Clean up tests a bit

Since the latest gtest has fixed support for
explicit bool operators, remvoe AAPT_ASSERT_* and AAPT_EXPECT_*.

Also switch to use NotNull() matchers, which are more legible.

Test: make aapt2_tests
Change-Id: Idce199ca9d567d70f7aae275fee15e04bb914c9e
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
b9f0548341f98a64a87fa35ef5f58d1daf973ca7 03-Jun-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Do not interpret %n as a format specifier in string resources

%n is a special value marking a platform independent newline and is
not to be considered a format argument.

Bug: 37132275
Test: make aapt2_tests
Change-Id: I806521e44afe20004344dee9f18ecee6cc7086ea
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
bab4ef56d7803f3a50ccfaca2729509338fcbb23 02-Jun-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Allow undefined resources (placeholders)

A resource defined like so:

<item type="drawable" name="foo" />

should be assigned the value @null.

The only exception is for <string> resources, which are given the
empty string value (since <string></string> is ambiguous). The decision
to use "" is based off the fact that old AAPT used to assign "" to all
undefined resources, even non-string ones.

Bug: 38425050
Test: make aapt2_tests
Change-Id: Ib3e0f6f83d16ddd8b279c9fd44a07a37867b85e9
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
e597d68d33c76c2b830f5497ed4ba74c5193a056 02-Jun-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Allow any value type for <item> without format attr

TO bring AAPT2 behavior in-line with AAPT, <item> has a default
format of "any", and only becomes restricted with an explicit format
attribute.

Bug: 62260121
Test: make aapt2_tests
Change-Id: Ife416f520e6c2710bb30e3ba3f2d4463794bfa06
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
4488f1c74a0f7df09f2b201f7caa228d729e8389 27-May-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix <add-resource> tag for overlays

Bug: 38355988
Test: make aapt2_tests
Change-Id: Iea8887f55f8ceb2c15bd963405fd132916173c0c
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
d5fd76a2ff78400505ade936fc36e707d69ecf72 16-May-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Respect format attr in <array> resource

Bug: 38152130
Test: make aapt2_tests
Change-Id: I84f352afb1a8fd2f329354f789aaa36c5ef88e47
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
8049f3da712ea9c3154b57ce2276c97e749d1f2c 01-Apr-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix pseudolocalization (again)

Pseudolocalization didn't properly handle spans in
strings like "<small><small>Hello</small></small>".

The spans would be identical and when doing range checks
only one of them would be updated.

Switched to a more robust way of extracting the relevant
chunks of a styled string. This uses a stack, which is more
in line with the real representation in XML.

Bug: 34088357
Test: make aapt2_tests
Change-Id: Ia4e4501713e688c96a89e26e4e2b1384f4cd3889
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
8f7c550e20a6edbc9af7bb48675afaf8bcb3783f 03-Mar-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix Plural::Equals() method

Test: make aapt2_tests
Bug: 35902437
Change-Id: I8797f89af58876f891f0b0c5cce85fd7781c4e24
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38 07-Jan-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix pseudolocalization to respect <xliff:g>

The XLIFF 'g' tag specifies content that should NOT be translated.
AAPT2's pseudolocalization process should respect it.

Bug:34064599
Test: make libandroidfw_tests
Change-Id: Ice437d7f0ff246730ee04896fd035e2d846148fb
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
86d67df8d57b9537666f9b54a9ca563779a2288b 31-Jan-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Support CtsContentTestCases build

- Add <feature-group> to ManifestFixer.
- Support <meta-data> in <instrumentation>
- Add support for <bag> and type="configVarying". Some CTS tests use this
old notation, we need to support it (even though configVarying isn't
anything supported by the framework convention).

Change-Id: I6946fa633ce513ea8437c1496db883cf27dcf6de
Test: make aapt2_tests
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
d5083f6f6b9bc76bbe64052bcec639eee752a321 17-Jan-2017 Adam Lesinski <adamlesinski@google.com> Move StringPiece to libandroidfw

libandroidfw needs to make use of StringPiece, so
move it to libandroidfw and update all code referencing
StringPiece in aapt2.

Test: make libandroidfw_tests libaapt2_tests
Change-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
ce5e56e243d262a9b65459c3bd0bb9eaadd40628 22-Oct-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Rename to match new style

Use Google3 naming style to match new
projects' and open source google projects' style.

Preferred to do this in a massive CL so as to avoid
style inconsistencies that plague legacy code bases.
This is a relatively NEW code base, may as well keep
it up to date.

Test: name/style refactor - existing tests pass
Change-Id: Ie80ecb78d46ec53efdfca2336bb57d96cbb7fb87
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
cacb28f2d60858106e2819cc7d95a65e8bda890b 19-Oct-2016 Adam Lesinski <adamlesinski@google.com> Use Google3 style guide with .clang-format

Test: style change only, builds ok
Change-Id: I885180e24cb2e7b58cfb4967c3bcb40058ce4078
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
8c3f31f022f7e094fd227ef0c2987e0846cb3e43 07-Sep-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix issue with styled string indices

Styled strings use spans to denote which part
is styled (<b>, <i>, etc). Spans are simply a range
of indices into the original string.

In Java, we use String and its internal representation, meaning
we must encode the indices using UTF16 lengths.

When the internal AAPT2 representation of strings switched to UTF8,
the indices also began to index into the UTF8 string.

This change reverts the indices to use UTF16 lengths.

Bug:31170115
Change-Id: I07b8b5b67d2542c7e0a855b601cdbd3ac4ebffb0
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
58a20a6482a56a262fd83a617482641e3a981db1 26-Jul-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Change accepted notation for resource names in tests

Previously the way to name resources in tests was to use reference
notation (@[package:][type/]name). Now we use name notation (no @).

Change-Id: I68f0a36562d89cc78c582d128f370d9556c58707
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
d0f116b619feede0cfdb647157ce5ab4d50a1c46 09-Jul-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Remove usage of u16string

For legacy reasons, we kept around the use of UTF-16 internally
in AAPT2. We don't need this and this CL removes all instances of
std::u16string and StringPiece16. The only places still needed
are when interacting with the ResTable APIs that only operate in
UTF16.

Change-Id: I492475b84bb9014fa13bf992cff447ee7a5fe588
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
e4bb9eb5af5b0899dc0921d5580220b20e15bd5a 13-Feb-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Introduce notion of 'product' to ResourceTable

This allows us to preserve the various product definitions during the compile
phase, and allows us to select the product in the link phase.

This allows compiled files to remain product-independent, so that they do not need
to be recompiled when switching targets.

Bug:25958912
Change-Id: Iaa7eed25c834b67a39cdc9be43613e8b5ab6cdd7
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
52364f7ae31716d7827ea8f8566f4a28bd30a921 11-Jan-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Variety of small fixes to get the build working

- Add option to rename package in AndroidManifest.xml
- Support default versionName and versionCode
- Accept True and False as valid booleans

Change-Id: I400e350b9dcd0fd1c197d1929144299c7823617d
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
7751afc796842bbb24bfbb19bd0fee4a7b7c8a4e 07-Jan-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix product support

Previously the default product wasn't tried if 'default' wasn't specified on the command line.
Also adds support for multiple products.

Change-Id: I1e4872b34bb8d609b6444841a4e7e4dbb3bbb76b
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
24b8ff0faf7c59323d0171cdd825ca09e712aa1e 16-Dec-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix references to private parent

Change-Id: Id4697551b6c8cb6167f562de593006ae3c6158c0
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
7ff3ee19f4b831a526baf4b928d1ac172d070d82 15-Dec-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Respect format attribute of <item> tag

An <item> is a general tag that can override certain behavior. For
instance, this is allowed:

<item name="foo" type="integer" format="float">0.4</item>

Even though without the format attribute, this would be illegal.

Change-Id: I8133ce59e14719a70d7476a1464c3f564c435289
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
a6fe345be955368a13aea76aefb4db821aad11df 10-Dec-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix overlay support

Supports the <add-resource> tag and mimics old AAPT behavior of
not allowing new resources defined unless <add-resource> was used
or --auto-add-overlay was specified.

Change-Id: I9b461137357617ade37fd7045b418b8e6450b9c4
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
a587065721053ad54e34f484868142407d59512d 21-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Verify min/max attr fields

Integers are now checked to see if they fall in the range
of min/max for the attribute they are assigned.

Change-Id: I42c435b15fd3f0bd23691c83efccce4ad5973276
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
467f171315f9c2037fcd3eb5edcfabc40671bf7b 17-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fail compiling when private symbols are referenced

Also moved some XML specific stuff into its own directory,
and refactored ReferenceLinker a bit.

Change-Id: I912247a82023c1bbf72dc191fbdaf62858cbec0c
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
fa10505ceaf9d4c41b76bb1b32f257926e96e441 07-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Accept aliases defined for external resource types

Resource types that are typically stored outside of the resource table
(like layout, xml, drawable) can only have aliases (reference to another
resource).

Change-Id: Idb768801f02bb142e5be5e438904f221499bd756
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
27afb9e8894b512b21fcca6ce142f40f1ee16cbb 07-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Add support for clearer in-progress public attributes

Before, the ID assigned to a public resource without an explicitly set id
was more difficult to figure out. It would be the next available ID.

AAPT2 introduces a new way to specify public attributes in progress.

<public-group type="attr" first-id="0x0101047f">
<public name="foo" />
<public name="bar" />
...
</public-group>

The IDs assigned to each resource is auto-incremented starting from `first-id`.
This also keeps resource's with the same type grouped together so that
the auto-incrementing nature is evident.

Also, due to how AAPT2 was implemented, this is required :P

Change-Id: I95ea92ad0405e87ed0b1766879bb2f1d9d0b636e
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
9f22204c3a9ddac4f92573c9ab098e6cf3ed1cb4 04-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix small issue with detecting translatable resources

Change-Id: Idd21b5de4d20be06c6f8c8eb5a22ccd68afc4927
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
ca5638fd85098c3d0a699492751043545f75553a 21-Oct-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Support generating Manifest.java

This includes comments from AndroidManifest.xml.

Change-Id: I412d9ecb12bad20a49a683d6b3bea4a0be1235ae
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
e78fd617ec60139a973a01925fa7adad31febb39 22-Oct-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Move comments and source into Value

Values are closely related to where they were defined, so
this information should live inside the Value.

This also enables comments to be attached to nested Values.

Change-Id: Ic7481b5a5f26d0ef248d638e2e29252f88154581
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
9ba47d813075fcb05c5e1532c137c93b394631cb 13-Oct-2015 Adam Lesinski <adamlesinski@google.com> Filter products during compile phase

Unfortunately there is no good way to deal with products in the link phase.
Products are like preprocessor defines in that they are processed early
and change the composition of the compiled unit.

Change-Id: I6d5e15ef60d29df8e83e059ba857c09333993779
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
1ab598f46c3ff520a67f9d80194847741f3467ab 14-Aug-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Separate out the various steps

An early refactor. Some ideas became clearer as
development continued. Now the various phases are much
clearer and more easily reusable.

Also added a ton of tests!

Change-Id: Ic8f0a70c8222370352e63533b329c40457c0903e
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
dfa5e0705ff82f15e228ba076bc192893bcbe118 13-May-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix issue where @null was wrongly encoded

@null must be encoded as TYPE_REFERENCE with a value of
0. TYPE_NULL is used by the runtime as a placeholder when resolving
style attributes. If we set a style attribute to TYPE_NULL,
the runtime will throw. The runtime will convert a TYPE_REFERENCE
with value 0 to a proper null value.

Change-Id: Id983ca7e1fbee3124dddafe32f1b5741b824225b
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
bdaa092a193d8ddccbd9ad8434be97878e6ded59 09-May-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: inferred style parent processing

Change-Id: I8fbc4feef16b6039cf4c526fcfb767dc75a9c131
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
24aad163bc88cb10d2275385e9afc3de7f342d65 25-Apr-2015 Adam Lesinski <adamlesinski@google.com> Add namespace handling in attribute values

Previously, you could only reference namespace prefixes in attribute names:

<View xmlns:appcompat="http://schemas.android.com/apk/res/android.support.v7.appcompat"
appcompat:name="hey"
...

Now you can also reference them in resource names within an attribute value:

...
android:text="@appcompat:string/confirm"
...

Which will be treated as "@android.support.v7.appcompat:string/confirm".

Change-Id: Ib076e867a990c80cf877a704eb77cd1ef0b23b52
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
769de98f2dd41bfe39a1c9f76aefd1ad58942733 11-Apr-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Add library support

Change-Id: I307f56d9631784ab29ee4156d94886f9b2f25b30
/frameworks/base/tools/aapt2/ResourceParser_test.cpp
6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb 14-Nov-2014 Adam Lesinski <adamlesinski@google.com> AAPT2

First checking of AAPT2. The individual phases of AAPT2 work, but there
are some missing pieces.

For early testing we are missing:
- Need to properly mark file references and include them in package
- Need to package into zip

Final AAPT for apps we are missing:
- Need to crush PNGs
- Need to parse 9-patches
- Need to validate all of AndroidManifest.xml
- Need to write align method to align resource tables for splits.

Final AAPT for apps + system we are missing:
- Need to handle overlays
- Need to store comments for R file
- Need to handle --shared-lib (dynamic references too).

New AAPT features coming:
- Need to import compiled libraries
- Name mangling
- R file generation for library code

Change-Id: I95f8a63581b81a1f424ae6fb2c373c883b72c18d
/frameworks/base/tools/aapt2/ResourceParser_test.cpp