Commit Graph

501 Commits

Author SHA1 Message Date
Roozbeh Pournader
834641b390 Move locale negotiation to ResourcesManager
Previously, locale resolution happened at Resources level, which
could result in different Resources in the same app using different
locales.

This change moves the locale negotiation to ResourcesManager, which
remembers the locales supported by each Resources as they are
created, and negotiates the locale based on their union.

It also makes sure that the old model of apps getting the default
locale by accessing it through the Configuration's locale attribute
continues to work, since the negotiated locale will be moved to the
top of the list before Resources are created and when they are
updated with a Configuration change.

Bug: 25800576
Bug: 26404653
Change-Id: I0dd81df288327fd8d1229188c9544ee2209c161a
2016-01-25 19:23:38 -08:00
Roozbeh Pournader
2d05094209 Merge "Implement smarter locale resource selection" 2016-01-21 22:17:31 +00:00
Roozbeh Pournader
b927c559e1 Implement smarter locale resource selection
* Add support for determining script from language and region.
* Add support for determining special parents of locales.
* Add support for smart comparison of locales with only a difference
  in region, using the locale parentage tree.
* Fix LocaleData.matchScore() to not fallback to old locale matching
  behavior if we can't determine a script.
* Allow four-character variant codes. (Previously, only five- to
  eight-character variant codes were allowed.)

Bug: 7296673
Bug: 26589793
Change-Id: Ibde0a48c0564ff383b41068095a5cbacfe7b94bc
2016-01-21 13:47:22 -08:00
Rubin Xu
900fe2410d Merge "Add JNI bridge to the new logd security buffer." 2016-01-19 23:31:32 +00:00
Rubin Xu
75431fbe36 Add JNI bridge to the new logd security buffer.
Bug: 26127031
Bug: 22860162
Change-Id: I14e08850ece7d9c0229b7213ee2e25cd089defc1
2016-01-15 17:18:49 +00:00
Alex Klyubin
e415718502 Verify APKs using APK Signature Scheme v2.
This makes Package Manager check whether an APK is signed using APK
Signature Scheme v2 and, if it is, verify the APK's signatures using
that scheme rather than the usual JAR signature scheme.

APK Signature Scheme v2 is a whole-file signature scheme which aims
to protect every single bit of the APK as opposed to the JAR signature
scheme which protects only the names and uncompressed contents of ZIP
entries.

The two main goals of APK Signature Scheme v2 are:
1. Detect any unauthorized modifications to the APK. This is achieved
   by making the signature cover every byte of the APK being signed.
2. Enable much faster signature and integrity verification. This is
   achieved by requiring only a minimal amount of APK parsing before
   the signature is verified, thus completely bypassing ZIP entry
   decompression and by making integrity verification parallelizable
   by employing a hash tree.

Bug: 25794543
Change-Id: If59fe013f2e62bac7677bb20e65f6061b91eec2e
2016-01-13 09:36:41 -08:00
Roozbeh Pournader
a514b63749 Merge "Support properly setting and getting LocaleLists" 2016-01-11 17:48:53 +00:00
Roozbeh Pournader
2b5ab18294 Support properly setting and getting LocaleLists
Two setters are added, a hidden one for fast unsafe calls when the
input is known to be OK, and a public one for normal users.

A hidden constructor is also added for adjusting locale lists and
moving a locale to the front.

Finally, an indexOf method is added. It's only used in testing now,
but it's potentially useful for others too.

Bug: 26404035
Change-Id: I4ab3140134325456a8c3df1b126ccc6f8e3f43fd
2016-01-07 17:08:52 -08:00
Siyamed Sinir
f744b0793b Merge "New regular expression to autolink URLs" 2016-01-07 00:14:26 +00:00
Roozbeh Pournader
fb9236cb0c For locale negotiation, assume English is always supported
In practice, a lot of apps provide English resources as their default
resources, so assume that English is always supported.

