- Don't crash when Resources.get<Type>Array() is called.
- If the IDE supports it, actually return the value.
- Add tests for getArray.
- Update test app to latest gradle plugin version.
- Switch to using AppTheme for tests, since the tests depend on some
custom theme attributes. The AppTheme now inherits from
Material.Light.DarkActionBar, so other tests should be unaffected.
Depends on a newer version of sdk-common, which fixes the parsing of
array resource in value files.
Bug: 12372031
Change-Id: I313b61511e98ac1402d75056ebfdeeb005ebb96d
Switch from using tools nullity annotations (com.android.annotations)
to android framework annotations (android.annotation).
A new sdk-common prebuilt is required for LayoutLib tests. The new
sdk-common requires an updated tools-common. The updated tools-common
doesn't have nullity annotations. So, instead of adding the annotation
dependency, just reuse the platform ones. This also paves the way to
include other platform annotations like IdRes etc.
Change-Id: I87b8f767d3681d914abe7d1329e26a87f49f50a7
When trying to find the SDK Platform Dir for LayoutLib tests, also
test if the dir from which the tests are run is module dir.
Change-Id: Id5c6038d07ebbb122e38f907ad488ed1f2bcde32
Switch to the newer API that enables keeping a reference only to the
ParserFactory which is a much leaner object as compared to
LayoutlibCallback.
Change-Id: I9b7afd93226db23786a00b2951cbf5ae5b8f3e5f
- Add a script to copy the icons from the original source.
- Update layout used for the navigation bar to be closer to the original
layout.
- Update test image with the latest rendering.
- Add a nexus 5 landscape device config to help with testing.
Change-Id: I0b6674955e0970a6a8cce148b1b7aa61e1752ccd
- Remove ICU dependency (use the version bundled with platform).
- Restructure intelliJ project to move dependencies to module.
- Minor fixes to layoutlib tests.
TODO:
- Load ICU data.
- Hyphenator doesn't work.
- High quality line breaker not present.
Change-Id: I965e096e17bfc97ee995a649c3f4f6f64bb4f70d
Create XmlPullParser using callback provided by the client. This enables
clients to choose which XmlPullParser implementation they want.
Change-Id: I9ad97a4777820cdbe5c8fc3716f74ddec9065c70
- Add another layout including more widgets and thus testing layoutlib
better.
- Update targetSdk Version to 22.
- Handling of dynamic ids (@+id/) in LayoutLibTestCallback is buggy.
Since this is not a problem in Studio, and this is not testing the
callback, work around the issue by declaring the ids in
values/ids.xml.
Change-Id: I457c105e8556c4df13cd86da2250fe5fd37843a8
- Change the guava version used to match the one included in the SDK.
The test server uses the same. However, the command line build still
uses the guava present at platform/external/guava, which is compiled
with Java 7. Thus, running the tests from inside the IDE can be done
via Java 6.
- Rebuilt the test app classes with Java 6 compatibility.
- Change similarity threshold to prevent differences due to some locale
settings different java versions.
Change-Id: Ic71d43256a8cf6f9df296e63550667a202c7105f
The date picker and calendar widgets show the current date. Comparing
widgets showing current date with a static golden image wasn't the best
idea.
- Change the widgets to custom widgets that set a predefined date/time
so that the rendering is independent of the system date.
- Change the layout slightly to make it look nicer.
- Update gradle plugin version.
Change-Id: Ia3fb4965a372a28087a0d8c9df40fd6779df6050
The tests search for a built sdk using some heuristics. The default path
of the built sdk has changed now, and this updates the search
accordingly.
Change-Id: I36d465d8c5f6cfd971bbdf95878fb144de233c6c
When the tests are run on the build server, they are run from the jar,
as opposed to the extracted build, which is default when run from an
IDE. Thus, when class.getResourceAsStream() is called with ".." in the
path, it is not resolved properly. This change explicitly resolves the
relative path, so that the test is run properly on the server.
Change-Id: Ib5fabd617dca4052220e5173a8bf4fb4234254ff
The LayoutLib rendering tests now compares the rendered image with a
golden file from a previous execution. This will help catch any
unexpected changes in the final rendering.
Change-Id: I80251a778e89df7d7ec13863a8f299967f3d747d
Add the layoutlib and layoutlib-create tests to DIST_DIR for sdk
targets. These can be used for continuous testing on the build server.
Change-Id: I747dddcddfd8009937668bec4d75cb99bf63235f
The variable is not actually needed and it makes working with different
API levels a lot easier since everything now depends on $PROJECT_DIR$.
This change also makes the tests more robust by improving the way it
tries to find the SDK.
Change-Id: I3502ad4a0ba85fd88b497e47964fddb2a89e520c
Use the direct call from a File object to get the filename instead of
going through Path which depends on Java 7 making the LayoutLib tests
incompatible with Java 6.
Change-Id: I815895eedbc10245ee09bdb53b11e5548b076aad
This change adds an end to end test which loads the framework resources
and a test app and ensures that no exceptions or warnings are thrown.
The change also adds project configuration for intelliJ.
Change-Id: I7b67c0f1a2af2dac95df7f3231cab537b9826d7d
The test in layoutlib bridge has been updated to check the return
value of the delegate method match the value of the overriden method.
This changeset also fixes the problems found due to this change.
Change-Id: I87cef323c4eaee4e9f60475f01156b276593fa50
This allows ViewConfiguration to be properly implemented which is now
required for the rendering to happen.
Change-Id: I55629689fa8f5f874b43fcac2aa0789ce02d58f4
fe051bb2 : Change the way the layoutlib instantiate its XmlPullParser.
A lot of the init code was duplicated so I made a ParserFactory class.
Also created an extension of the KXmlPullParser to override toString().
This allows easier debugging when dealing with multiple parsers (which
is always the case).
Also added some (disabled) debugging printf to deal with parser stack
as it can be tricky figuring out which parsers are in the stack at
which point.
8969147c : Fix case where the int[] attrs doesn't directly match a styleable.
In the case of the FastScroller the int[] is a custom mix of attr
instead of a int[] that exists as R.styleable.foo.
This makes our reflection based mechanism used to find the styleable
fail, so instead we search for each attribute separately (like
we probably should have done from the beginning).
0c264b35: Fix various cases of getDimension to report error if unit is missing.
if getDimention###() is called for a string that has no unit,
then an error is output through LayoutLog, but the rendering keeps
going by using dp as a default.
0beb7eea: Make (Bridge)TypedArray.getInteger() call out to getInt()
Only getInt() resolved attribute flags/enum and I'm not sure why
there's two to begin with.
Every method implementing a delegate needed by the
layoutlib_create bytecode modification must now be
annotated with LayoutlibDelegate.
The methods in the original source code that are delegated
are already automatically annotated. Now with the implementations
being annotated we can do bi-directional tests and find not
only missing implementations but also dead obsolete code.
This will be useful when backporting to earlier versions of
Android, or when native (non public) method disappear. In fact,
the new test detected one such method in Shader.
Change-Id: I491708b68ac2736ca5669aa86cd5e930a00f9db3
All items directly under the <merge> tag now return the view cookie
of the referencing <include> tag using a special class for
easy differentiation in the calling client.
Change-Id: I7a2a4e642be9564f47e256fd1586012497d34792
Move away from using our own implementation of NinePatchDrawable.
Now use native delegate for a few methods of NinePatch.
The byte[] used to describe the 9-patch chunk is entirely controlled
by the delegate. Therefore, while the default version (JNI) use the
array as a representation of a C struct, this version uses the array
as a serialized version of NinePatchChunk.
A cache mechanism using SoftReferences allows us to not deserialize
the array every time rendering needs to access the chunk itself.
The Bridge-level cache mechanism for bitmaps and nine-patches as
changed. Since the new nine-patches doesn't hold the bitmap
data anymore (it's stored in a normal Android bitmap which
is cached itself through the cache), then the nine-patch cache
has been changed to only contain the nine patch chunk.
Also initialize the canvas with the display metrics to prepare
for correct scaling when density of the assets don't match the target
density.
Still to come: actual density support in the 9-patch drawing code.
Change-Id: Ibefcccf4432e1986e8436e0c41a0107741593536
Since the new API prepare for stateful layoutlib, major
reorganization of the code.
New "android" sub-package for all extended android classes.
Also moved BridgeInflater in here so that all extended classes
are in this package. Only delegates and classes replacing
renamed classes are in their original android.* packages.
Also created full file for the empty implementations of
IWindow and IWindowSession.
New "impl" for the dirty work implementation.
Main package contains the basic implementation of the API.
Most of the code that was in Bridge is now in .impl.LayoutSceneImpl,
with the main init/inflate/render code split into the contrustrutor,
inflate() and render().
Change-Id: Ie15b15e5a1b2388cd6ef82e518345b1fc02ec981
Also fix native delegate generation to put "this" parameter even
for methods that don't have any parameters.
Change-Id: I5dd0c505871370ff7b4cda16de84a5b3ae438f73
This does not implement all the native methods of the
android.graphics.Bitmap class, only what's needed to draw an
ImageView object. The rest will be implemented after Canvas and
Paint have been moved to the native delegate.
Change-Id: Ia0c3b2cafa03871c298deaef5817a25ac1c35521