274 Commits

Author SHA1 Message Date
Dianne Hackborn
d4310ac944 Rework permissions to be retained when an app is temporarily uninstalled.
This allows us to keep the assigned permissions when apps are temporarily
removed due to the SD card being unmounted, and also if you use the
facility to uninstall an app but keep its data.

Also fixes issue #2515189: Potential permission spoofing attack in
Android (external bug 7166)

Change-Id: I2a120ec938552028c989f9e0e890c32773957738
2010-03-18 02:02:17 -07:00
Dianne Hackborn
5c83a5f2cc resolved conflicts for merge of 2ecce34f to master
Change-Id: Ic4e38199beaf8c16f9d28ac5296e8aaa61788b36
2010-03-12 16:46:46 -08:00
Dianne Hackborn
061d58a101 Fix problem with starting a translucent activity in onCreate().
Fixes issue #2437252: Starting activity by means of startActivityForResult
causes 5 seconds delay if "android:windowIsTranslucent" is true

The optimization to avoid showing an activity window when a new
activity is being started was a little too aggressive.  Now it
avoids doing this if there is not actually a fullscreen activity
on top to cover it.

Change-Id: I630e37a1f1d3b874b5a25572cbf887cebc2e3e91
2010-03-12 15:41:24 -08:00
Dan Egnor
a455d19486 Record some logcat output with crashes, ANRs, etc..
Shelling out to logcat from the system server makes me queasy,
so this is turned off by default -- it must be enabled individually
for each error type (system_app_anr, etc) via a secure settings
value (which I plan to poke into from gservices for internal use).

Even when enabled, it happens in a side thread, unless the system
server is about to die anyway (system server restart).

Change-Id: Id6d88bcd78d3625f0364a5fe9c771046601a5a14
2010-03-12 13:01:45 -08:00
Mike Lockwood
b62f959430 Fix problems with new PowerManager.reboot() implementation.
ShutdownThread.reboot() does return so we need to block after calling it
to prevent PowerManager.reboot() from returning.

Since PowerManager.reboot() can now take significantly longer than before,
we now ignore ANRs during shutdown.

Change-Id: Ibceeb265ae382567215f6a399108d8be3a7bbc95
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-12 12:35:24 -05:00
Josh Bartel
2ecce34f2f Synchronize access to *Locked() functions
Several places were calling *Locked() functions without properly
synchronizing.

Change-Id: Ie39b6592da8bb5f4a5a1e738c45f228256116ec4
2010-03-11 08:30:16 -06:00
Dianne Hackborn
b8b11a0b1d Further improvements to window management!
Fix issue #2493497: Stuck in the Emergency dialer - Home/Back keys doesn't work
This was another case of not updating the window focus when needed, this time
when the lock screen was hidden.

Also re-arrange the layout/animate flow to address issues where you would see
a flicker of whatever was behind the lock screen when showing a new activity that
hides the lock screen.  This was because we were deciding to hide the lock screen
during the layout phase, which meant we had to do it without considering whether
it had drawn.  So we could hide the lock screen before the window is shown for the
first time after being drawn.  Now we can do this in the policy during animate, so
we can wait until the window is drawn and actually being shown.

The flow in perform layout is thus significantly changed, where the layout and
animate loops are both under the same repeating loop.  The actual flow from this
should be the same, but it now allows the policy to request a new layout after
the animation loop is done.  This actually cleans up a number of things in this
code as the complexity has increased.

Finally this includes a change to the ui mode manager when switching modes, to do
the resource configuration switch at a different time.  This makes transitions
between modes much cleaner (though not yet perfect).

Change-Id: I5d9e75c1e79df1106108dd522f8ffed6058ef82b
2010-03-10 16:47:57 -08:00
Josh Bartel
7f2087435e Rename functions which ought to be named *Locked()
Several functions operate on variables to which access needs to be
synchronized.  However, it happens that the functions in question
are only ever called from places which have already synchronized.
Therefore, nothing is really wrong, but the functions ought to
have 'Locked' appended to their names, to indicate that it is the
caller's responsibility to synchronize before calling them.