With this change, users can safely set secondary locales after
English in their preferred locale lists. Such settings would help
the apps (and parts of the system that are aware of multiple locales)
consider the user's familiarity with the secondary locale or the
user's preference for glyphs forms in the secondary locale.  This
change makes sure that no app unintentionally switches to such
secondary locales.

Note that this doesn't break from the tradition of previous releases.
Traditionally, if the user had set the system locale to English, they
would get the default resources when the app didn't explicitly
provide English resources. This will continue to be the case where
the user's locale list has English in it before another supported
language. (English will be the first locale in most cases.)

Bug: 26192817
Change-Id: I2c1a003760299157786c1b3f9fb116ce18db3b8c
2016-01-05 14:52:38 -08:00
Roozbeh Pournader
4fac768030 Merge "Avoid matching system locales in locale negotiation" 2016-01-05 18:45:29 +00:00
Roozbeh Pournader
d73a4fb22e Merge "Removed outdated TODO for LocaleList" 2016-01-05 02:10:21 +00:00
Roozbeh Pournader
8076c3a685 Removed outdated TODO for LocaleList
The suggested TODO is no longer deemed necessary (and is too
expensive to do for all LocaleLists). LocaleLists get (and will get)
passed down to the native level through strings that are the result
of calls to toLanguageTags(), which is pre-computed at construction
time. Users who need to interact with the native level can do their
own caching, such as in commit
cfc607cf57.

Change-Id: I665f3b28eaf8df309bf1aec96f9d237aeb72865c
2016-01-04 18:03:36 -08:00
Siyamed Sinir
840385c9f6 New regular expression to autolink URLs
Introduced a new regular expression to autolink URLs. Previous regular
expression used the protocol as an optional rule. The new expression
applies separate rules for strings that do not start with a known
protocol and strings that do start with a known protocol.

- In order to reuse previous regular expression definitions for
different parts of a URL, created constants for different parts of
WEB_URL expression.
- Separated the test cases for WEB_URL in order to remove the suppress
command and make them running again.
- Fixed failing tests for punycode urls, which were causing existing
tests to fail.
- Introduced new a regular expression for URL matching.
- Changed the protocol rule to be case insensitive.
- Updated IANA TLDs.
- Added tests for the new regular expression.
- Added tests for Linkify.
- Bug 9622849 is partially fixed.

Bug: 25727599
Bug: 9622849
Bug: 24500693
Bug: 23189367
Bug: 24543148

Change-Id: Ifd62455d342ca7adb22996246ff652e1d5944bec
2016-01-04 17:59:45 -08:00
Roozbeh Pournader
1c686f2ce6 Avoid matching system locales in locale negotiation
Also:
1. Add AssetManager method for finding non-system locales: This is
used in per-app locale negotiation. (Normally,
AssetManager#getLocales() returns both system and non-system
locales.)

2. Match pseudolocales correctly in locale negotiation.

Bug: 25800576
Bug: 26236938
Change-Id: I116caf3a91c290deb4ad68b291c65b7035b18dd4
2016-01-04 13:53:54 -08:00
Doris Liu
4bbc293126 VectorDrawable native rendering - Step 3 of MANY
- Refactored VPathRenderer & VectorDrawableState
- Moved all the VD rendering into native
- Set up hooks for VD's property changes in JNI for animated VD

TODO: JNI calls can be further reduced when we convert the animation
in AVD to use RenderNodeAnimator, in which case animation will be
driven from native and therefore most of the JNI hooks for changing
VD's properties during animation will no longer be needed.

Change-Id: I52021f4d7bea057b83ace54085d870dd45acae0f
2015-12-28 16:08:38 -08:00
Andreas Gampe
8413db8c36 Frameworks/base: Change android.util.Log multiline logging
To avoid long stacktraces being truncated, add code to split up
large chunks along line breaks.

Introduce LineBreakBufferedWriter to chunk up log output. Add a
core test for it.

