Commit Graph

32698 Commits

Author SHA1 Message Date
Narayan Kamath
8dcfefd652 Support an ABI flag for instrumentation.
Allows us to choose what ABI a process uses when
launching it with "adb shell am instrument", for eg.

adb shell am instrument --abi arm64-v8a component/runner

Note that we only perform very basic validation of the
ABI. In general, there is no guarantee that the app will
launch with the instruction set we choose, for eg. if it
has native libraries that are for a different ABI.

bug: 14453227

Change-Id: Ifb7e89b53675080dc87941091ee5ac360f218d7f
2014-05-16 10:30:00 +01:00
Narayan Kamath
402120a223 Merge "Wait for secondary zygote before bringing up the system_server." 2014-05-15 13:34:09 +00:00
Narayan Kamath
706b1d7ea0 Merge "Remove "required" prefix from ABI fields." 2014-05-15 12:39:36 +00:00
Narayan Kamath
6e35a2ad05 Remove "required" prefix from ABI fields.
As per a comment on an earlier code review.

(cherry-picked from commit a9d64733421d6765eab5c2730fa912f068e26047)

Change-Id: I064cffc13c323b721f3a16c83e0e95ee348ef9f6
2014-05-15 10:57:05 +01:00
Torne (Richard Coles)
da8c037c8b Avoid supported ABI list containing "unknown".
If one of the ABI list system properties is undefined/empty (as
ro.product.cpu.abilist64 is on a 32-bit only device), getString returns
"unknown", which ends up creating a 1-element array with "unknown" as a
member. Fix this to instead just get the empty string and split that
into a 0-element array.

Change-Id: I0d0a54eb06bb04427bcf0487e2a16d4180b81116
2014-05-14 16:17:26 +01:00
Narayan Kamath
64cd907af9 Wait for secondary zygote before bringing up the system_server.
The zygote that's responsible for starting up the system server
now checks if there's another zygote on the system, and waits
for it to start up. Also, a few minor clean ups :

- Address a long standing TODO about zygote retries.
- Have functions throw IOException where appropriate and
  wrap them in ZygoteStartFailedEx with a filled in cause.

bug: 14869939

Change-Id: I9e514659b79b3d2c98a4c5f93c0c376843f6c881
2014-05-13 15:24:26 +01:00
Brian Carlstrom
ff1ec4d9e7 Use package usage information to decide what dex files to optimize in PackageManagerService
Change-Id: Iac137311e2e9d5139b5aa8651c6f3d296802612a
2014-05-06 15:06:25 -07:00
Narayan Kamath
0349e8c478 Package manager changes for dual zygote stack.
- Pass down the app's instruction set to dexopt so that
  it can compile the dex file for the right architecture.

- Also pass down the app's instruction set to rmdex, movedex
  and getSize so that they can construct the cache file
  location properly.

- Temporarily compile "system" jars such as am,wm etc. for
  both architectures. A follow up change will ensure that
  they're compiled only for one architecture (the same
  arch. as the system server).

- Java "shared" libraries are now compiled for the right
  architecture when an app requires them.

- Improve the app native library ABI detection to account
  for system apps installed in /system/lib{64}/<packagename>
  and also handle sdcard and forward locked apps correctly.

(cherry-picked from commit b4d35dc8e9702f9d0d82d35a105f0eea35672b52)
2014-05-01 13:54:48 +00:00
Christopher Tate
c84471c2e0 Handle /oem and /vendor as well
Bug 13170859

(cherry-picked from commit 740888f62e)

Change-Id: I7b5e206697fcbec146cac6cd83fca5c583a8cbd7
2014-05-01 13:51:33 +00:00
Narayan Kamath
d6d1dbac3f Implement FileUtils#contains.
Partial cherry-pick of changes 4ca728c0 and 21de56a9, which
can't be cherry-picked due to their large surface area.

Change-Id: Ife46e150d360cd5241dea93863141749233c1805
2014-05-01 14:01:44 +01:00
Michael Wright
54c3529b4d Merge "WallpaperManager: add NULL pointer check for getCropAndSetWallpaperIntent" 2014-04-30 19:02:56 +00:00
Allen Shen
1c0f21ea84 WallpaperManager: add NULL pointer check for getCropAndSetWallpaperIntent
Originally the api 'getCropAndSetWallpaperIntent' does not check
whether the parsed parameter is a NULL pointer, as leads to the
whole app crash if it call this api with a null parameter accidentally.
A null pointer check logic is added into its original parameter check
logic, so that this API will throw an IllegalArgumentException if it
is parsed with a null pointer

