5097 Commits

Author SHA1 Message Date
Clara Bayarri
04d72abde1 Expose fonts.xml via public API with a service
This change creates a new FontManagerService, in charge of providing
font management data. It exposes a public API to retrieve the
information in fonts.xml without accessing it directly. To do this,
it also refactors FontListParser's internal classes into a new public
FontConfig class holding all the font data.

getSystemFonts() returns all the available information in fonts.xml
as well as file descriptors for all the fonts. This allows us to
share the memory consumed by these files between all clients.

Bug: 34190490
Test: See attached CTS change in topic
Change-Id: I0e922f8bcc9a197a1988d04071eb485328d66fb7
2017-01-23 15:02:23 +00:00
TreeHugger Robot
b334b8f0f2 Merge "AAPT: Add support for 'font' resource type" 2017-01-23 11:48:12 +00:00
Svet Ganov
6788212d17 Platform support for static shared libraries
This change adds support for static shared libraries that
emulate static linking allowing apps that statically link
against the same library version to share a common
implementation. A library is hosed by a package in a standard
APK.

Static shared libraries have a name and a version declared
by a dedicated manifest tag. A client uses also a new tag
to refer to the static library it uses by specifying the
lib name, version, and the hash of the signing certificate.
This allows two apps to rely on two different library versions
and prevents impersonation of the shared library by a side-loaded
app with the same package name.

Internally apps providing static libs use synthetic package
name generated from the manifest package name and the library
version. This allows having different "versions" of the same
package installed at the same time.

An application cannot be installed if a static shared lib it
depends on is missing. A used shared library cannot be uninstalled.
Shared libraries can rotate certificates like normal apps. The
versions of these libs should be ordered similarly to the version
codes of the hosting package. Such libs cannot use shared user
id, cannot be ephemeral, cannot declare other libraries, cannot
rename their package, cannot declare child-packages. They must
target O SDK. Also they cannot be suspended or hidden or their
uninstall blocked. Generally, speaking policy regarding code in
static shared libs should be applied to the packages using the
library as it could have just statically linked the code.

We now have APIs to query information about the shared libraries
on the device in general. To clients static shared libraries are
presented as multiple versions of the same package which is how
they are declared and published. Therefore, one can have two
versions of the same package which means we need way to query
for and uninstall a specific version of a package. Also static
shared libs can depend on other static shared libs which are
versioned packages. To ease representation we add the concept
of a versioned package which should be used in the case of
static shared libs.

A client can see only the static shared libs it depends on and
more specifically only the versions it depends would be retrieved
by using the standard package manager APIs. There is a new
dedicated API to get info about all shared libraries which
would provide data about all static shared lib versions. Also
these libraries must use v2 signing scheme.

Test: CTS tests pass

bug:30974070

Change-Id: I4f3d537ee7a81f880950377b996e1d9d4813da5c
2017-01-22 14:05:15 -08:00
Adam Lesinski
83b4f7daba AAPT: Add support for 'font' resource type
Change-Id: I5bc459e34715779ab3b1c415f40f592a4ccbb96e
Test: manual
2017-01-20 13:19:27 -08:00
TreeHugger Robot
a9da39cb64 Merge "Add wide color gamut and HDR resource qualifiers" 2017-01-20 04:10:04 +00:00
Colin Cross
f552a6f90d Merge "Revert "Update layoutlib following Change Id10ca97f on FontFamily"" 2017-01-20 04:04:31 +00:00
TreeHugger Robot
4c0659f531 Merge "Enable background restrictions" 2017-01-20 02:55:30 +00:00
Siyamed Sinir
cc3c55afdc Revert "Update layoutlib following Change Id10ca97f on FontFamily"
Reason: The changes that this CL depends on, had to be reverted.

This reverts commit 7a1cab2c9606ca5aab0f030c0022b864d5c05888.

Bug: 34378805
Change-Id: I6bd05082060199c1907743b9f72d4c2438371aa6
2017-01-20 02:51:36 +00:00
Romain Guy
c9ba559021 Add wide color gamut and HDR resource qualifiers
Bug: 32984164
Test: Config_test, AaptConfig_test and aapt2_tests
Change-Id: Ie9c82bfe2d36b1d6180ee223250ab5bb2ce90dd4
2017-01-19 18:44:00 -08:00
Christopher Tate
42a386b771 Enable background restrictions
Apps that target O+ are always subject to background restrictions.
Legacy apps' background restriction is subject to the OP_RUN_IN_BACKGROUND
app op.

