Commit Graph

2851 Commits

Author SHA1 Message Date
jgu21
2eacd06bfb Frameworks/base: Early init native bridge
Add the app directory to the arguments for starting a process.
Add a check for NeedsNativeBridge and a call to PreInitializeBridge
in the native fork code.

Change-Id: I0b93da93251c6b4638de786bf98cf99df07c3fc2
2014-09-22 16:04:37 -07:00
Andreas Gampe
aec67dcc02 Frameworks/base: Add native bridge post-fork initialization
Change-Id: I5a20de1cb68dd1802937b369b14c50c9c1031c67
2014-09-03 21:38:34 -07:00
Mathieu Chartier
9a88f10b89 Remove unnecessary explicit GC in ZygoteInit.
Removes > 1s of GC time and hundreds of GC during device boot.

Zygote size before: 8388608
Zygote size after: 8388608

No increase in zygote space size due to zygote compaction.

Bug: 16398684

Change-Id: I3c6f5a0b26a207ab39bb0a952400d7488e42f00c
2014-08-20 10:57:45 -07:00
Jeff Sharkey
2013cb1f91 Merge "Prevent system_server shutdown when trying to format external storage" 2014-08-12 20:07:20 +00:00
Narayan Kamath
9e6d9d4c81 Add an internal API to get all asset locales.
This will allow us to not copy paste this code verbatim into
bundled apps.

bug: 10090157
Change-Id: I008dc683ecbef2ad8b7a26968cb3cbda7e5a8388
2014-07-14 16:29:22 +01:00
Narayan Kamath
7be75338a3 Allow 3 letter language codes in InputMethodUtils.
Replace locale.substring(0, 2) with a function that always
returns the first component of the locale (assumed to be the
language).

bug: 10090157

(cherry picked from commit cefc79c6b18bb2e824c299e7b9e212071e5ebc43)

Change-Id: I56b02dd0c6dc222daa3ceade841a30879449bb4a
2014-07-14 09:42:55 +01:00
Christopher Tate
ef3b35b48c Merge "Logging in LocalTransport on as default" 2014-07-10 17:35:34 +00:00
Henrik Baard
2db2b9aa36 Logging in LocalTransport on as default
The logging is LocalTransport.java is enabled by
default.

Change default to false to remove logs, as this class
states that it is only for debug.

Change-Id: Iae63c7b62edbd503c606f0aee671a9579e78843d
2014-07-10 08:46:39 +02:00
Narayan Kamath
759e0d6a7a Merge "Fix LocalePicker locale filtering." 2014-07-04 08:02:36 +00:00
Narayan Kamath
80b574199c Fix LocalePicker locale filtering.
This was broken by commit b27c137087 which
removed a badly phrased check. Prior to that commit,
there was a check that excluded locales whose toString()
length was not 5.

This change reinstates that check in a less roundabout
way, by excluding BCP-47 tags that don't have a country
subtag.

bug: 16038949

Change-Id: Ic24b1df87b2e2ce47d9ae04c7759088721f27b4f
2014-07-03 13:31:42 +01:00
Narayan Kamath
6e84f8c1b9 Merge "Fix native crashes when APKs can't be opened." 2014-07-01 17:48:27 +00:00
Narayan Kamath
b27c137087 Fix broken assumptions in LocalePicker.
This code assumed that the locale is always 5 chars in
length and was of the form xx-YY. This is not necessarily
true. The language can be 3 letters in length and the locale
might have a script and variant.

Also cleans up several nasty pieces of code and eliminates
unnecessary array copies and improves readability by using
idiomatic java.

bug: 15873165
bug: 10090157

Change-Id: Iab1cfd7b78e5772b1245654f2153caf63a96033d
2014-07-01 11:12:24 +01:00
Narayan Kamath
ec4516470d Fix native crashes when APKs can't be opened.
There was lax / incomplete error checking around the
construction of Apk handles. This change changes the ApkHandle
API and makes it throw IOException if the zipfile couldn't
be opened.

Additionally :
- Fix a resource leak in DefaultContainerService
- Report errors correctly during package moves.

bug: 15563874
Change-Id: Ic71a10709eb82b8f53405bbfb2320e80aa96b771
2014-06-30 17:14:29 +01:00
Narayan Kamath
d47e38b634 Scan for renderscript files before deciding ABIs.
The presence of ".bc" files in an APK implies
incompatibility with any of the 64 bit ABIs.