Change-Id: I34160fbce853c21329f7fa109a9c42506b2066af
2015-12-17 19:00:29 -08:00
Alan Viverette
189d4f5b77 Propagate TextView drawable state after resolving RTL drawables
Bug: 24502082
Change-Id: Iec9c44041622d19401fc074947e15b4843f79d86
2015-12-16 16:06:23 -05:00
Roozbeh Pournader
2591cc8630 Revert "Fix Build: Revert "Implement locale matching in LocalesList.""
This reverts commit 9c2f0d751d.

The original commit, 17b2b2d458, had
missed adding api/test-current.txt.

Change-Id: I26a6325b3cee4c2412ee599f002cc6addb35d36f
2015-12-08 22:28:30 -08:00
Ian Pedowitz
9c2f0d751d Fix Build: Revert "Implement locale matching in LocalesList."
This reverts commit 17b2b2d458.

Change-Id: I93c010054648a7127172a16c6ef3eb5f13604fd7
2015-12-09 02:17:32 +00:00
Roozbeh Pournader
17b2b2d458 Implement locale matching in LocalesList.
The algorithm tries to find the first locale in the locale list
(usually from the user preference) that somewhat matches one of the
locales supported (usually from the list of locales supported by the
system or an app).

Locales match if both their language and their likely script is the
same. Otherwise they don't.

Bug: 25800576
Change-Id: I4fbc3f44ab16d41efebbf941e94a0bb30d598f82
2015-12-08 15:03:39 -08:00
Dianne Hackborn
87a845ce3b Merge "Fix issue #25656837: Static initialization order bug in ArrayMap leading to NPEs" 2015-12-08 00:37:43 +00:00
Dianne Hackborn
894ce60a9f Fix issue #25656837: Static initialization order bug in ArrayMap leading to NPEs
Change-Id: Iec3532ba167b5a09a5e505997e9e6035033f713f
2015-12-04 13:25:48 -08:00
Neil Fuller
1d4775fbb2 Merge "Add thread safety documentation" 2015-12-04 11:09:53 +00:00
Yohei Yukawa
789d8fdbd9 Make LocaleList Parcelable.
This is a preparation work to pass LocaleList from TextView to IMEs via
EditorInfo.

Marshalling and unmrshlling LocaleList via Parcel is actually not so
difficult.  We can reuse its internal data representation "localeTags"
as a canonical serialization format.

As for implementation, there are two choices.  One is making LocaleList
Parcelable and the other is having a utility method to do that.

This CL uses Parcelable approach so that not only Framework but also
application developers can reuse the code.

Bug: 22859862
Change-Id: Ib28363bd5ff74228d2abeaa95004ec8bed72bddd
2015-12-03 15:53:50 -08:00
Przemyslaw Szczepaniak
8a7c1606d8 Move StrictJarFile from libcore to framework
Bug: 25337946
Change-Id: Ib4fac6fa9f534b8654e5ca158bbaedb2393772ba
(cherrypicked from 43ea2cc2a81926a6b2ca13d41f4eab089640129e)
2015-11-27 15:33:15 +00:00
Neil Fuller
bf0dc0fba7 Add thread safety documentation
An upcoming change will remove "synchronized" from the API docs. This change
documents those cases where the guarantees can be determined from code
inspection.

Bug: 25767152
Change-Id: I75083ce01513ed315222304fe3f34190d40748cb
2015-11-26 13:33:48 +00:00
Roozbeh Pournader
cf8c77464a Merge "Support LocaleLists in ActivityManagerService." 2015-11-19 23:44:22 +00:00
Roozbeh Pournader
8bca69858a Support LocaleLists in ActivityManagerService.
Also add a placeholder method for locale negotiation to LocaleList,
to be filled later.

There is no change in behavior expected by this CL yet. But once we
support setting the first locale to something the system doesn't
support, and implement the locale negotiation, this will cause the
system locale to be set to the first supported locale, instead of
just the default from Settings.

Change-Id: Iec983a5707daffb5bf54eac79ff0856a96631960
2015-11-19 14:30:05 -08:00
Doris Liu
804618d086 VectorDrawable native rendering - Step 2 of MANY
Introduced PathData in Java, which is effectively a thin layer around the
native instance. PathData holds the verbs and points which is being used
in path morphing/interpolation. The verbs and points can be interpreted
into skia path commands, which is now done in native and therefore saves
a handful of JNI calls during path creation.

