Commit Graph

109 Commits

Author SHA1 Message Date
Diego Perez
48a285ce1b Fix status and nav bar translucency
Bug: http://b.android.com/204831
Test: Added new UI tests
Change-Id: I992f4ccc391d9a4a0dda941689ec29fb44acf69b
2016-12-07 09:41:42 +00:00
Paul Duffin
10a9bd905c Merge "Use junit-host instead of junit" am: 6063357ae6 am: 6fc0c5ceca am: 32317b3c8d
am: 29bf88aca9

Change-Id: I2f75d5e80d9baa411e7816958d4a6d6d220d0ba9
2016-11-29 15:31:57 +00:00
Paul Duffin
4a064d2010 Use junit-host instead of junit
Bug: 30188076
Test: make checkbuild
Change-Id: I3496b9d7e40abf7712a56ba633a2becd0aa17c06
2016-11-29 14:52:42 +00:00
Diego Perez
5017ece983 Update allwidgets golden image
Test: Updating existing test
Change-Id: Ie66abc77ec6013a8094d6b8be2666b69c973a295
(cherry picked from commit 48d6ec53f9c75571217880ef77902f582723418b)
2016-11-25 12:36:12 +00:00
Jerome Gaillard
d38fffd38d Store failure thumbnails in CWD/out/failures
When a test fails in layoutlib, store the resulting png files in
out/failures subdirectory of the current working directory.
That avoids the risk of collisions if tests for several branches
of layoutlib are run at the same time.

Test: Run tests in layoutlib with at least one failing test
Change-Id: I31594a871e481e6aa410a165926ce544dc7ddcf2
(cherry picked from commit 82ebb9058479de56860f348ab969160e0d8294b6)
2016-11-24 16:43:30 +00:00
Diego Perez
dc3bb324ce Fix tests when running from the command line
When loading classes from the jar file, we can't just use the
URLClassLoader since it can not enumerate files in a jar directory.
Restoring the ModuleClassLoader and making all paths relative to the
system class loader (as opposed to relative to the class location).

Change-Id: Ib3f5d12dd5c964d0ba9cc6c5ec9cb556c989e653
(cherry picked from commit 2a4a6c81f8a103be5c48d8a0605a3e4416e8f7f1)
2016-11-23 11:01:44 +00:00
Diego Perez
c318f0b408 More layoutlib testing infra fixes
- Remove ModuleClassLoader as it can be replaced with a URLClassLoader
  for now.
- Move CustomCalendar and CustomDate to a separate package that can be
  used both by the Bridge tests and the actual test app.