Apps with these properties are exempted from background restrictions:
  - persistent process
  - currently on the idle battery whitelist
  - global whitelist for things like bluetooth services

Bug 30953212

Change-Id: Icc19b2fbc05f40dcf8c3fc4abf718c373dc8d4f6
2017-01-19 16:23:02 -08:00
TreeHugger Robot
1f9f11007d Merge "Move StringPiece to libandroidfw" 2017-01-19 23:40:06 +00:00
Chris Tate
9e83cbbc10 Revert "Enable background restrictions"
This reverts commit 21f778060badb1e78bffde05e8de7662d275003d.

Change-Id: I65586f9739da84fb32b51b0ea166b8288c41d1b3
2017-01-19 01:12:19 +00:00
Christopher Tate
21f778060b Enable background restrictions
Apps that target O+ are always subject to background restrictions.
Legacy apps' background restriction is subject to the OP_RUN_IN_BACKGROUND
app op.

Apps with these properties are exempted from background restrictions:
  - persistent process
  - currently on the idle battery whitelist
  - global whitelist for things like bluetooth services

Bug 30953212

Change-Id: Ib444829a2d222125f64ff19e8218823fa78373f9
2017-01-18 11:30:41 -08:00
Roozbeh Pournader
2d00c0952e Merge "Update locale data from in-tree ICU" 2017-01-18 17:03:35 +00:00
Adam Lesinski
d5083f6f6b Move StringPiece to libandroidfw
libandroidfw needs to make use of StringPiece, so
move it to libandroidfw and update all code referencing
StringPiece in aapt2.

Test: make libandroidfw_tests libaapt2_tests
Change-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1
2017-01-17 18:55:51 -08:00
Fabien Sanglard
d8cb7dcc41 Merge "AAPT2: Convert Android.mk to Android.bp" 2017-01-17 16:34:06 +00:00
Diego Perez
373259f296 Adds test to collect performance metrics
Test: Adds performance tests
Change-Id: I7d112ddad4efb2c1c84ac177d230225cc031f7f3
2017-01-16 18:14:34 +00:00
Diego Perez
66dc364046 Add Main back to run in buildbot
Main is now a Suite that contains all the test needed for CI

Test: No new tests needed
Change-Id: I4374faacfa38f00d404151276580de636984638c
2017-01-16 18:13:54 +00:00
Diego Perez
27c2ce3c40 Refactor tests structure
Move all the render test utility methods to a separate class and leave
only tests in RenderTests class (old Main).
The idea is to improve the organization to allow to create a set of
performance tests and also to allow the tests to grow more structured.

Test: Just moved tests around
Change-Id: I3b773d0745700dd2a52f937b9b668a2d374b8686
2017-01-16 18:13:44 +00:00
Jerome Gaillard
1ea5da6d70 Update Config.getTime method after the N release
And update the relevant golden files as the time in the status bar
is changed.

Test: Run layoutlib tests
Change-Id: I421b5495291f2d62091366bc0c066e77e0f3e107
2017-01-16 18:13:35 +00:00
Diego Perez
74f50acfc4 Merge changes Ia7a8a27f,I0646aab6,Ia324f18d,I38c6c6df,Ic9214929, ...
* changes:
  Add missing attributes to old themes
  Fix plurals support in layoutlib
  Do not log errors while loading string arrays
  Hack to deal with android:pointerIcon in layoutlib
  Force animateFirstValue to false
  Avoid passing antialias when measuring scaled text
  Catch all exceptions in NativeAllocationRegistry free