Change-Id: Ib7de40e571419d09e1a744edc969eb7162766b75
2014-04-30 17:09:19 +08:00
Bo Liu
02931d9af6 DO NOT MERGE Add invokeFunctor stub
Change-Id: Ib7637d68c4f63065b909075a8f5d8cd1dd0674bd
2014-04-29 11:38:37 -07:00
Elliott Hughes
bbd87eb919 Merge "Track libcore.os' move to android.system." 2014-04-28 18:14:00 +00:00
Elliott Hughes
34385d352d Track libcore.os' move to android.system.
(This is partial, but should cover everything in AOSP master except
for the zygote.)

Change-Id: I1042c99245765746a744c44e714095cb2c6cb75d
2014-04-28 11:11:32 -07:00
Mathieu Chartier
83f7d0d67f Use Runtime.gc instead of System.gc for DDMS.
System.gc doesn't always do a GC unless to attempt to run the
finalizers after you call System.gc.

Bug: 14325353
Change-Id: Iebed7fad5576d610cea13a86e7d3d46652c67478
2014-04-28 11:07:22 -07:00
Mark Salyzyn
747802f8aa EventLog: event log translation errors
- Deal with L using v3 event log format, or K using v1 or v2 event log format

Change-Id: Id4fb205f51b7e506135888d565acf1604497b91f
2014-04-25 13:45:03 -07:00
Selim Gurun
8c2d70f5e8 Merge "Add a stub for forgotten callback to fix master-gpl." 2014-04-25 01:08:48 +00:00
Selim Gurun
4e48f40b03 Add a stub for forgotten callback to fix master-gpl.
Change-Id: I375dba89403d09dc39f696de04e0811633ecc803
2014-04-24 18:04:04 -07:00
Selim Gurun
adad989b6a Merge "Add a stub to fix master-gpl" 2014-04-25 00:39:10 +00:00
Selim Gurun
85b89bf7a3 Add a stub to fix master-gpl
Change-Id: I4cadd3a6e33843ccac4ef2eacbe508e40628367c
2014-04-24 17:31:07 -07:00
Neil Fuller
43582df3db Changes to support asynchronous close interruption
This change contains fixes to base from libcore change
I37de3e7d1a005a73821221e6156d10b95c595d7a

Bug: 13927110

Change-Id: I2d96e50307611c269dcf47886cd4d976854da8fc
2014-04-23 16:40:35 +00:00
Mark Salyzyn
69eb6f57e3 Native Runtime: Add LOG_ID_CRASH
Change-Id: I4e3a82636901c5169cc6b714a4fec815cd757c58
2014-04-15 15:22:23 -07:00
Narayan Kamath
2d84a406bf Workaround 64 bit devices that don't have zygotes yet.
This can be fixed by tweaking their BoardConfig as well,
but that leads to all sorts of other problems.

For now, fall back to the primary zygote if the secondary
is unavailable. This will fail if shared libraries for the
primary zygote ABI are unavailable, but that won't be the
case just yet.

bug: 13970103
Change-Id: Ifa107e43ca95023d57a0d9c641e4fddaccd9a888
2014-04-11 19:24:53 +01:00
Elliott Hughes
8cd319b846 Merge "Add additional languages to be accepted by the NumberPicker input filter" 2014-04-11 17:30:09 +00:00
Ramin Zaghi
ff0c470833 System services detect and register app CPU ABIs
This patch uses the NativeLibraryHelper class to
match native libraries in an .apk package with
those listed in 'ro.cpu.abilist' property.
The result is stored in packages.xml and the
ApplicationInfo class.

This information will be used by the ActivityManager
to decide which zygote to use to launch the given
app.

Change-Id: I3ec3d050996d8f4621f286ca331b9ad47ea26fa0
2014-04-09 17:20:13 +01:00
Ramin Zaghi
1378aba7ae Re-implement native library search and copies.
We now use a two step approach :

- First we look through the list of shared libraries in an
  APK, and choose an ABI based on the (priority)  list of ABIs
  a given device supports.