bug: 14900093

Change-Id: I66ca339a9a149cb3b7e7b349033d80acdeb4140a
2014-06-03 12:58:35 +01:00
Narayan Kamath
6431d11cd4 Add an --abi argument to "pm install"
This allows callers to force an install to a particular
ABI. This is intended only for testing (and CTS) and is
not meant for usage by the installer package.

Change-Id: Icb1528c0cd35b1aa9323386cb35ff4aaba374fcb
2014-06-03 11:11:47 +01:00
Brian Carlstrom
452c592191 am 197565e0: Merge "Move to dalvik.vm.lib.2 to force default to libart"
* commit '197565e0e800be3c731e679914f40afa1aab98fd':
  Move to dalvik.vm.lib.2 to force default to libart
2014-05-28 22:31:39 +00:00
Brian Carlstrom
5bc93866b0 Move to dalvik.vm.lib.2 to force default to libart
Bug: 14298175

(cherry-picked from commit 2ef5abb8d534f016582d6023054cbe69d8114b6b)

Change-Id: Icd91982c09076e87092906106cbff4a81589e8de
2014-05-28 14:53:40 -07:00
Christopher Tate
d6d7587ab0 am a0166b58: Merge "Activity chooser "Always" button is not working"
* commit 'a0166b58de38e0d2d67f9d847d307cf3ce7bf633':
  Activity chooser "Always" button is not working
2014-05-23 02:22:40 +00:00
Xiong Li
e88b042d1d Activity chooser "Always" button is not working
When ResolverActivity is created with a custom list of matching
applications (rList) as in NFC case, and the alwaysUseOption is
set to true, the prferredActivity is not saved even if the user
presses the "always" button.

When a list is provided the variable mBaseResolveList will be
!= null. This will set mOrigResolveList = null.

When an activity is choosen and one of the buttons are pressed
onIntentSelected is called. The first thing this method does
is to check mAdapter.mOrigResolveList != null, however in this
case mOrigResolveList is always null, and the value is not
saved as PreferredActivity.

This problem was introduced in
6d8dfbd814.

Change-Id: I9eac41b7861b5e68ad3978af0dc0285f2a34eb88
2014-05-22 11:58:41 +02:00
Narayan Kamath
be3dc5754f am 402120a2: Merge "Wait for secondary zygote before bringing up the system_server."
* commit '402120a2236b294dff9a51461cb22400a6ef67f6':
  Wait for secondary zygote before bringing up the system_server.
2014-05-15 13:38:17 +00: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
Bill Yi
9a76e9ba1a Fix build error
Change-Id: I6f52954a780b747f1ad2a4e429ef192d58c40e76
2014-04-29 18:52:48 -07:00
Bill Yi
293513a59d Merge commit '0b62467b142b61ee1e449ba958ba37dfd961ef56' into HEAD 2014-04-29 16:07:29 -07:00
Elliott Hughes
a9569ff70f Fix two zygote imports.
Change-Id: I5eea2d9f48479c33e1594aaa259274e5e787a1df
2014-04-28 20:53:52 -07:00
Elliott Hughes
860c5911a2 Move the Zygote off libcore.os and onto android.system.
Change-Id: Iaa20e50b05fad355bdf15bcfdc58efc9941c400c
2014-04-28 19:19:13 -07:00
Daniel Leung
49cbafad9b Zygote: enable CAP_BLOCK_SUSPEND capability for system server
Starting from kernel 3.6, it requires processes to have the capability
CAP_BLOCK_SUSPEND to set/unset wake locks. Adds CAP_BLOCK_SUSPEND
to the list of capabilities for system server, so that PowerManager
can set wake locks.

Change-Id: I3246e6f6e6cb8f0bedb1c0417ed07085ee1f3aaa
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2014-04-24 19:12:38 +01:00
Mark Salyzyn
69eb6f57e3 Native Runtime: Add LOG_ID_CRASH
Change-Id: I4e3a82636901c5169cc6b714a4fec815cd757c58
2014-04-15 15:22:23 -07: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
c41638cb75 Make zygotes aware of their supported ABIs.
Query system properties for the list of ABIs and pass
it as a command line argument to ZygoteInit.

Also add a new Zygote command that returns this list of
ABIs to peers.

Change-Id: I68034c6f63fa626911122579a011a0a25a8cda94
2014-04-09 13:41:15 +01:00
Christopher Tate
5eab368c4d Always call super.onCreate(). Always.
Bug 12991134

