Commit Graph

53 Commits

Author SHA1 Message Date
Diego Perez
52c2030f42 Fix layoutlib expand unit test
Changing the theme used to "Light" since currently the "Dark" theme
seems to be missing at least one value. This test doesn't visually
depend on the theme so just changing it to "Light" to make it pass.

Change-Id: Ibb885bf3948dcf587de08896540dda622f86e8b3
2016-03-01 11:29:49 +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
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
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
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
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
b9c48d8f49 New path interpolation to paint vector drawables
Before this CL, PathMeasure_Delegate would use Path_Delegate.approximate
to get a path segment to draw. Path_Delegate.approximate uses a
flattening iterator to do the path approximation.
Unfortunately, because we do not control the stroke mode while painting,
in some cases the approximation would draw unwanted artifacts caused by
the rough approximation and the use of wrong miter values.
This CL does a much better calculation of the path and interpolates the
segments of the curves instead of replacing them with line segments.

This also fixes an issue with the calculation of empty paths.

Bug: http://b.android.com/187256

Change-Id: I450f7aa4c3d9efcbf902a40c3b4d6d388546893f
2016-01-19 10:14:46 +00:00
Deepanshu Gupta
1665a621da LayoutLib: Fix device used comments in intensive tests
Change-Id: I65ee2f8bdf096ea991e72c99777c8981da7b5ae2
2016-01-14 23:19:29 +00:00
Deepanshu Gupta
0c08fc0fc5 Merge "Fix ninepatch scaling." into mnc-ub-dev 2016-01-11 18:09:45 +00: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
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
Deepanshu Gupta
e91096c03d Support databinding in listitem layouts.
Add a wrapper around the PullParser to support stripping out databinding
parts.

Bug: http://b.android.com/187428
Change-Id: I88080d8f4108cb5ae27a137ad20c5dd7d516f3ea
2015-09-29 17:07:53 -07:00
Deepanshu Gupta
89a045c31f Revert to using AppTheme for LayoutLib tests.
Use AppTheme for all tests other than testExpand. AppTheme contains an
attribute needed by testArrayCheck. Also, since the AppTheme extends
Theme.Material.Light.DarkActionBar, other tests should be unaffected.

Also, update the golden image for the testArrayCheck.

Change-Id: Ib5f53f3b029c5aceef2b622e5ac63952d6b1972a
2015-08-03 11:42:33 -07:00
Deepanshu Gupta
4a6ee98d39 Fix theme namespace in tests.
The tests used framework theme (Material), but the ResourceResolver was
created with project theme. This caused tests to fail becasue of missing
resources.

Change-Id: Ia17ee19054f6689f85e3423e83c1f47a2cc4364f
2015-07-29 14:27:02 -07:00
Diego Perez
b9935889b1 resolved conflicts for merge of 112d8a36 to mnc-dev
Change-Id: Ic9511a57db8a96f54dba0704800789a8602b9dd2
2015-07-21 15:32:55 +01:00
Deepanshu Gupta
d7b846c181 Update tests per new layoutlib_api
Change-Id: Idc89ffceaf171abcf2b579f4e934b514ef209210
2015-07-06 18:26:41 -07:00
Diego Perez
4362443cd9 Render to measured size when using expand mode
When using RenderingMode.V_SCROLL or RenderingMode.H_SCROLL, if the
screen size is smaller than the measured size but as large as the
desired size, the layout will render incorrectly and won't expand.
This changes that to expand to at least the size of the screen.

Added tests for the V_SCROLL and H_SCROLL modes.

Bug: http://b.android.com/174928
Change-Id: I22686903560775e2e4f362af1d7b50c9b985467d
2015-06-02 17:09:45 +01:00
Deepanshu Gupta
642cff50f8 LayoutLib: Support getting resource arrays.
- 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
2015-05-26 16:33:10 +00:00
Deepanshu Gupta
476e582d2f LayoutLib: Change nullity annotations.
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
2015-05-22 17:57:29 -07:00
Deepanshu Gupta
612a05e7e1 Update platformDir search in tests.
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
2015-05-20 11:28:50 -07:00
Deepanshu Gupta
3dc19883c5 Fix build: udpate parser factory method
Change-Id: I78ad55bc924427b44451ec32fbd1032d6cd77544
2015-05-14 17:00:50 -07:00
Deepanshu Gupta
f2d408b51d Don't keep LayoutlibCallback reference.
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
2015-05-14 15:37:29 -07:00
Deepanshu Gupta
139d6ff12d Update nav bar icons.
- 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
2015-05-13 20:48:58 -07:00
Deepanshu Gupta
d77b9ed7dc Add missing delegates for M preview.
- 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
2015-05-13 18:15:20 -07:00
Deepanshu Gupta
a12ec8f1e2 Run setup for full tests only once.
Change-Id: Iee64dbd88d473b7be08581f26ccddf649aed8e56
2015-05-13 18:10:53 -07:00
Deepanshu Gupta
78af255846 Remove kxml dependency.
Create XmlPullParser using callback provided by the client. This enables
clients to choose which XmlPullParser implementation they want.