- Then we look through the list of shared libraries and copy
  all shared libraries that match the ABI we've selected.

This fixes a long-standing bug where we would sometimes copy
a mixture of different ABIs to the device, and also allows us
to clearly pick an ABI to run an app with.

The code in NativeLibraryHelper has been refactored so that all
file name validation & matching logic is done in a single place
(NativeLibrariesIterator). This allows us to avoid a lot of
redundant logic and straightens out a few corner cases (for eg.
where the abi determination & copying logic do not agree on
what files to skip).

bug: https://code.google.com/p/android/issues/detail?id=65053
bug: 13647418

Change-Id: I34d08353f24115b0f6b800a7eda3ac427fa25fef
Co-Authored-By: Zhenghua Wang <zhenghua.wang0923@gmail.com>
Co-Authored-By: Ramin Zaghi <ramin.zaghi@arm.com>
Co-Authored-By: Narayan Kamath <narayan@google.com>
2014-04-09 17:16:40 +01:00
Narayan Kamath
4444dcd0ad Allow connections to multiple zygotes.
Adds a new String argument "abi" to Process.start.
This method will now query the zygotes to
determine what ABIs the primary and the secondary
zygote support (the secondary is optional) and dispatch
a fork request over the right zygote connection.

Both zygotes are assumed to be active at all points.

Change-Id: I460319b4481ff1c1666e8172223691820658a35c
2014-04-09 15:07:10 +01:00
Narayan Kamath
f626ca2c96 Don't allow MemoryFiles of negative length.
Prevents us from converting a (signed) jint into an
(unsigned) size_t and having horrible things happen.

Change-Id: I0f04e2eb9852ae7fc49b435fd0974f56e86751a4
2014-04-08 16:14:10 +01:00
Raph Levien
c420ce34ba Merge "Marquee text RTL improvements" 2014-04-03 15:50:29 +00:00
Ben Murdoch
369a00574d Merge "Update ViewRootImpl for 64bit functor type." 2014-04-03 09:48:43 +00:00
Ben Murdoch
cf61c9b71f Update ViewRootImpl for 64bit functor type.
Change-Id: Ie9020f0276c58ebf0977e4aef725fbc26aaf67b2
2014-04-02 14:41:41 +01:00
Narayan Kamath
973b4663b0 Move zygote startup logic to the frameworks.
The Zygote class is now in com.android.internal.os. It is
responsible for the vast majority of work before and after
the call to fork(). It calls back into the Runtime via
the new dalvik.system.ZygoteHooks class to allow the Runtime
to perform pre fork cleanup and post fork initialization.

The native code in Zygote.cpp is a direct and straightforward
port of the existing code in art. Most differences are
superficial, for example :
- We use C style logging (ALOGE) instead of stream based
  logging.
- We call env->FatalError() instead of using LOG(FATAL)

Change-Id: Ia101fb2af12d23894fe57e4134d2bc6d142e5059
2014-04-02 10:18:43 +01:00
Brian Carlstrom
ff9ca781d0 Improve detail message for X509TrustManagerExtensions argument validation
Bug: 13728564
Change-Id: I03d08babcdc0d11baff5e76a339b4285e92edee8
2014-03-31 11:22:34 -07:00
Jeff Hao
e3abd2ccbe Mark constructor as accessible in LayoutInflater.
Needed to bypass new access checks for fields, methods, and
constructors.

Change-Id: I8ff0b44a6cb4f4af1c72734bca366d8b89528030
2014-03-28 11:33:53 -07:00
Kenny Root
587a9455de CertificateChainValidator: initialize TrustManagerFactory
Need to call TrustManagerFactory#init before use. I suspect this class
isn't used anywhere since this hasn't caused a problem yet.

Change-Id: I17425d0bba4795d71960062361a755830abba7de
2014-03-26 08:40:45 -07:00
Michael Lekman
89bc413b8f Marquee text RTL improvements
Changed marquee text to scroll according to
the reading direction. Arabic text will
show the right edge and scroll towards
the left edge and vice versa for Latin.

Corrected marquee flicker when scroll animation
finished. The ghost scroll's x position was cast
to int and it made the text flicker when
marquee stops.

Ghost part didn't display for RTL languages.
Added multiplication with
getParagraphDirection to negate the ghost
offset.