(cherrypick of commit 9d6376a1d8)

Change-Id: Ife16ef93408253e3318a06dc0206ab4b88c7f367
2014-04-04 23:06:13 +00: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
John Eckerdal
a804d65f4a Prevent system_server shutdown when trying to format external storage
The SystemUI does not provied path information on which volume that should
be formatted. So when the user selects "Blank CD Card" an intent is sent to
ExternalMediaFormatActivity and forwarded to ExternalStorageFormatter then
actual volume that is unformatted is not included in the information sent
in the Intent.
This causes the ExternalStorageFormatter to go through Environment to find
a Volume but the actual volume found that way is not correct.

To solve the issue look up the correct StorageVolumeand reuse the existing
EXTRA_STORAGE_VOLUME extra and send it as part of the Intent.

Change-Id: Ib360a9ce071ebe95fc3ca847ed68b6db05928a42
2014-03-20 14:37:30 +01:00
Jeff Sharkey
275d14befc am eeb36c5c: am d88d8174: Merge "Null pointer exception in FileRotator.java"
* commit 'eeb36c5cfc107fe9128490e9e127c2bca2d24e28':
  Null pointer exception in FileRotator.java
2014-03-17 16:39:06 +00:00
Yohei Yukawa
daf27b85f1 am fd2f8d43: am 51b921d0: DO NOT MERGE - Preserve the order of InputMethodManager method calls
* commit 'fd2f8d43419d1f25ced8b2bac96407925dd4c471':
  DO NOT MERGE - Preserve the order of InputMethodManager method calls
2014-03-14 19:00:17 +00:00
Yohei Yukawa
51b921d0e3 DO NOT MERGE - Preserve the order of InputMethodManager method calls
Cherrypick of I0f8d33b0c77129f72581bc43e7f4fdc25469b520

This CL allows the Framework class InputMethodManager to behave
in a more deterministic way, that is to say, with an I/O barrier.

InputMethodManager#setAdditionalInputMethodSubtypes is internally
implemented as a RPC to the corresponding counterpart in
InputMethodManagerService. The problem here is that this RPC is
marked as "oneway". As a consequence, this public API call
returns immediately without waiting the additional subtypes are
actually added. This behavior is also not documented so far
unfortunately.

See the following demo code:

  Final InputMethodManager imm = ...;
  imm.setAdditionalInputMethodSubtypes(id, subTypes);
  Final List<InputMethodInfo> ims = imm.getInputMethodList();

Currently, it is not guaranteed that the InputMethodInfo returned
from #getInputMethodList reflects the result of the previous call
of #setAdditionalInputMethodSubtypes because of its undocumented
asynchronous nature.

With this CL, InputMethodManager#setAdditionalInputMethodSubtypes
behaves as if it has I/O barrier. This change should make it easy
for IME developers to use additional subtype mechanism.

BUG: 13033954
BUG: 13291370
Change-Id: I0455b176bfb3176c533ba3241881f05092b98abc
2014-03-14 11:52:09 +09:00
Mikael Gullstrand
bbf1861fdd Null pointer exception in FileRotator.java
Sometimes a null pointer exception is thrown when examining files
managed by the file rotator.

The logs from the test show that the Wifi state is changed a large
number of times. On every state change, a write operation is
initiated on the file system. This will eventually result in out
of memory and the call to mBasePath.list() in the maybeRotate(...)
method in FileRotator.java will return null so the iteration will
throw a NullPointerException.

Change-Id: I5d5980d9593bc9ec75281169ca27ee591809903f
2014-03-13 17:25:01 +01:00
Adam Powell
4af04c87ad am 75958c29: am 3a153c0d: Merge "Fix a bug in submenu presenter priority handling" into klp-dev
* commit '75958c298477a3d1e556c4fe36e516b9e828c311':
  Fix a bug in submenu presenter priority handling
2014-03-11 23:04:56 +00:00
Adam Powell
190909f2c1 Fix a bug in submenu presenter priority handling
Now that overflow menus and the PhoneWindow-level ListMenuPresenter
can coexist, make sure that ListMenuPresenter handles submenus spawned
by itself. Introduce an internal API for menus to prefer a specific
presenter when performing item actions.

Bug 11979407

