Commit Graph

280 Commits

Author SHA1 Message Date
Diego Perez
a38b7c180d Merge "Implement native methods in VectorDrawable" into nyc-dev 2016-03-03 09:55:05 +00:00
Deepanshu Gupta
1aeb31bdbb Merge "Add StubMethodAdapterTest" into nyc-dev 2016-03-02 13:32:18 +00:00
Deepanshu Gupta
a9de835c17 Add StubMethodAdapterTest
This tests the bugfix in StubMethodAdapter made in the change with id
I098996e43e330e995d33f12df1c16355bbc02f0f (commit 491523d)

Change-Id: I1ac897a49071dd9558bdc6b8abec29df913a6047
2016-03-02 13:30:31 +00:00
Deepanshu Gupta
dbe8a0fe3b LayoutLib: Reference android's junit in intellij project.
Prevents errors due to mismatch in junit version.

Change-Id: I2adf32efb16472aa5f5e51025b6bb75afc76a8b4
2016-03-02 13:26:18 +00:00
Diego Perez
5d1013cf13 Implement native methods in VectorDrawable
Most of the VectorDrawable implementation has been moved to native code.
This CL implements most of the required functionality that existed in
Marshmallow.

Change-Id: I009bcd5c166f2bfa0795d2718fabab4a549eba9f
2016-03-02 09:03:03 +00:00
Diego Perez
70f97ba54a Fix StackMap renaming in Java 8
With the move to Java 8 of layoutlib, we now need to make sure that the
method stackmaps are kept up to date or the class verification step will
fail. Up until now, we were ignoring them but this caused TestDelegates
to start failing.
This updates the code to make sure that when we modify a class name, we
also update the stackmap in the calls.

Change-Id: Iddbde7454f065ddb8da5bb1ab499ec0616f9b4fe
2016-02-29 10:24:52 +00:00
Diego Perez
26b2754310 Remove layoutlib RunQueue implementation
Change-Id: Id2b666f086a48f101ff7ef4177fe28ad17d10783
2016-02-22 17:16:50 +00:00
Diego Perez
18780f60ef DO NOT MERGE: Fix Canvas memory leak
am: b75a0426d8

* commit 'b75a0426d8c2339f2d552f96cc4dfcd86deb3447':
  DO NOT MERGE: Fix Canvas memory leak
2016-02-22 16:19:12 +00:00
Diego Perez
f5650cf3a3 Fix Canvas memory leak
Every RenderSession would call the AttachInfo.setAttachInfo but wouldn't
issue a View.dispatchDetachedFromWindow.
This caused some Canvas to be slowly leaked in the DelegateManager in
every session.

Change-Id: Iec418a86f5c5e55c2a2860ef945268c51c0e8173
2016-02-22 15:01:30 +00:00
Diego Perez
b75a0426d8 DO NOT MERGE: Fix Canvas memory leak
Every RenderSession would call the AttachInfo.setAttachInfo but wouldn't
issue a View.dispatchDetachedFromWindow.
This caused some Canvas to be slowly leaked in the DelegateManager in
every session.

Change-Id: Ib0392303e6d00a4fe5494ae484f28135b1fe6b28
2016-02-22 14:09:09 +00:00
Diego Perez
4f2103631a Merge "Revert "Fix Canvas memory leak"" into mnc-ub-dev
am: 44f92b00d1

* commit '44f92b00d1a060773625de5884fc86e7218e2dd5':
  Revert "Fix Canvas memory leak"
2016-02-19 20:18:28 +00:00
Diego Perez
44f92b00d1 Merge "Revert "Fix Canvas memory leak"" into mnc-ub-dev 2016-02-19 20:09:09 +00:00
Diego Perez
cf93572889 Revert "Fix Canvas memory leak"
This reverts commit e82bd72b6e.

Change-Id: Ie9ef25b17d5f725d5054c039992a8cd2912868a6
2016-02-19 20:07:44 +00:00
Diego Perez
1d3c41e563 Merge "Fix Canvas memory leak" into mnc-ub-dev
am: bad0e07ee9

* commit 'bad0e07ee9163d6b0f0bf73ad591ff6e453199ef':
  Fix Canvas memory leak
2016-02-19 18:08:00 +00:00
Diego Perez
bad0e07ee9 Merge "Fix Canvas memory leak" into mnc-ub-dev 2016-02-19 17:58:17 +00:00
Diego Perez
e82bd72b6e Fix Canvas memory leak
Every RenderSession would call the AttachInfo.setAttachInfo but wouldn't
issue a View.dispatchDetachedFromWindow.
This caused some Canvas to be slowly leaked in the DelegateManager in
every session.