Removed the old PathDataNode mechanism and changed the PathEvaluator
to use PathData instead.

Also added tests and a microbench. Also ran CTS tests for VectorDrawable
and AnimatedVectorDrawable, and passed all of the existing tests.

Change-Id: Ia166f5172ff031fe18b154327967f911a62caec1
2015-11-18 13:38:23 -08:00
Doris Liu
cdd23f9d45 Add hooks in JNI to start using native path parsing
Change-Id: Iaa0d3c2c1936c248146ed7f186a13e8e79be818e
2015-11-11 17:54:52 -08:00
Chet Haase
8240c97b01 Un-hide FloatProperty and IntProperty
These simple utility classes (used internally since Property was first introduced
way back in Jellybean) are the best way to avoid autoboxing when using the Property
approach to ObjectAnimator. But since their hidden, developers have to use the
autoboxing version (Property, the superclass) or know to come up with their own
primitive-optimized property subclasses.

This CL simply un-hides these two classes to make them usable outside of the framework.

Issue #21722783 Make [Int|Float]Property public

Change-Id: I7f3a456d108bf48587d711255d3577cce3ac5e24
2015-11-03 13:41:46 -08:00
Filip Gruszczynski
20aa0aed8c More granular reporting of size configurations.
There are two improvements in reporting size configurations:
1) duplicates are removed;
2) smallest width is reported separately;

Change-Id: I8f8235c99e6eefcae178e8d61e79ad0c4d6f1144
2015-10-30 10:14:17 -07:00
Mitchell Wills
61da59bd9c Merge "Fix TimeUtils.formatDuration for exactly one of a unit" 2015-10-26 23:53:57 +00:00
Roozbeh Pournader
e1e654d09e Merge "Pass the whole locale list down to Minikin." 2015-10-23 01:39:28 +00:00
Roozbeh Pournader
f036ead2a2 Pass the whole locale list down to Minikin.
Also, compute LocaleList's string representation at construction.
This is to further push the cost of doing costly operations related
to LocaleLists to construction time.

Change-Id: Ia55b8ce66b1088ff54cb42eb1e11149b5bd10f17
2015-10-22 13:14:13 -07:00
Teng-Hui Zhu
a992ab45ca Fix segment number for arcTo conversion
AOSP bug:
https://code.google.com/p/android/issues/detail?id=188594

Change-Id: Iaebb8ec7782658a1438cf973ed9a8799da0fdea3
2015-10-20 15:00:13 -07:00
Alan Viverette
2b4dc11566 Animate radial time picker selector during hour/minute transition
Also propagates XML attrs from time picker to radial view during
construction, which allows the hour colors & etc. to be changed
inline without needing to set the timePickerStyle theme attribute.

Bug: 20333885
Change-Id: Ib42b9f5b93b5d6ce1dcbaa05f99cef40c9f9a9d3
2015-10-02 15:29:43 -04:00
Adam Lesinski
1619ed4706 Fix security issues when using Parcel.setDataPosition() with untrusted input
When seeking forward in the Parcel, adding the extracted size to the Parcel.dataPosition()
can result in an overflow. Guard against this.

Bug:23909429
Change-Id: If37cdebbf05a92810300363d1a6ecd8b42b6da26
2015-10-01 20:48:23 +00:00
Mitchell Wills
f9a80cbbfe Fix TimeUtils.formatDuration for exactly one of a unit
Previously printing a duration where a unit (except ms) was one and the
next smallest unit was zero would result in the duration being being
expressed in the next smallest unit. For example 1m0s0ms would be
formatted as 60s0ms.

Update testFormatHugeDuration to supporting times > 999 days
The implementation was fixed in 3d1933c45f

Change-Id: I9d609f7a0f82755ea653a205293a6e3785a10d1e
2015-09-22 15:42:16 -07:00
Teng-Hui Zhu
17a1422a12 Fix implicit lineTo issue
b/23808876