Change-Id: I9ad97a4777820cdbe5c8fc3716f74ddec9065c70
2015-05-13 18:10:46 -07:00
Deepanshu Gupta
a035dfbf8d More layoutlib tests.
- 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
2015-04-16 15:50:31 -07:00
Deepanshu Gupta
eca0b3d9ec Nullity annotations to some tests.
Change-Id: I2939d7fab30f3b8fe32f2fdf720c630d677373ff
2015-04-16 12:00:30 -07:00
Deepanshu Gupta
37dbb8b7f3 Update to using LayoutlibCallback.
Change-Id: Ia89d418b0d40ca8efef8968a4a2a635616b945ac
2015-04-15 18:20:56 -07:00
Deepanshu Gupta
4e6ae02a29 am 17bb697b: am ec8df9af: Fix tests for Java 6.
* commit '17bb697b3bce1b23137553829dd62e0e7c16b472':
  Fix tests for Java 6.
2015-03-27 01:09:53 +00:00
Deepanshu Gupta
ec8df9af2f Fix tests for Java 6.
- 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
2015-03-26 12:29:36 -07:00
Deepanshu Gupta
5bc625d83d am a62a18e3: am 311a0f54: Merge "Fix layoutlib tests." into lmp-dev
* commit 'a62a18e341180ccf6f5379a7d753584f6cee2e7c':
  Fix layoutlib tests.
2015-03-25 00:01:43 +00:00
Deepanshu Gupta
84e550f5e6 Fix layoutlib tests.
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
2015-03-17 17:17:42 -07:00
Deepanshu Gupta
565b6b415a Merge "Update platform.dir search in tests." into lmp-mr1-dev 2015-01-08 01:17:23 +00:00
Deepanshu Gupta
0359b4b199 Update platform.dir search in tests.
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
2015-01-07 12:21:59 -08:00
Deepanshu Gupta
d657b14927 Fix tests on jenkins, take 2.
Change-Id: I67386c34a7abd7c3afdf9f0768f36f4786399be0
2015-01-07 11:22:22 -08:00
Deepanshu Gupta
48603a39d4 Fix tests on jenkins
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
2015-01-06 17:32:26 -08:00
Deepanshu Gupta
58df125bbc Add image comparison to LayoutLib tests.
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
2015-01-05 11:32:41 -08:00
Deepanshu Gupta
0774bc4605 Remove ANDROID_BUILD_TOP from intelliJ path variables.
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
2014-08-25 15:47:28 -07:00
Deepanshu Gupta
70d1574db9 Get filename from File faster
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
2014-08-05 14:34:56 -07:00
Deepanshu Gupta
86eb8b4e29 Add testing framework to LayoutLib.
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
2014-08-04 22:58:39 +00:00
Deepanshu Gupta
fe2a71bb13 Report all TestDelegate failures in a single run.
Change-Id: I37fa0a6f300ea89c8d0a60380b77b7d61db01cb7
2014-07-01 12:22:13 -07:00
Deepanshu Gupta
9be03c4e98 Update layoutlib tests to check methods return value.
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
2014-02-21 16:22:10 -08:00
Adam Lesinski
282e181b58 Revert "Move frameworks/base/tools/ to frameworks/tools/"
This reverts commit 9f6a119c8a.
2014-01-27 10:31:04 -08:00
Mike Lockwood
9f6a119c8a Move frameworks/base/tools/ to frameworks/tools/
Change-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8
2013-08-28 09:44:17 -07:00
Xavier Ducrohet
e86c5b2e9f Merge "Add missing delegate to the layoutlib." 2011-06-21 12:19:07 -07:00
Brett Chabot
3523325159 Merge "Include testdata in layoutlib-tests." 2011-06-21 11:27:29 -07:00
Xavier Ducrohet
fc511683b6 Add missing delegate to the layoutlib.
Change-Id: I8de5c1093052c40c0cd327a4d02b01651d3b76b5
2011-06-21 11:03:29 -07:00
Brett Chabot
01f0fd84d0 Include testdata in layoutlib-tests.
Change-Id: I79fff895a13d171079b59db54d4b9d2bec555b3c
2011-06-17 17:03:20 -07:00