Change-Id: I44e7dc0dff6da9436677cb10908dce41ffeba195
2010-03-10 17:27:48 -06:00
Christopher Tate
4528186e0d Refactor android.backup => android.app.backup
Change-Id: I0b21316ff890d7f3c7d4b82837bb60670724c2e8
2010-03-05 16:27:15 -08:00
Dan Egnor
9bdc94b7a4 Improve watchdog diagnostics.
Capture stack traces from the system process using the same
mechanism as ANRs (which will initialize traces.txt, etc).
Also record the watchdog reset in the dropbox for uploading.

Bug: 2475557
2010-03-04 17:31:27 -08:00
Dianne Hackborn
20cb56e26e Fix some bugs.
Bug #2376231: Apps lose window focus (and back key causes ANR) if the
lock screen is dismissed while the phone is in landscape mode

This is another case where we weren't recomputing the focused window
after changing the visibility policy.

bug #2479958: Investigate source of "Resources don't contain package
for resource number 0x7f0a0000"

Um, okay, so it turns out there were bugs all over the place where
we would load an XML resource from a another application, but not
use the Resources for that application to retrieve its resources...!
I think the only reason any of this stuff was working at all was
because it typically only cared about retrieving the resource
identifiers of the items (it would look up the values later).

Bug #2401082: Passion ERE26 monkey crash - InputMethodManagerService

Add some null checks.
2010-03-04 11:52:14 -08:00
Joe Onorato
5d3bea6229 fix the build 2010-03-01 13:44:29 -08:00
Joe Onorato
8a9b22056b Switch the services library to using the new Slog 2010-03-01 13:06:50 -08:00
Dianne Hackborn
28a8c2bc14 resolved conflicts for merge of 4dcd2ee8 to master 2010-03-01 11:30:02 -08:00
The Android Open Source Project
4dcd2ee8ca merge from open-source master 2010-03-01 09:30:21 -08:00
Magnus Edlund
7bb2581e6f Fix problem with restarting an application process that recently has died.
There exists a race condition when starting a process that recently has died.
If the ActivityManager receives the death notification for the died process
after the new process has been started but before an application thread has
been attached to the new process will the newly created process be removed
during the cleanup of the died process. If this happens when sending a broadcast
could it result in an ANR.

This is solved by doing the clean up before starting a new process that uses
the same process record.
2010-03-01 09:12:07 -08:00
Dianne Hackborn
8f7f35e0cc Add new -W option to Am to wait for the start to complete. 2010-02-26 16:34:33 -08:00
Dianne Hackborn
c3b91fd26a Fix crash in PendingIntentRecord debug output.
Add null checks to a few places to avoid crashes when dumping
debug data.

Also add some sanity checks for accessing content providers in
the activity manager.
2010-02-24 13:12:52 -08:00
Dianne Hackborn
9e0f5d9a63 Fix some random bugs.
2185256: After open &close of device keyboard shortcut does not added to Home desktop.

ActivityThread was losing the last saved state when restarting or launching into
a paused state.

2366174: defaults not cleared when they should be

PackageManagerService now removes any preferred activity records for a package
when it is uninstalled.

2154556: Battery stats can have an unbounded number of wake locks

We now start combining wake locks into one shared record when we hit a
maximum limit (currently 20).

2442519: Foreground services can have no notification by providing a bogus one.

If the notification manager rejects our notification, the service is forced to
no longer be in the foreground.

2442383: Finalization issues in com.android.server.am.PendingIntentRecord.java

Cleaned up finalization to call super class and avoid the big activity manager
lock (we still need to use the locks inside of the message system, but these
are much less likely to be a problem).

2284190: Cannot call a phone number using adb

We weren't getting the calling uid/pid in startActivity() if the caller did not
supply an application record.
2010-02-22 20:45:58 -08:00
Dianne Hackborn
21f1bd17b2 Fix issue #2438980: Implement package watcher for voice recognizer service setting
I am getting tired of writing package monitor code, realized this is missing in
a number of places, and at this point it has gotten complicated enough that I
don't think anyone actually does it 100% right so:

Introducing PackageMonitor.

Yes there are no Java docs.  I am still playing around with just what this
thing is to figure out what makes sense and how people will use it.  It is
being used to fix this bug for monitoring voice recognizers (integrating the
code from the settings provider for setting an initial value), to replace
the existing code for monitoring input methods (and fix the bug where we
wouldn't remove an input method from the enabled list when it got
uninstalled), to now monitor live wallpaper package changes (now allowing
us to avoid reverting back to the default live wallpaper when the current
one is updated!), and to monitor device admin changes.