Change-Id: I208e088bfc565ae0d09b826ceff6f9d3c5eb215f
2015-09-10 14:38:21 -07:00
Roozbeh Pournader
a23748a9ff Add LocaleList support to Paint and TextView.
This keeps the existing single-locale APIs working (and adds
parameter annotations to them), while adding an API for setting and
getting the whole locale list.  At the moment, the implementation
ignores the actual data in the locale list except for its primary
locale.

Also add a method to LocaleList to return the system's default locale
list. (Currently a one-member list just containing the system
default locale.)

Change-Id: Icea9d164ddae51f50dd71e18b5d91c96f233b8b8
2015-09-01 14:12:40 -07:00
Roozbeh Pournader
b46fdd427c Make res.Configuration support locale lists.
We also deprecate the locale attribute, but works around the cases in
which people would call it.

Also add various methods to LocaleList to support the features
Configuration requires.

Change-Id: Iacc537e5fc1a3d4c1ea7e5517347876ca4e07e0a
2015-08-27 17:54:01 -07:00
Roozbeh Pournader
0ba0d6bb18 Add first implementation of LocaleList.
This is a first implementation, just to get the basics in, so we can
experiement with how the system would interact with locale lists.

Change-Id: I75d386f24f693c6c1bdefc9386a7142aec2de37c
2015-08-19 15:31:08 -07:00
Dianne Hackborn
e337bd50e7 am 997a3688: am 4ce98e4e: am e92b1374: am ea5ce408: am 15f704e7: Merge "Fix issue #23122445: Add 420 density" into mnc-dev
* commit '997a368855117f4f3b80160bd0cc2dcc3f6841a5':
  Fix issue #23122445: Add 420 density
2015-08-12 01:08:27 +00:00
Dianne Hackborn
1e9c51a00a Fix issue #23122445: Add 420 density
Change-Id: I15c113eb7e22f1d882db071c007224746f9d408f
2015-08-11 17:18:53 -07:00
Dianne Hackborn
908109c1f9 am 0385e3e9: am 8e63bbfd: am efa4dee1: am 977d421a: am f0e5501e: Merge "Fix issue #22989030: Separate battery whitelists" into mnc-dev
* commit '0385e3e908fb9988bb2d2d0d15e32cb6a819b34e':
  Fix issue #22989030: Separate battery whitelists
2015-08-08 02:49:41 +00:00
Dianne Hackborn
4a503b1ece Fix issue #22989030: Separate battery whitelists
We now have a new whitelist you can put apps in, which
opts them out of the old battery saver mode and new app idle,
but doesn't keep them from going in to doze.  This is for a few
special cases that we had previously whitelisted for battery saver,
and inherited to the new modes...  ultimately we should figure out
how to get these apps out of the whitelist completely, but this
will help for now.

Apps in this new whitelist are not shown in the UI, because they
are still significantly restricted by not being able to operate
normally in doze.  This also means they are still visible in the
list of all apps for the user to be able to put them on/off the
complete whitelist if that is what they really want.

In the course of doing this, I needed to clean up code in the
network policy manager to better separate management of the
two firewall rules that now have different whitelists applied
to them.  This also hopefully just generally simplifies and cleans
up that code.  Hopefully!

Change-Id: I92e15f2f85899571dd8b049b5e3eb1354f55f353
2015-08-07 14:23:32 -07:00
Robert Greenwalt
374d91df94 Revert "DO NOT MERGE Enhance local log."
This reverts commit dd6f844129.

bug:22632129
Change-Id: Ibd4b9c35b66cb7d877085bc010fde45a682ba34f
2015-07-29 14:11:23 -07:00
Robert Greenwalt
dd6f844129 DO NOT MERGE Enhance local log.
to be reverted with ag/733658
bug:22632129

Change-Id: Id3899ee8e987ccc469394dd4d0c41465c48dc37e
2015-07-24 12:44:03 -07:00