This reverts commit 8390b2ac85765e768d4b685077a96e6395d208b4.
The build break should now be fixed by
cbb1ba7f493116882b79578ec68646366f29cde4
Change-Id: I9bf21cc6dbdb5d515a665384dc6dfa464c3e6e2e
This adds the ability to promote private fields to public ones to
enable layoutlib to access them. This was first added in change
b556decf75b2b084e1aed54ac7fa23a141eedb7f, but reverted in
847b0d3ad22a47e0bca3d8bc8168fea7a0ba2f80. This is essentially a revert
of the change again, but without the SimpleMonthView related stuff.
Also, promote the Choreographer's field as is needed to support
animations.
Change-Id: Iee45a465c7a1cadd362c1841385941e6232e4900
First step to add support for Choreographer based animations. The
Choreographer_Delegate avoid using a handler so the animation callbacks
can be called on-demand (by using doFrame). This allows things like
frame by frame animation or selecting a specific frame, and doesn't need
a separate thread to run.
The CL also changes the System and SystemClock implementations to allow
to set specific times. Because animations heavily rely on the system
time, this allows controlling it. It can also be useful to ensure that
the rendering produces a deterministic result when using controls like
the Calendar widget.
Change-Id: Iff221d2698a82075cafbb60f341be01741f7aa13
Currently, delegation of inner static classes methods is broken since
the rewritten method tries to pass an instance to the outer class. This
updates the method generation to only pass the reference if the inner
class is not static.
Change-Id: I8493929cafdbd80968989b422af0f956fa65681a
PathMeasure is needed to use the trimPath* properties in drawables.
These properties are used in the vector drawable for indeterminate
progress bars in Material so this is needed to be able to render them
correctly in the preview.
PathMeasure makes use of Path.approximate to calculate which segments to
paint.
Change-Id: Ic513f0a30a6aac0317f7c13cd75e9154c37405c8
This reverts commit b556decf75b2b084e1aed54ac7fa23a141eedb7f.
This is no longer needed as the SimpleDateFormat has been switched in
the framework. Also, the revert leaves the change to intellij inspection
profiles as is, because that change was independent of the main issue.
Change-Id: I6f4d7d9ddc10262b087ad6a2604fa50562fac043
Use ICU's implementation of SimpleDateFormat in LayoutLib. The format
patterns used are not supported by java.text.SimpleDateFormat.
The change required adding a mechanism for promoting visibility of
fields in the framework in the create tool.
TODO: Add additional tests in the create tool for this new
functionality.
Change-Id: Id0f4be41f9731c42a28919c32cc5ef271a656982
In LayoutLib the default locale should always be the locale set the
rendering params. This change replaces all calls to Locale.getDefault in
the framework with calls to AndroidLocale.getDefault() which tries to
find the locale from the current context, but falls back to the original
call.
Change-Id: I496b35dcfc17fd61fedee21c7495541ab870b1fc
This reverts commit c77f9c76e4142db8dd76a28ad99b8f0395b82eba.
Class.getDeclaredClasses() doesn't return anonymous inner class and
hence the change was wrong.
The revert doesn't undo the typo fixed in the original change.
Change-Id: Id0595c4bc3db1185dd1ce39808a6b8c3610a1e11
A method call exists to find all inner classes. Use it instead of
manually enumerating the possibilities and checking.
Also fix a typo.
Change-Id: I2af678e92ea0c11b53617b247d8cda324391c185
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
Ensures that having a DatePicker in the layout doesn't crash the
complete rendering. The rendering is still not perfect, but at least it
works.
- Return a non-null window token so that ViewPager thinks that it's
attached to a window and doesn't skip populating the views.
- Fix a style not found issue.
Change-Id: Ied2b71de5b32bcb640bf4ec445e8a39509f800e9
When injecting classes in LayoutLib (eg. CreateInfo), so that LayoutLib
can refer back to the changes, also inject the anonymous inner classes.
Without this, the injected classes are not loadable. Although, LayoutLib
itself doesn't load these classes, but some tests do.
Change-Id: Ib5f6b779ef4d79dec8d614d3dbb26eeac88a1064
Context.getClassLoader() is used by the LayoutInflater and can be used
by custom views. However, when called from the LayoutInflater, this
needs to return only the Framework classes. This is so that the IDE gets
a chance to instantiate the custom views, which helps in better error
reporting and better fallback in case of exceptions, like MockView.
To workaround this need of the same method returning different results
based on where it's called from, the method call in LayoutInflater is
renamed to getFrameworkClassLoader() and the new method is injected in
Context. The implementation of getFrameworkClassLoader() maintains the
existing behaviour of getClassLoader().
Context.getClassLoader() is now modified to return classes from both
Framework and the app namespace.
Also, update the list of packages to search for Framework views.
Change-Id: I1a6be4aa1fc5c1c5520b5440a348a52f10b6eb3b
- 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
Provide an alternate implementation for the above method and replace the
calls to it, since the method is not available on host VM.
Change-Id: I329d86b457d1859b137da8fb2790ddd7f8efa788
The earlier resolution (a2a5ce49b29b8e3bf3cd695ff9f968e5579f4be2)
wasn't the right one. This fixes it.
Change-Id: I6a6dc908d3e7dd510064a46df932d129a58eed98
Time_Delegate was removed in change with Change-Id:
Iae5ef65678f0e6c7c5af520c45bd15980ce3fa55. But the name wasn't removed
from CreateInfo. This didn't cause any problems at runtime, but caused
the layoutlib_create tests to fail.
Change-Id: I079b1e024b97d389eb07d4f088fd860efbb02eb3
The original change wasn't properly merged into lmp-mr1-dev because of
merge conflicts. This change manually resolves the conflicts. The main
reason for the conflict was that TimePickerSpinnerDelegate was swapped
with TimePickerClockDelegate.
This change also fixes the typo in the original change which was fixed
in a subsequent change.
Original commit: 12b6d29b7b5592dcfb6e6fd6f0c21a40f37d014a
fix for typo: cb09bc45c58740af953874f9915306d351fc3d9d
Change-Id: I50bf8c2d86318f632465a38adfad16d1382a9319
1. Change calls to java.lang.System.log* since they don't exist on the
host.
2. Clean up method rewrite mechanism in ReplaceMethodCallsAdapter.
3. Stub out creation of uninitialized GregorianCalendar.
4. Memory map the time zone data base file and provide a custom
implementation of BufferIterator for use by ZoneInfoDB
5. Delete unused Time_Delegate
Also fixed a comment in BridgeAssetManager and an error message in
FontFamily_Delegate.
Bug: http://b.android.com/79160
Change-Id: Iae5ef65678f0e6c7c5af520c45bd15980ce3fa55
TimePickerSpinnerDelegate doesn't need to deal with input when running
inside LayoutLib. So, we just return the keycodes as if it's running in
English locale.
Bug: http://b.android.com/79189
Change-Id: Ife0ae91a1e34a8dac379bc1dda1c1c8ed461c164
The shadows rendered are not the same as rendered by the framework. The
main purpose of the shadows here is let the user know when shadows will
be cast.
Currently rectangular shadows are available in only two intensities. Any
elevation below 10dp uses one shadow and any elevation over 10 dp uses
the other.
Also, even though the code for arbitrary shapes exist, it doesn't quite
work yet. No shadows are visible when that code is run.
Change-Id: Ie8235ffccf1d3809713f5d8f82afde434817d6b2
When multiple styles are applied to a theme, we only remembered the last
one. This change fixes the issue.
Change-Id: I46490e882edc3eabe522a641c83366234b5bb25d
LayoutLib Create tests are now built whenever LayoutLib create is built.
Change-Id: Id215e8690e435019579dba1734090a0d585f37e1
(cherry picked from commit 4efe6264f1251fa200427f54ea6f5dd4c4d03665)
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
(cherry picked from commit f9c749c9901c459f77ffc6f4fbbc15f4142c6e0a)