Also includes a fix so you can't uninstall an .apk that is currently enabled
as a device admin.

Also includes a fix where the default time zone was not initialized early
enough which should fix issue #2455507 (Observed Google services frame work crash).

In addition, this finally introduces a mechanism to determine if the
"force stop" button should be enabled, with convenience in PackageMonitor
for system services to handle it.  All services have been updated to support
this.  There is also new infrastructure for reporting battery usage as an
applicatin error report.
2010-02-22 11:27:52 -08:00
Dianne Hackborn
e36d6e277e Work on issue #2263557: PMF3000 showing hybrid of portrait and landscape modes
This is a bunch of reworking of how configuration changes are handled:

- When orientation is changing (for whatever reason), the window manager no
  longer tries to pre-emptively compute a new configuration.  Instead, it
  just determines  change is happening and tells the window manager.
- The activity manager is now responsible for giving the window manager the
  final configuration it is using.  This is both so it knows whem the
  activity manager is done with its configuration updates, and so the window
  manager can use the "real" configuration.
- When an orientation or other configuration change is happening, freeze the
  screen and keep it frozen until the activity manager has given us the
  final configuration.
- The window manager can now send new configurations to its clients during
  its layout pass, as part of a resize, if it has determined that it has
  changed.  This allows for a new View.onConfigurationChanged() API for any
  view to easily find out when the configuration has changed.
- ViewRoot now also works with the activity thread to make sure the process's
  current resources are updated to the new configuration when it receives one
  from a window.  This ensures that at the time onConfigurationChanged() and
  other view callbacks are happening, the correct configuration is in force.
- There is now a sequence number associated with Configuration, which
  ActivityThread uses to avoid using stale configurations.  This is needed now
  that it can receive configurations asynchronously from both the window
  manager and activity manager.
- The hack for keeping the locale has been removed, and underlying problem
  fixed by having Configuration initialize its locale to "unknown" instead of
  a valid default value.
2010-02-18 15:47:34 -08:00
Joe Onorato
6a6588b4ac am 6371a2d3: am ee3bbefd: Merge "Don\'t crash the system process when apps give us a bad foreground service notification." into eclair
Merge commit '6371a2d31f30b473e91be9cced64a2527c086af1'

* commit '6371a2d31f30b473e91be9cced64a2527c086af1':
  Don't crash the system process when apps give us a bad foreground service notification.
2010-02-18 11:02:48 -08:00
Joe Onorato
6371a2d31f am ee3bbefd: Merge "Don\'t crash the system process when apps give us a bad foreground service notification." into eclair
Merge commit 'ee3bbefd34fd5330ebbc59175a328197ab7526af' into eclair-plus-aosp

* commit 'ee3bbefd34fd5330ebbc59175a328197ab7526af':
  Don't crash the system process when apps give us a bad foreground service notification.
2010-02-18 04:52:46 -08:00
Joe Onorato
34fcf97103 Don't crash the system process when apps give us a bad foreground service notification. 2010-02-18 07:45:17 -05:00
Eric Rowe
6f4f619369 Fix formatting of ANRs.
Fix for cases where an extra newline would be added and/or a newline at the end of a line would be ommited.
2010-02-17 18:29:04 -08:00
Ben Cheng
6c0afff7f0 Detect system-wide safe mode and configure the VM accordingly.
For the system server process, do the disableJitCompilation/startJitCompilation
callbacks depending on whether the system is in safe mode or not.

In addition, if the system is found to be in safe mode, a flag will be set in
the Zygote class which will be used to launch subsequent apps in VM safe mode.

Bug: 2267590
2010-02-16 15:12:55 -08:00
Kenny Root
3619b9abd8 Fix dumpsys activity service <name>
Refactoring of the dumpsys framework introduced a comparison that
always made the action dump all the services.

Change-Id: I1f3ac2bd903e39e2a6e8632e8cbb23a982dfe0c6
2010-02-16 11:06:38 -08:00
Dianne Hackborn
5ce7d28a07 Small oom_adj tweaks.
Include a proper name for processes that are in the background
with running services that have been running for a long time (instead
of showing them as bg-empty).

Batch together multiple processes into the same background bin when
there are significantly more processes than bins.  Arguably this
should be smarter and base the binning on the number of background/empty
processes instead of the total count, but this should be good
enough for now.
2010-02-16 10:54:49 -08:00
Dan Egnor
18e9396235 Eliminate dependencies on Checkin, replacing checkin events with EventLog
events (and in one case, a DropBox entry).