Change-Id: Id0b8fcbb8b310cbb3a63a1e5ea7a89de5d53f86f
2014-03-10 10:30:59 -07:00
Adam Powell
d33dd01420 am 96192157: am f175b19a: Merge "Fix a bug where OnTouchListeners in action views could be removed" into klp-dev
* commit '96192157b88d3630827a9ffd55693866734b4da3':
  Fix a bug where OnTouchListeners in action views could be removed
2014-03-08 06:23:47 +00:00
Adam Powell
f175b19aaa Merge "Fix a bug where OnTouchListeners in action views could be removed" into klp-dev 2014-03-07 23:28:19 +00:00
Dianne Hackborn
731ef29831 am 8e904d56: am 785d764b: Merge "More on issue #12031685 (DO NOT MERGE)" into klp-dev
* commit '8e904d565e8a54f755814e9ae062743b8b012731':
  More on issue #12031685 (DO NOT MERGE)
2014-03-07 18:31:36 +00:00
Dave Platt
9eca7f8fbc am 53c7608a: am a3c3533b: Merge "Finish fixing Zygote descriptor leakage problem"
* commit '53c7608aefb0ed754394e571cac02e96ad6fcdb3':
  Finish fixing Zygote descriptor leakage problem
2014-03-07 02:29:30 +00:00
Adam Powell
c9e5f540a9 Fix a bug where OnTouchListeners in action views could be removed
ActionMenuPresenter should only replace the touch listener when binding
a generated item view.

Bug 12470259

Change-Id: I8c4c6110065605225a20cb7ed872255282085661
2014-03-06 17:57:05 -08:00
Dianne Hackborn
cb15c7a83b More on issue #12031685 (DO NOT MERGE)
Integrate from master:

Fix issue #13065185: Frequent runtime restarts on launching...

..."Hill Climb Racing" app

A service is in use when it is in the restarting state.

Change-Id: Iffdea96f867f89089e7ad07b4b1bef056951a5e8
2014-03-06 17:39:11 -08:00
Brian Carlstrom
ac3b177cc1 am 2cd0563c: am 3038046b: Merge "frameworks/base: Rename persist.sys.dalvik.vm.lib to allow new default"
* commit '2cd0563cb8345747d3705d4f339a0800998767fe':
  frameworks/base: Rename persist.sys.dalvik.vm.lib to allow new default
2014-03-07 00:37:27 +00:00
Christopher Tate
a6c5915876 am f63ae644: am 1e995c76: Merge "Update PackageMonitor to recognize new \'replacing\' semantics" into klp-dev
* commit 'f63ae644a80ef2d0bd7bfb448eebb19691e4b6ec':
  Update PackageMonitor to recognize new 'replacing' semantics
2014-03-05 00:57:18 +00:00
Christopher Tate
88c908323a Update PackageMonitor to recognize new 'replacing' semantics
The ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE broadcast now uses the
EXTRA_REPLACING intent extra when it is sent as part of an upgrade operation
on a forward-locked application.  Update PackageMonitor to recognize this
new information and express it appropriately to the observer.

Bug 11988313

Cherry-pick from master.

Change-Id: Iecea1876ffc918f23f9fa5845f1f89ed8d740dd5
2014-03-03 17:40:41 -08:00
Dave Platt
89d4c897a0 Finish fixing Zygote descriptor leakage problem
In order to prevent Zygote descriptors from leaking into the child
environment, they should be closed by the forked-off child process
before the child switches to the application UID.  These changes close
the descriptors via dup2(), substituting a descriptor open to
/dev/null in their place; this allows the Zygote Java code to close
the FileDescriptor objects cleanly.

This is a multi-project change: dalvik, art, libcore, frameworks/base,
and external/sepolicy are affected.  The CLs need to be approved
together, lest the build break or the software fail to boot.

Round 2: indent change

Bug: 12114500
Change-Id: I090402136a8a8b7d6aad6eb153026e85d7cf6ad3
2014-02-06 13:24:38 -08:00
Brian Carlstrom
c6c633608a frameworks/base: Rename persist.sys.dalvik.vm.lib to allow new default
Bug: 12798969
Change-Id: Ibb7ed86867e4dca53ad7fe33326b08e6f5e664c4
2014-01-30 13:16:48 -08:00
Dave Platt
bd9acc2218 am e966e577: am 02f042dd: Fix socket descriptor leak from Zygote to child app
* commit 'e966e5774ad8d478bc89b541bcac3740fe267d18':
  Fix socket descriptor leak from Zygote to child app
2014-01-07 11:53:07 -08:00