- Move empty.xml out of the test app so it compiles.
- Update test app to use the latest build tools and SDK (some attributes
  being used by the app weren't supported in API 21).
- Update gitignore to remove the new out directory.

Test: Update to existing tests
Change-Id: Ieb7324d5ae559f9c581771c57f2127cd83909015
2016-11-15 14:11:33 +00:00
Jerome Gaillard
e6f30eec36 Fix testActivity on buildbot
Follow-up to commit 896cc3a794, the class file also needed to be
updated. The golden file of testActivity is also updated to be
the one built with jdk1.8.0_60 which is the one running on buildbot.

Test: Run testActivity
Change-Id: I7f3cfc1123160005c3cb5fa4213db6ae3a48457d
(cherry picked from commit aab13aee9a11c340952c24f2410940df59996816)
2016-11-14 18:05:57 +00:00
Jerome Gaillard
7638c49c84 Change date on CustomCalendar
The date of the calendar is set by converting the epoch time based on
the local time zone. We choose at date at 12:00 GMT so that it will
be on the same day no matter which time zone is considered.

Test: part of testActivity
Change-Id: Ib36a5b45f69323265dd5ceaa17eeac553fc2d071
(cherry picked from commit 896cc3a794bb6e173c1e53e97f70007c3e24de38)
2016-11-14 11:01:33 +00:00
Jerome Gaillard
3911cee2cf Update testActivity
Put android:animateFirstView false in the test application theme
so that the date picker view displays fully.
Update the golden image to reflect the changes.

Change-Id: If57fac5c182dd69b4b4d4fcc30d6f17a8f67ad68
(cherry picked from commit 96970138fc1c8d928a6d3ec362865e6c626f56e4)
2016-11-10 16:35:09 +00:00
Diego Perez
c7c3636c2f Ignore ?attr/windowActionBar when displaying menus
When we are displaying menus we do not care about that theme setting as
we always want to display the actionbar and the menu.

Bug: http://b.android.com/212320
Change-Id: I3b6200cc42e3c525a3763d14d423ee8371acc2f1
(cherry picked from commit 71eb800c0bb21b0e4cea3b29235ac4e544e765b2)
2016-07-19 15:46:54 +00:00
Diego Perez
d43916b555 Fix leak in VPathRenderer
The pointer to the root group in the VPathRenderer is not freed anywhere
in the Java side so we need to take care of it on the "native" side.

Change-Id: I2ca60b1f0e975a0b5d29799c5f6f31b5f8d42b9d
(cherry picked from commit ffdb1b241d9458196403c8f16264aa7053487323)
2016-07-19 10:30:53 +00:00
Diego Perez
245e1be94b Updating unit tests so they match the expected output
Change-Id: Id9af601c00fc87f861adeed9f5aa99a3dc55b17e
(cherry picked from commit 768e4c952f335a825cd45b102556d5948ed09d0c)
2016-06-27 18:31:07 +00:00
Diego Perez
721ca186f1 Merge "Fix Path_Delegate reset" 2016-06-27 10:39:41 +00:00
Jerome Gaillard
b4e074b159 JUnit-4.11 does not accept static rules
Change-Id: I9a2b986c2a88731d67919449a3ca69d2e73879d1
(cherry picked from commit 588d93eb54e48daabed31f98b100824f1355d8ec)
2016-06-22 11:28:55 +00:00
Diego Perez
35d07d99e0 Merge "Use a mock file to make testGetResourceNameVariants work in jar files" 2016-06-22 11:25:17 +00:00
Diego Perez
1fa7f02085 Use a mock file to make testGetResourceNameVariants work in jar files
Change-Id: Ic77f8bb2cef3dabeddd3ba530b0eda23e70c9017
(cherry picked from commit 616433e8ba0119b8ce79f76f41e8489030aea2a0)
2016-06-21 14:49:28 +00:00
Diego Perez
ca9be759c8 Fix Path_Delegate reset
Path_Delegate.reset was not clearing the last point when called. This
caused some vector drawables that relied on relative position to fail to
render correctly.

Bug: http://b.android.com/91383
Bug: http://b.android.com/203797

Change-Id: Id250ecf8a5a5c66671aa8d3ddd213996f824fd56
(cherry picked from commit d6db7133af7b5aed76d83c17b60b27742608a2df)
2016-06-21 14:48:33 +00:00
Jerome Gaillard
301d468428 Incorporate alpha attribute when painting VectorDrawable
When painting a vector drawable, alpha transparency can come from
the path color, or from the overall android:alpha attribute.
Include both when drawing.

Bug: http://b.android.com/206667
Change-Id: Id946fdeaf72b981597787f5357ef3a90a471c584
(cherry picked from commit 8cae3b0ce6f527e7b90d46755ffaf6d3d4d65114)
2016-06-21 14:47:55 +00:00
Deepanshu Gupta
2385e2184a Merge "Revert "Switch LayoutLib to Java 8"" into nyc-dev 2016-04-29 20:05:39 +00:00
Diego Perez
a4d7ad8663 Fix rect shadow detection
ViewGroup_Delegate was trying to use a rect shadow even in cases where
we needed to use a path. This caused that using a ToggleButton would
throw an exception with radius < 0.
Also, changed the tests so we can detect certain render errors and
ignore other (like known fidelity warnings).

Change-Id: I900d45f9efa892ad0aebc8f4ef73fc9f21ab9d92
2016-04-06 12:33:26 +01:00
Diego Perez
2605f91f70 Separate inflate from render step
Up until now, createSession will always do a first render. With the new
embedded layoutlib we might want to actually call objects from the
inflated view before doing a render or even do it between renders.
This allows to avoid the first initial render unless needed.

This CL also fixes a bug that would only happen when multiple render
calls are issued. When scrolling, use scrollTo since we likely want
absolute positions, not relative.

Change-Id: I4b1d8388d7218a8de33e25cd546fd965fcb07dc7
2016-04-04 19:43:48 +01:00
Diego Perez
fc970ab65a Implement VirtualRefBasePtr native methods
The VirtualRefBasePtr is used to track the usage of native objects from
the java side by reference counting. Implementing the class delegate to
make sure we dispose the objects correctly.

Change-Id: I3dd4717944b0dbe79f30e49b3083bf65c6e5276d
2016-03-30 17:53:23 +00:00
Deepanshu Gupta
ceb1ab1d2a Add tests for getResource*Name()
Change-Id: I02170b2b68c76f817aa0771a5333abf2aee456c0
2016-03-24 14:27:21 -07:00
Diego Perez
5ceb30f216 Add fill type support to vector drawable
The platform has added fill type to vector drawables. This CL implements
the native replacement.
Also remove a couple of delegates for classes that have been removed
from the platform.

Change-Id: Ie6ba344db9c9c2c45cd0ef4b99f11f9d8bcfd7de
2016-03-23 09:40:23 +00:00
Diego Perez
d15459197f Account for parent scroll position
When calculating the ViewInfo bounding box, account for the parent
scroll position.
Also make renderAndVerify return a RenderResult to verify some data
about the result layout.

Change-Id: I965e393c49b5030c80083daf5e058fa31400ce93
2016-03-18 16:52:39 +00:00
Diego Perez
566b303365 Add support for GradientColor in layoutlib
Change-Id: Ia9a55a9e00d7ddb5263f3dbe46b5da8dde457526
2016-03-07 09:11:11 +00:00
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
621c43d8e5 Revert "Switch LayoutLib to Java 8"
This reverts commit 7914e4ca03.

Change-Id: I0f7c40199e4c31c4f321d40d4d4dfe60a0fda299
2016-02-18 04:53:55 +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
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
c2622d8923 Update test image for upated nav icons.
The image shows the nav icons to be separated by a significant distance.
This is because the switch to wide-screen layout happens based on
shortest width. The layout has a small shortest width and hence it uses
the phone layout for a horizontal nav bar and it doesn't look nice. Real
devices will never have this config, so it's okay.

Change-Id: Ic494ee7fdfb1116db39bcab6d6ee7a1e514b23df
2015-07-31 13:17:15 -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