2017-01-16 18:05:51 +00:00
Jerome Gaillard
e92b15ca06 Merge "Call layout when doing an only-measure pass" 2017-01-16 17:40:16 +00:00
Diego Perez
0c864fde58 Add missing attributes to old themes
Because we always use the latest framework code, some resources might
fail to resolve when using old themes (they haven't been backported).
Since this is an artifact caused by us using always the latest code, we
check for some of those values and replace them here.

Bug: http://b.android.com/225105
Test: Included new testActivityOnOldTheme
Change-Id: Ia7a8a27fb81fe0b4a1e0c9610a2033a87720864d
2017-01-16 15:37:12 +00:00
Diego Perez
37f9ddb1c4 Fix plurals support in layoutlib
Bug: http://b.android.com/213000
Test: Manually tested on Android Studio. Adding tests for this specific
case requires bringing a new sdk-common prebuilt to the the maintenance
branch so it's not really practical.

Change-Id: I0646aab656d5d5769355c6cc026e877b8784d173
2017-01-16 15:37:04 +00:00
Diego Perez
df0c47e566 Do not log errors while loading string arrays
When arrays contain references, if we can not resolve them, just return
the reference string. This matches the behaviour of resource resolution
in BridgeTypeArray.

Bug: http://b.android.com/228620
Test: Updates existing tests
Change-Id: Ia324f18d9128b8abf2ba676a83d4b424914e2c88
2017-01-16 15:36:41 +00:00
Jerome Gaillard
7d7ef8400d Hack to deal with android:pointerIcon in layoutlib
android:pointerIcon is a View attribute that can be an enum or a
reference. Layoutlib cannot easily deal with the way that is handled
in the platform. As the property would not have any impact on the
result in layoutlib, that property is bypassed.

Test: Main.testAllWidgets
Change-Id: I38c6c6df45c1836d44b4f80245a453fb432ea251
2017-01-16 15:35:15 +00:00
Diego Perez
6782b0e74a Force animateFirstValue to false
This CL forces both animateFirstValue and animateLayoutChanges to false
in themes when running layoutlib. This helps with the rendering of some
widgets so they do not rely on animations.

Test: Test as part of testActivity
Change-Id: Ic9214929d3582bc3e0a196d198cc4fb36347c782
2017-01-16 15:34:58 +00:00
Diego Perez
f31c1e98d4 Avoid passing antialias when measuring scaled text
This is a workaround for a JDK bug that crashes the VM when
measuring scaled antialsed text.
This disables antialiasing when measuring scaled text in a specific
version of the VM.

Bug: http://b.android.com/211659
Change-Id: I637ed03cf827b65c993550998ac55d42869237ad
2017-01-16 15:34:00 +00:00
Diego Perez
c5708ef76d Catch all exceptions in NativeAllocationRegistry free
The NativeAllocationRegistry delegate free calls might run in the
context of the finalizer thread. If a crash happens during the free
call, it might bring down the finalizer thread and the VM.

Bug: http://b.android.com/213927
Change-Id: I8d4b8ab5b8d0532aad46f27d039a943894e021a0
2017-01-16 15:33:50 +00:00
Jerome Gaillard
57415885f0 Delete Canvas_Delegate.nClipRegion after Change I71f9bd68
Test: layoutlib tests
Change-Id: I9c04fa258cdaf06972b205e5dd5d3b505e5bea17
2017-01-16 15:22:42 +00:00
Diego Perez
e6052ae443 Call layout when doing an only-measure pass
Test: Modified testScrolled to check the only-measure behaviour
Change-Id: Ie86c329e0f7d9135d53274977e24f431f5edc201
(cherry picked from commit 2d657bc344717281e470430b05adaa32fbd0af00)
2017-01-16 14:29:56 +00:00
Jerome Gaillard
02d091aa2a Merge "Update layoutlib following Change Id10ca97f on FontFamily" 2017-01-16 14:24:57 +00:00
Jerome Gaillard
8dd288f420 Merge "Add measure only call to layoutlib" 2017-01-16 14:24:15 +00:00
Jerome Gaillard
1a376e2df4 Merge "Create a mock Display Mode" 2017-01-16 14:20:51 +00:00
Bartosz Fabianowski
9e0642287e Merge "Add install reason" 2017-01-14 12:58:20 +00:00
Roozbeh Pournader
9bddb48413 Update locale data from in-tree ICU
Also add back script information for Yiddish old code (ji) that was
removed in ICU.

Bug: 26756576
Test: none
Change-Id: Ia785f86bf0407aeed6134ef9d44e504494256da2
2017-01-13 17:37:04 -08:00
Fabien Sanglard
191602091b AAPT2: Convert Android.mk to Android.bp
Change-Id: I6c563993b57e3f04165ca57743f9a2878aba556c
2017-01-13 18:56:55 -05:00
Zak Cohen
9013325c3a Merge changes from topic 'vrmode'
* changes:
  Set ui mode in UiModeManagerService to vrheadset when VR mode is enabled.
  Introduce new UI_MODE_TYPE_VR_HEADSET and qualifier.
2017-01-13 23:15:00 +00:00
Bartosz Fabianowski
a34f53f61b Add install reason
This CL allows a reason to be specified when installing a package. The
install reason is a sticky piece of metadata: When a package is e.g.
installed via enterprise policy and an update is then manually
installed or sideloaded, the install reason will remain "policy."
The install reason is tracked separately for each user.

With this CL, two install reasons exist: "policy" and "unknown." Other
install reasons will likely be supported in the future.

Bug: 32692748
Bug: 33415829
Test: Tested manually with "adb install" / "adb uninstall"

Change-Id: I0c9b9e1b8eb666bb6962564f6efd97e41703cd86
2017-01-13 16:51:28 +01:00
TreeHugger Robot
4391fae30e Merge "Compile bit on darwin, use -j when invoking make" 2017-01-12 19:38:54 +00:00
TreeHugger Robot
d96cc6e250 Merge changes I2ff9bd44,I946e681e,If72df07b
* changes:
  Handle content insets for snapshots
  Always remove starting window in performShow
  Initial implementation of snapshots
2017-01-12 17:39:15 +00:00
Jeff Sharkey
9bc89af3f1 Add API for apps to declare their "category".
Upcoming platform features need to cluster apps together into broad
categories to help summarize information to users.  (For example,
when presenting battery, network, and disk usage.)

We are tightly limiting the set of categories to keep them easily
presentable to users when summarizing information.  This feature is
not designed to be a general-purpose taxonomy, nor should it be
allowed to become one.

Older apps may not have defined a category in their manifests, so
allow the installing app to define a category on their behalf.

Test: builds, boots
Bug: 33815939
Change-Id: I785b882ee7c18072ef47d56e0fc19ad72888e1b7
2017-01-12 09:53:44 -07:00
Jorim Jaggi
e2c77f9035 Handle content insets for snapshots
Pass information about content insets of a snapshotted task to
SystemUI and use it there to correctly offset the snapshot
when drawing.

Test: Open app, go to recents, make sure app aligns before
and after the animation.
Bug: 31339431
Change-Id: I2ff9bd44534bd8f66b591385da1e1e3aec40b6c5
2017-01-12 16:28:19 +01:00
Jorim Jaggi
02886a82d8 Initial implementation of snapshots
All this functionality is hidden behind a flag. If this flag is
active, we disable the regular screenshots.

Instead, we take a screenshot when an app transition for which a
task is disappearing is starting. The screenshot gets stored
into a gralloc buffer. SystemUI uses a new method to retrieve
a snapshot gralloc buffer and then draws it using GraphicBuffer.
createHardwareBitmap().

When starting an existing activity in an existing tasks, or when
bringing an existing tasks to front from recents, we add a new
snapshot starting window. For that, we reuse the existing
starting window, but when creating the window, we use a fake
window that draws the contents of the starting window.

Test: runtest frameworks-services -c
com.android.server.wm.TaskSnapshotControllerTest
Bug: 31339431
Change-Id: If72df07b3e56f30413db5029d0887b8c9665aaf4
2017-01-12 16:28:01 +01:00
Jerome Gaillard
7a1cab2c96 Update layoutlib following Change Id10ca97f on FontFamily
Test: layoutlib tests

Change-Id: Ic8872a43993bcb0a157c5e3f0ce423af9b47f606
2017-01-12 15:06:46 +00:00
Seigo Nonaka
e96cbd2773 Merge "Check the count of the families in a default collection." 2017-01-12 06:02:58 +00:00
Romain Guy
d973affed2 Compile bit on darwin, use -j when invoking make
Test: ran the host tool and checked the output
Change-Id: Idd561139348779982b8c01977fcc18fdfbd0134d
2017-01-11 18:34:57 -08:00
Phil Weaver
9fa89381bf Merge "Add flag and listener for a11y volume requests." 2017-01-11 21:57:09 +00:00
Diego Perez
54ffb4358c Add measure only call to layoutlib
Change-Id: Ie36a5218a0356f394356fce2b327f35f57a26951
(cherry picked from commit 7a6d487f9254aaa175976e5832cea78a1a79c9e7)
2017-01-11 20:12:14 +00:00
Diego Perez
57c3440fdc Create a mock Display Mode
Recycler view gets the refresh rate of the display during its setup.
Implementing a Mode that returns a fake refresh rate.

Bug: 32328330
Change-Id: I1025641ec37ca3ec90309b30ad270fd996fd8d46
(cherry picked from commit 4a1c85c71f4de5faeeab2791f80dd7a1ad423f2c)
2017-01-11 20:11:51 +00:00