Change-Id: I689039118df01a62f73ef0079c857fea1bfcc5a0
2014-03-25 18:03:34 +00:00
Kenny Root
da776c872e Use X509ExtendedTrustManager and not Conscrypt
This allows the new X509ExtendedTrustManager to be used instead of
Conscrypt directly.

Bug: 13103812
Change-Id: I736f475342395f26657f2371828a6d3a0065a50a
2014-03-24 17:05:22 -07:00
Alex Klyubin
a2507e8764 Adjust to the change in the private SSLParameterImpl API.
Conscrypt's SSLParameterImpl getDefaultTrustManager was renamed to
getDefaultX509TrustManager.

Bug: 13563574
Change-Id: I601c651d631f5a2e4a04d21941186553988e5286
2014-03-21 11:13:50 -07:00
Narayan Kamath
0f3fd6c66e Merge "Remove stray logging statement." 2014-03-11 12:00:55 +00:00
Narayan Kamath
c3955e7e5a Remove stray logging statement.
bug: https://code.google.com/p/android/issues/detail?id=66974
Change-Id: Ie34c102de143cf6aeb16c78778dda3ef5e928380
2014-03-11 11:08:41 +00:00
Jeff Brown
6d71e165ba Merge "Round off when calculate next step in Seekbar" 2014-03-11 00:06:40 +00:00
Jeff Brown
a41ddccdc6 Merge "Fixed typo errors in documentation" 2014-03-11 00:06:25 +00:00
Jeff Brown
35c8ebab0a Merge "take account of RotationVector's new extra parameter" 2014-03-11 00:04:49 +00:00
Dave Allison
0efbd9a463 ART profiler usage.
This is a change to add args to some of the profiler related
functions, including installd commands.

Also read properties and set command line options for the runtime
profiling parameters.

Changed calls to isDexOptNeeded() to isDexOptNeededInternal().  This
needs additional arguments passed for profiles.

Bug: 12877748
Change-Id: I1a426c9309d760bac0cf92daa298defee62287c1

Conflicts:
	core/jni/AndroidRuntime.cpp
2014-03-07 12:32:44 -08:00
Narayan Kamath
27ad525c7e Inform libcore of time format pref. changes.
- Introduce a boolean extra for intent TIME_CHANGED that
  specifies if the user wants a 24 hour format or not.
- Have the ActivityManagerService inform running processes
  of changes to this preference.
- Add plumbing in ActivityThread to inform j.t.DateFormat

Change-Id: I05fafb903ae54e39c03a048b7a219dc5a93fd472
2014-03-07 13:48:04 +00:00
Martijn Coenen
29e55bef77 Merge "NFC: getNdefMessage() should throw exception if no tag in field." 2014-03-06 14:33:11 +00:00
Dave Platt
3fc376b733 Harden NsdManager against null-dereference crashes
Due to race conditions or programming errors, the NsdManager
can attempt to process an asynchronous status message (and issue
a callback to the listener) after the listener has already been
removed from the NsdManager state.  This causes dereferencing of
null objects, and a crash.

Split out the three async-queue message cases:  these are ones
in which message.arg2 does not hold an NsdManager array index
and the code should not interpret this field as if it were.

Add an explicit check for "null listener" (the array index in the
message has already been released), log a warning, and exit early.

Safeguard accesses to the "NSD service type" string from a (possibly
null) NsdServiceInfo object... return a constant "?" string rather
than crashing.

Bug: 9016259

Change-Id: I40aabdfc65d86fdd0eaac7a1e7e56e6ff69796cf
2014-03-04 13:25:02 -08:00
Dave Platt
d75932b521 Fix descriptor leak after accepting connections
After accepting a connection on a listening socket and
storing the resulting FileDescriptor into a newly created
LocalSocketImpl, the new impl's "descriptor was created
locally and should be closed normally" flag should be set.

(cherrypicked from 3e7305c6bf)

Bug: 11805817
Change-Id: I0a1a7c62ec3fbcf647a44a22110ddc778d14e5f4
2014-02-28 12:04:51 -08:00
Narayan Kamath
2d19d202bd Make getAssetInt throw unconditionally.
All callers have been moved over to getNativeAsset, and
this method has been hidden from the public API internally.

Change-Id: I5f29b5ddb4449adadf426e49a4085c7320289a15
2014-02-25 15:48:07 +00:00