Add a simple intent that triggers master-clear (and toggle EFS), given the
right permissions.

Bug: 2264596
Bug: 2350452
Bug: 2264596
2010-02-11 10:22:09 -08:00
Ben Cheng
23085b781e Support per-application switch to execute the VM in safe mode.
The new attribute can be set by adding android:safeMode="true"
in AndroidManifest.xml with the SDK.

Tested with pairing locally compiled SDK with Eclipse and verified that the JIT
(the only component currently included in the safe mode) is indeed disabled
with the new attribute.

Bug: 2267583
2010-02-10 14:51:31 -08:00
Suchi Amalapurapu
b56ae20b22 Rename media resource broadcasts
Add checks for fwdlocked and updated system apps
add more tests
remove duplicate adds
2010-02-08 14:52:25 -08:00
Suchi Amalapurapu
08675a3376 Apps on sdcard: Add new broadcasts
Add new broadcasts ACTION_MEDIA_RESOURCES_AVAILABLE and
ACTION_MEDIA_RESOURCES_UNAVAILABLE that get broadcast by
PackageManagerService when sdcard gets mounted/unmounted
by MountService so that packages on sdcard get recognized by
various system services as being installed/available or
removed/unavailable by the system.
The broadcasts are sent before the actual package cleanup which includes
mounting/unmounting the packages and we force a gc right after so
that any lingering file references to resources on sdcard get
released.
2010-02-02 18:33:29 -08:00
Dianne Hackborn
9327f4f671 More device policy work: clarify password modes, monkeying.
Clarifies what the password modes mean, renaming them to "quality"
and updating their documentation and the implementation to follow.

Also adds a facility to find out if a monkey is running, which I
need for the api demo to avoid letting it wipe the device.
2010-01-29 17:16:02 -08:00
Jacek Surazski
41a9fd55ac timestamp field in ApplicationErrorReport was not getting intitialized on ANRs 2010-01-27 16:37:21 -08:00
Dan Egnor
66c40e7366 Add package information to dropbox reports for ANR, crash, etc.
(Notably including package version codes, to help when we're shipping
out-of-cycle unbundled app updates.)
2010-01-26 16:23:11 -08:00
Dan Egnor
2780e73ae7 As requested, expand ANR event log entry (and crash/WTF too) to include
process flags (including FLAG_SYSTEM, etc).
2010-01-22 14:47:35 -08:00
Dianne Hackborn
c0cea48576 am 5f641285: am b1c4a2a3: Fix issue #2364506: Phone locked up while listening to music and attempting to download an update
Merge commit '5f64128568d815f91dcd37db43d4e26a0566b41c'

* commit '5f64128568d815f91dcd37db43d4e26a0566b41c':
  Fix issue #2364506: Phone locked up while listening to music and attempting to download an update
2010-01-22 11:59:41 -08:00
Jacek Surazski
e0ee6efb1e Add systemApp field to ApplicationErrorReport 2010-01-20 12:27:58 -08:00
Dianne Hackborn
5f64128568 am b1c4a2a3: Fix issue #2364506: Phone locked up while listening to music and attempting to download an update
Merge commit 'b1c4a2a3b37fccf68e6a9563cccf1685df2bf3e7' into eclair-plus-aosp

* commit 'b1c4a2a3b37fccf68e6a9563cccf1685df2bf3e7':
  Fix issue #2364506: Phone locked up while listening to music and attempting to download an update
2010-01-19 19:59:04 -08:00
Dianne Hackborn
b1c4a2a3b3 Fix issue #2364506: Phone locked up while listening to music and attempting to download an update
Make sure calls into the notification manager are not done with the
activity manager lock held.

Change-Id: Ib53c3b9f46160d94ee1e7079b1a5123e0d1225d8
2010-01-19 15:36:42 -08:00
Dianne Hackborn
d68478467e First pass at new device policy and administration APIs.
This adds new DevicAdmin, DevicePolicyManager, and DeviceAdminInfo classes.
See the java docs for each on documentation on them.  Basically: a DeviceAdmin
is what you derive from to administer a device; DevicePolicyManager is what you
use to apply and check your policy requirements and perform other administration
tasks.
2010-01-17 15:10:24 -08:00
Dan Egnor
42471dd555 Simplify & update ANR logging; report ANR data into the dropbox.
Eliminate the per-process 200ms timeout during ANR thread-dumping.
Dump all the threads at once, then wait for the file to stabilize.
Seems to work great and is much, much, much faster.