Change-Id: I0322767e5fffc6053ce1be852dd8ca904dfaa137
2016-02-19 17:57:36 +00:00
Diego Perez
16e17a7730 resolve merge conflicts of aa9c9fb29e to nyc-dev
Change-Id: Id46238cb759f2d63a072cb7ea8a27c5fd8a6672e
2016-02-18 18:28:50 +00:00
Deepanshu Gupta
7914e4ca03 Switch LayoutLib to Java 8
The main build hasn't swtiched to java 8, but lambdas are already used
in layoutlib. This fixes the build break.

Change-Id: I4dd69ebd736179067899f5d86d3608d5fdb03d93
2016-02-17 20:50:00 -08:00
Deepanshu Gupta
491523d52c LayoutLib fixes for N
Moves LayoutLib to Java 8 - YAY!
Fix delegates

Change-Id: I098996e43e330e995d33f12df1c16355bbc02f0f
2016-02-18 02:10:24 +00:00
Diego Perez
aa9c9fb29e Replace SimpleDateFormat implementation
This will process all the classes and replace all the uses of
java.text.DateFormat and java.text.SimpleDateFormat with the
android.icu.text. package implementations. The original ones do not
match the Android platform behaviour.

Change-Id: Id55f103c21117a8d6403bf2124b6c1a0e1fb2f71
2016-02-17 18:54:17 +00:00
Deepanshu Gupta
676ae8c8c9 Merge "Remove GregorianCalendar hack" am: 187c022bf1
am: 08f736e7b1

* commit '08f736e7b143f825fe3c29e70e9b505bbf8e1ae6':
  Remove GregorianCalendar hack
2016-01-23 01:05:26 +00:00
Deepanshu Gupta
08f736e7b1 Merge "Remove GregorianCalendar hack"
am: 187c022bf1

* commit '187c022bf187f137d48d9031c43cfc233c9fc158':
  Remove GregorianCalendar hack
2016-01-23 00:02:05 +00:00
Deepanshu Gupta
4f3d0c6caa Remove GregorianCalendar hack
Bug: http://b.android.com/199424
Change-Id: I589d153e1f57b6302c6fe3c031c5c63e33ad9996
2016-01-22 11:33:53 -08:00
Jerome Gaillard
751766a561 Deals with translation and scaling in layoutlib am: ded4d14e33
am: cc90965d8f

* commit 'cc90965d8f3b8779fc477ec8a43b16306e5da535':
  Deals with translation and scaling in layoutlib
2016-01-21 13:19:57 +00:00
Jerome Gaillard
ded4d14e33 Deals with translation and scaling in layoutlib
Layoutlib now correctly interprets the translation and scaling
xml attributes of views, by implementing what the Android platform
does in native code.

Change-Id: Ie8465f40ef4508d3c31796200800f12cb8f883a4
2016-01-21 11:21:47 +00:00
Jerome Gaillard
b384adf63f Merge "Deals with android:rotation attribute in layoutlib" into mnc-ub-dev am: 7efb74d54a
am: 426910e4df

* commit '426910e4dfb1f84f93697017c90400c0b4f8e6c0':
  Deals with android:rotation attribute in layoutlib
2016-01-20 17:44:57 +00:00
Jerome Gaillard
c92d70dff7 Deals with android:rotation attribute in layoutlib
The way Android views deal with their rotation xml attribute is through
native code called for hardware accelerated rendering. So layoutlib
has to bypass that in order to take those attributes into account.

Bug: http://b.android.com/73300
Change-Id: Ieb5bf0567a25a9021491ebf3250cedd0752f7863
2016-01-19 18:31:06 +00:00
Deepanshu Gupta
0beaeadbe3 Merge "Fix ninepatch scaling." into mnc-ub-dev am: 0c08fc0fc5
am: 2aebcddf02

* commit '2aebcddf02383c84a8a21279d32fd00376b8c25e':
  Fix ninepatch scaling.
2016-01-11 18:23:50 +00:00
Deepanshu Gupta
0c08fc0fc5 Merge "Fix ninepatch scaling." into mnc-ub-dev 2016-01-11 18:09:45 +00:00
Deepanshu Gupta
23e47f5621 Java 8 in layoutlib-create
Upgrade to ASM 5 and diamond operators.

Also minor fixes here and there.

Bug: 26442940
Change-Id: I5611ed0889aa94cca8655fec47799e1ddccb0150
2016-01-08 08:03:06 -08:00
Deepanshu Gupta
95e58deaa2 Fix ninepatch scaling.
Really fix the bug now. Also add tests for the same and update
allwidgets golden file for M.

Bug: http://b.android.com/187939
Change-Id: I98cd55da0561fef9d47d8759bcd287ee36d03cc2
2015-12-07 14:48:38 -08:00
Deepanshu Gupta
7c4420bd04 Revert "Revert "Add support for Choreographer animations""
This reverts commit 8390b2ac85.

The build break should now be fixed by
cbb1ba7f49

Change-Id: I9bf21cc6dbdb5d515a665384dc6dfa464c3e6e2e
2015-12-01 21:58:29 -08:00
Deepanshu Gupta
cbb1ba7f49 Add ability to promote fields.
This adds the ability to promote private fields to public ones to
enable layoutlib to access them. This was first added in change
b556decf75, but reverted in
847b0d3ad2. 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
2015-12-01 21:49:12 -08:00
Diego Perez
8390b2ac85 Revert "Add support for Choreographer animations"
This reverts commit 29ed07524c.
2015-12-02 04:10:22 +00:00
Diego Perez
2ee825f507 resolve merge conflicts of 956cad8870 to master.
Change-Id: Iebad149b2768bcd7a52ee2c7c8c260a9279d1742
2015-12-02 00:04:08 +00:00
Diego Perez
29ed07524c Add support for Choreographer animations
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
2015-12-01 10:14:52 +00:00
Diego Perez
865ad592fe Merge "Fix delegation of methods within inner static classes" into mnc-ub-dev am: 603544d4c4 am: 14a826380d am: 0b76d094c6
am: f9281b6dfe

* commit 'f9281b6dfe94f1df0fac3ddbad846012b0a6fb7d':
  Fix delegation of methods within inner static classes
2015-11-19 03:19:00 +00:00
Diego Perez
6777f54fa4 Fix delegation of methods within inner static classes
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
2015-11-13 14:06:50 +00:00
Deepanshu Gupta
51747638ed am d7b7e93a: am 9969f858: LayoutLib: Fix ring rendering.
* commit 'd7b7e93a47e99fb54c91fb0d5b37971c8638074d':
  LayoutLib: Fix ring rendering.
2015-10-07 21:29:30 +00:00
Deepanshu Gupta
9969f858c3 LayoutLib: Fix ring rendering.
Bug: http://b.android.com/65503
Change-Id: I6ed901703cffee345f3083ea3ddeb52a28f4ac64
2015-10-07 12:46:15 -07:00
Diego Perez
f32a1089c6 am 4a36d982: am 081cebf5: Implement Path.approximate and add PathMeasure support
* commit '4a36d982592c3a3238009be785574dd65ff33cc6':
  Implement Path.approximate and add PathMeasure support
2015-10-07 16:15:55 +00:00
Diego Perez
081cebf52b Implement Path.approximate and add PathMeasure support
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
2015-10-07 17:04:26 +01:00
Deepanshu Gupta
847b0d3ad2 Revert "LayoutLib: Switch SimpleDateFormat to icu."
This reverts commit b556decf75.

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
2015-08-07 10:31:54 -07:00
Deepanshu Gupta
b556decf75 LayoutLib: Switch SimpleDateFormat to icu.
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
2015-08-06 16:04:04 -07:00
Deepanshu Gupta
82c7fdb1f6 Replace Locale.getDefault with custom impl.
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
2015-08-06 16:03:19 -07:00
Deepanshu Gupta
214466c777 Include EpicenterTranslateClipReveal in LayoutLib
Needed by Spinner to create transitions that are then ignored :)

Change-Id: Ibe7167a643ecb186e97c9af446c0e1d2eb2d6f86
2015-07-29 14:30:05 -07:00
Deepanshu Gupta
c714501141 Revert "Replace infinite loop with foreach."
This reverts commit c77f9c76e4.

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
2015-07-07 13:13:48 -07:00
Deepanshu Gupta
c77f9c76e4 Replace infinite loop with foreach.
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
2015-06-30 15:36:34 -07:00
Deepanshu Gupta
86caef1892 LayoutLib: Skip classes from java package.
Classes in "java" package can't be defined at runtime anyway. No use
including them in LayoutLib.

Change-Id: I7e7c46f0d74e32c893b23093828569b4fa5e3a73
2015-06-01 14:43:28 -07:00
Deepanshu Gupta
bcbe9ba0f9 Merge "Include Shapes in LayoutLib." into mnc-dev 2015-05-26 22:37:27 +00:00