Don't dump stack traces to traces.txt on app crashes (it isn't very
useful and mostly just clutters up the file).

Tweak the formatting of the dropbox dumpsys a bit, for readability,
and avoid running out of memory when dumping large log files.

Report build & kernel version with kernel log dropbox entries.
2010-01-11 14:51:22 -08:00
Doug Zongker
43866e0c48 move some system services from gservices to secure settings
Change-Id: Ie2dfb99a2b42b2cc9310b858c044d8684e3493fa
2010-01-07 14:20:39 -08:00
Dianne Hackborn
03abb8179f Kill the task killers.
The ActivityManager.restartPackage() API is now deprecated, and no longer
allows applications to mess up the state of other applications.  This was
being abused by task killers, causing users to think their other applications
had bugs.

A new API is introduced for task killers,
ActivityManager.killBackgroundProcesses(), which allows these applications
to kill processes but only the same amount that the out of memory
killer does, thus causing no permanent damage.  The old restartPackage()
API is now a wrapper for calling this new API.

There is also a new private forceStopPackage() API that is used for the
system's force stop UI which does what the old restartPackage() API did.
2010-01-05 15:47:05 -08:00
Dianne Hackborn
c59411b176 Rework activity manager debug dumps.
Change how we do debug dumps from the activity manager to make
everything go through the activity manager interface (no more
secondary interfaces), and use the command line arguments to
control what gets dumped.

The output from dumpsys without args still dumps everything.

When just dumping the activity service, we now dump a subset
of all of the am state that is interesting without being
overwhelming.

You can use "dumpsys activity -h" to get help with other things
that can be dumped.
2009-12-21 20:20:59 -08:00
Dan Egnor
60d8762413 DropBox logging of app & system server crashes.
The crashes are also reported to the event log (and of course the
main logcat, like they always have been).  Ordinary Log.e(t,m,e) isn't dropboxed
but there's a new Log.wtf() which always is.  (Still @pending in this change.)

Add a hook to IPowerManager to crash the system server on demand
(only for apps with REBOOT permission, since it's basically a restart).
This is not exposed in PowerManager, must be invoked directly -- mostly
this is there so "Bad Behavior" in dev tools can do it.
2009-12-21 16:03:19 -08:00
Dianne Hackborn
dd71fc8bae Rework the LRU list for hidden and empty processes.
This is intended to solve a problem on devices with more memory
where we can fill up that memory with processes that contain activities
(hidden processes), leaving no room for empty processes.  Thus if a
process is receiving broadcasts regularly, or starting and stopping
a service, or such, we will continually create its process only to
have it immediately killed when done.

There is certainly some tuning that should be done on this as we
look at the actually behavior.  The implementation here puts all of
the hidden and empty processes into one list, trying to make some
preferences for the very most recently used activity's processes to
stay at the top and not get pushed out by other processes being
started in the background.
2009-12-17 16:03:49 -08:00
Dianne Hackborn
83652ebfe1 am 3a3fd2ba: Merge change Iaf1f0918 into eclair-mr2
Merge commit '3a3fd2ba1ffc6171725375396cc59711a34bb39e' into eclair-mr2-plus-aosp

* commit '3a3fd2ba1ffc6171725375396cc59711a34bb39e':
  Implement API to have new broadcasts replace existing broadcasts.
2009-12-14 16:10:13 -08:00
Dianne Hackborn
1c633fc89b Implement API to have new broadcasts replace existing broadcasts.
Use this in various places where it should serve no purpose to deliver
both broadcasts.  This is intended to reduce somewhat the flurry of
broadcasts that we churn through during boot.
2009-12-14 15:03:35 -08:00
Dianne Hackborn
c1e6b91d75 am c9ca93fb: am 474731d5: Merge change I2ffe306f into eclair
Merge commit 'c9ca93fbf9ff49ca4b74c4ec72d3f7580b3b7659' into eclair-mr2-plus-aosp

* commit 'c9ca93fbf9ff49ca4b74c4ec72d3f7580b3b7659':
  Fix issue #2304284: contacts/dialer/recentcalls constantly flashing
2009-12-13 12:34:09 -08:00