Commit Graph

1636 Commits

Author SHA1 Message Date
Christopher Tate
d85a4ed283 DO NOT MERGE: Don't trust callers to supply app info to bindBackupAgent()
Get the canonical identity and metadata about the package from the
Package Manager at time of usage rather than rely on the caller to
have gotten things right, even when the caller has the system uid.

Bug 28795098

Change-Id: I62710b15bb601fdfedd68e32349168c10725eb45
2016-06-14 13:28:33 -07:00
Wale Ogunwale
78a22fd273 Prevent system uid component from running in an app process
Bug: 21669445
Change-Id: I792c6e676d4b6d54a51228d264130b8125075d98
2015-06-25 09:29:58 -07:00
Todd Kennedy
8719f683d2 DO NOT MERGE Restore calling identity before checking permission
Using the system service identity to check the CHANGE_CONFIGURATION
permission isn't likely to catch a security violation. Changing
back to the original caller and then checking permissions is
preferred.

Cherry picked from lmp. Fixes bug 15989465.

Change-Id: Iff08d04422bcc052a487194154f1fd0d727d38f4
2015-01-14 15:40:46 -08:00
Jeff Vander Stoep
1b4f1a794d am 1c2eaa78: am 660af7eb: am 59c1202e: Merge "Change permission guard on bindBackupAgent()" into jb-mr2-dev
* commit '1c2eaa784b2376b674cf438f42342271c8aa79a8':
  Change permission guard on bindBackupAgent()
2014-09-23 16:50:16 +00:00
Jeff Vander Stoep
1c2eaa784b am 660af7eb: am 59c1202e: Merge "Change permission guard on bindBackupAgent()" into jb-mr2-dev
* commit '660af7eb1a55e2df7da45aa63ca227141ef86b34':
  Change permission guard on bindBackupAgent()
2014-09-11 18:58:49 +00:00
Jeff Vander Stoep
a8f6d1bffc Change permission guard on bindBackupAgent()
Bug: 15829193
Change-Id: I6c1c39923b7b1a9f528f97da10913cb7f2d7e8f9
2014-09-10 14:20:14 -07:00
Craig Mautner
81e094d76b Merge "Move task to top in window manager." into klp-dev 2014-03-25 16:48:38 +00:00
Craig Mautner
97024321fc Move task to top in window manager.
In certain situations it was possible for a task to move to the top
in activity manager but not in window manager. This resulted in
the task appearing behind the launcher icons.

Fixes bug 13410184.

Change-Id: If0582b395e126a8aff70a0e4c64b731083c6ae8a
2014-03-20 10:08:04 -07:00
Craig Mautner
b4998eec3c Fix loop limits.
Fixes bug 12207606.

Change-Id: I9b450d2bc2a72a1f6581147f8930188f34c85299
2014-03-19 14:09:59 -07:00
Craig Mautner
477897ad7b Merge "Fix incorrect setting of TaskRecord.frontOfTask. DO NOT MERGE." into klp-dev 2014-03-14 22:30:04 +00:00
Craig Mautner
fdf28cc4be Fix incorrect setting of TaskRecord.frontOfTask. DO NOT MERGE.
When Intent.FLAG_ACTIVITY_REORDER_TO_FRONT was set the TaskRecord
member frontOfTask was being set true incorrectly for the top
activity. It should only be true for the bottom activity. This fix
ensures that frontOfTask is always set correctly for all activities by
consoldating it into one method.

Fixes bug 12171535.

Change-Id: If982dad3c81b2b816adc5d89e7e0496923098a70
2014-03-14 22:28:07 +00:00
Craig Mautner
3217cc6ff2 Merge "Fix activities appearing behind launcher icons" into klp-dev 2014-03-14 00:40:20 +00:00
Craig Mautner
e0663591a5 Fix activities appearing behind launcher icons
cherry picked from d5c91ece7b

Change-Id: I76d20398e71c1be4accfaed6b0791674197b4fb0
2014-03-13 16:16:20 -07:00
Dianne Hackborn
3026d0bf0a Fix issue #11965706: Calls using IntentChooser are now Broken in 4.3 and 4.4
The activity manager needs to set launchedFromPackage to be that of
the previous package in the case where flow has been redirected
through an intermediate activity.

Change-Id: I678fc2e7d984991ac715251a784ba7d7ccbf9fca
2014-03-12 11:16:29 -07:00
Dianne Hackborn
52f610d248 Fix issue #13199860: PRE_BOOT_COMPLETED intent is...
...broadcasted repeatedly at every boot time

Remember the last done pre-boot receivers, so that if we have
a new pre boot receiver appearing (without the platform version
changing), when we re-write the file of done receivers it will
contain all of them, not just the new one.

Change-Id: I4ed3478edc549d4b023ec4b3719111bc4d970ae4
2014-03-06 10:52:05 -08:00
Dianne Hackborn
76c59a89e9 Fix issue #11536426 DO NOT MERGE
Permission denied when trying to launch an activity from a notification

We don't remove pending intents when updating an app, which is necessary
to keep app widgets and other things working.  However, when uninstalling
an app, we should clear out all of its pending intents.

Change-Id: I95067b31098115b5a7b127766fd093750063bbb8
2014-03-06 10:12:57 -08:00
Dianne Hackborn
c174288d34 Fix issue #12031685: Sticky Service Breakage in Android 4.4.1
Got a little too aggressive about cleaning up service state; need to
avoid removing services from an app until we are in the second loop
doing the final cleanup, otherwise we can leave services around with
restarting their process.

Also fix crash:

W/BinderNative(  667): Uncaught exception from death notification
W/BinderNative(  667): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
W/BinderNative(  667): 	at android.util.ArraySet.valueAt(ArraySet.java:301)
W/BinderNative(  667): 	at com.android.server.am.ActiveServices.killServicesLocked(ActiveServices.java:2069)
W/BinderNative(  667): 	at com.android.server.am.ActivityManagerService.cleanUpApplicationRecordLocked(ActivityManagerService.java:12412)
W/BinderNative(  667): 	at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:3596)
W/BinderNative(  667): 	at com.android.server.am.ActivityManagerService.appDiedLocked(ActivityManagerService.java:3744)
W/BinderNative(  667): 	at com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied(ActivityManagerService.java:1024)
W/BinderNative(  667): 	at android.os.BinderProxy.sendDeathNotice(Binder.java:493)
W/BinderNative(  667): 	at dalvik.system.NativeStart.run(Native Method)
2014-01-13 17:10:03 -08:00
Dianne Hackborn
90e9b1d3dc Fix issue #11790471: Crash removed home buttons and notification bar/shade
Whoops persistent processes are, well, persistent.  Don't remove
services from them.  We'll be keeping that process record around.

Change-Id: I29e9fb6f704efdf0caad5e0307a7adbb416eed3b
2013-11-21 12:56:03 -08:00
Adam Lesinski
245408d290 Merge "Do not hold direct ref BatteryStatsImpl$Uid$Proc" into klp-dev 2013-11-18 21:26:32 +00:00
Adam Lesinski
2cd3fb5aa7 Do not hold direct ref BatteryStatsImpl$Uid$Proc
BatteryStatsImpl can reset its collected data, including
removing a BatteryStatsImpl$Uid$Proc object. If a ProcessRecord
has a direct reference, then the battery stats for a process
will be recorded in an old Proc object and prevent GC, causing
a memory leak.

bug:11087238
Change-Id: I19a9cd9d8361c10446a8ebdd5c0860b56c442209
2013-11-18 12:29:34 -08:00
Christopher Tate
99437f252b Merge "Ensure recipient can be launched before attempting broadcast delivery" into klp-dev 2013-11-14 22:59:20 +00:00
Dianne Hackborn
2e3ede7497 Merge "Maybe fix issue #11634365: Leaking restarting services" into klp-dev 2013-11-14 22:56:14 +00:00
Dianne Hackborn
ddc19e9847 Maybe fix issue #11634365: Leaking restarting services
It looks like we could add services to the restart list because
they end up left in the process's list of running services after
they have been removed from the main activity list, and we can
trip up on them there when the app is being force stopped.

Change-Id: I79805b67fcf5b593430dc5c856c97927e1a54a57
2013-11-14 14:32:17 -08:00
Christopher Tate
ba629da331 Ensure recipient can be launched before attempting broadcast delivery
User removal or eviction inherently races with broadcast delivery.  This
patch introduces a latest-possible recheck of the availbility of the
target application before attempting to send it a broadcast.

Once the process has actually been spun up the system is essentially
committed to presenting it as a running application, and there is no
later check of the availability of the app: the failure mode for
continuing to attempt delivery is a crash *in the app process*,
and is user-visible.

We now check the app+userid existence of the intended recipient
just prior to committing to launch its process for receipt, and
if it is no longer available we simply skip that receiver and
continue normally.

Bug 11652784
Bug 11272019
Bug 8263020

Change-Id: Ib19ba2af493250890db7371c1a9f853772db1af0
2013-11-14 12:37:31 -08:00
Craig Mautner
1f0f9fa949 Merge "Add null pointer check." into klp-dev 2013-11-14 00:15:55 +00:00
Craig Mautner
ada62fca51 Add null pointer check.
Fixes bug 11673948.

Change-Id: I60b590b9793ae1b8d5c3d343f4bb6cb40ba4a092
2013-11-13 15:09:55 -08:00
Craig Mautner
5d9f547720 Relayout windows that handle their own config change.
If a window claims to handle its own configuration change then we
won't destroy and recreate its window on a configuration change.
Normally that recreation triggers the first layout following
orientation change because mHaveFrame is false. Windows that handle
their own configuration changes never got a relayout pass following a
change in orientation.

This change passes the configuration changes that an application
handles into the AppWindowToken. If the app says it handles
orientation or screen size changes then a relayout will occur when the
configuration has changed.

Fixes bug 11647107.

Change-Id: Ie8d49fd050442ebbdcf0b805087894e3a2fc4be9
2013-11-12 14:02:52 -08:00
Dianne Hackborn
d6f5b62921 Work on issue #11634365: Leaking restarting services
Tighten up some flows to try to avoid any chance of leaving
a restarting service on the list, add a log to the only remaining
place I could find that we could get in to trouble for some
reason.

Change-Id: Iffb9be9d97deefc6cf0c5790eedfeb6e4e8a36bc
2013-11-11 17:25:37 -08:00
Dianne Hackborn
bc72dce075 Fix issue #11630188: Still seeing some processes not on LRU list errors
This happened:

android.util.Log$TerribleFailure: Adding dependent process ProcessRecord{43c7a120 0:com.google.android.gms/u0a7} not on LRU list: service connection ConnectionRecord{437c16e0 u0 CR ACT com.google.android.gms/.icing.impl.IndexService:@436ba7f8} from ProcessRecord{43c64208 4908:com.google.android.googlequicksearchbox:search/u0a19}
	at android.util.Log.wtf(Log.java:290)
	at android.util.Slog.wtf(Slog.java:82)
	at com.android.server.am.ActivityManagerService.updateLruProcessInternalLocked(ActivityManagerService.java:2290)
	at com.android.server.am.ActivityManagerService.updateLruProcessLocked(ActivityManagerService.java:2508)
	at com.android.server.am.ActiveServices.updateServiceClientActivitiesLocked(ActiveServices.java:636)
	at com.android.server.am.ActiveServices.removeConnectionLocked(ActiveServices.java:1656)
	at com.android.server.am.ActiveServices.unbindServiceLocked(ActiveServices.java:860)
	at com.android.server.am.ActivityManagerService.unbindService(ActivityManagerService.java:12773)
	at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:869)
	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2071)
	at android.os.Binder.execTransact(Binder.java:404)
	at dalvik.system.NativeStart.run(Native Method)

Because of this earlier:

11-09 18:02:19.126 W/ActivityManager(  809): Exception when starting service com.google.android.gms/.icing.impl.IndexService
11-09 18:02:19.126 W/ActivityManager(  809): android.os.DeadObjectException
11-09 18:02:19.126 W/ActivityManager(  809): 	at android.os.BinderProxy.transact(Native Method)
11-09 18:02:19.126 W/ActivityManager(  809): 	at android.app.ApplicationThreadProxy.scheduleCreateService(ApplicationThreadNative.java:850)
11-09 18:02:19.126 W/ActivityManager(  809): 	at com.android.server.am.ActiveServices.realStartServiceLocked(ActiveServices.java:1384)
11-09 18:02:19.126 W/ActivityManager(  809): 	at com.android.server.am.ActiveServices.bringUpServiceLocked(ActiveServices.java:1294)
11-09 18:02:19.126 W/ActivityManager(  809): 	at com.android.server.am.ActiveServices.bindServiceLocked(ActiveServices.java:755)
11-09 18:02:19.126 W/ActivityManager(  809): 	at com.android.server.am.ActivityManagerService.bindService(ActivityManagerService.java:12766)
11-09 18:02:19.126 W/ActivityManager(  809): 	at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:859)
11-09 18:02:19.126 W/ActivityManager(  809): 	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2071)
11-09 18:02:19.126 W/ActivityManager(  809): 	at android.os.Binder.execTransact(Binder.java:404)
11-09 18:02:19.126 W/ActivityManager(  809): 	at dalvik.system.NativeStart.run(Native Method)

Not clearing the service's app pointer.

Also fix this wtf where we were not clearing the started state of
a ServiceTracker when its process goes away.  (This was like this
because we used to want to leave the started state so that we can
know the process is trying to restart.  But now that have a new
explicit restarting strate, there is no need to leave it.)

android.util.Log$TerribleFailure: Service owner ServiceRecord{436f5168 u0 com.dirtywaterlabs.uberhype/com.dirtywaterlabs.musichype.MDService} cleared while started: pkg=com.dirtywaterlabs.uberhype service=com.dirtywaterlabs.musichype.MDService proc=ProcessState{42bf4bb8 com.dirtywaterlabs.uberhype:remote/10115 pkg=com.dirtywaterlabs.uberhype}
	at android.util.Log.wtf(Log.java:290)
	at android.util.Slog.wtfStack(Slog.java:86)
	at com.android.internal.app.ProcessStats$ServiceState.clearCurrentOwner(ProcessStats.java:2989)
	at com.android.server.am.ActiveServices.serviceDoneExecutingLocked(ActiveServices.java:1821)
	at com.android.server.am.ActiveServices.serviceProcessGoneLocked(ActiveServices.java:1779)
	at com.android.server.am.ActiveServices.removeConnectionLocked(ActiveServices.java:1693)
	at com.android.server.am.ActiveServices.killServicesLocked(ActiveServices.java:2028)
	at com.android.server.am.ActivityManagerService.cleanUpApplicationRecordLocked(ActivityManagerService.java:12424)
	at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:3605)
	at com.android.server.am.ActivityManagerService.appDiedLocked(ActivityManagerService.java:3750)
	at com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied(ActivityManagerService.java:1026)
	at android.os.BinderProxy.sendDeathNotice(Binder.java:493)
	at dalvik.system.NativeStart.run(Native Method)

Change-Id: I25a3fb678b5365254490cd5509b558348655b589
2013-11-11 10:55:42 -08:00
Craig Mautner
8862929e2a Use old task info when creating new task.
When a new task is being created solely to protect the system from an
old task going away, save the info from the old task and use it when
creating a new task.

Fixes bug 11615548.

Change-Id: Ibc3fd15ec4b0d76bce30381fbd83b6899f6a9023
2013-11-10 20:39:05 -08:00
Craig Mautner
c9ffd74659 Merge "Don't call setTask twice." into klp-dev 2013-11-07 20:51:30 +00:00
Craig Mautner
2040967478 Merge "If home activity is not fullscreen keep drilling." into klp-dev 2013-11-07 20:49:02 +00:00
Craig Mautner
f41bcd47ea If home activity is not fullscreen keep drilling.
When the home activity launches a non-fullscreen activity as part of
its own task then ensureActivitiesVisibleLocked() must continue past
the launched activity when determining activities to show and hide.
Stopping at the non-fullscreen activity leaves the fullscreen home
activity hidden.

Fixes bug 11555762.

Change-Id: I9058d8cde3a41cb7f9b1f97e5c0cb32e9b0f5af7
2013-11-07 11:51:29 -08:00
Robert Greenwalt
e8c51298a4 Merge "Add BatteryStats for Wifi Batched Scanning." into klp-dev 2013-11-07 18:30:49 +00:00
Dianne Hackborn
9882d38899 Merge "Fix issue #11223338: Not retaining service started state while restarting" into klp-dev 2013-11-07 18:16:10 +00:00
Craig Mautner
329f4129a5 Don't call setTask twice.
The method ActivityRecord.setTask() removes the ActivityRecord from
its old task's mActivities ArrayList. In jb-mr2 it did not have this
side effect (there was no mActivities) so calling it twice was not a
problem. This fix causes setTask to only be called once for the target
activity.

Fixes bug 11557835.

Change-Id: If2b6d4b297e86130009713efe6891a24fad3dd15
2013-11-07 09:10:42 -08:00
Robert Greenwalt
a029ea1318 Add BatteryStats for Wifi Batched Scanning.
bug:10690989
Change-Id: Ia39b715ee6d5733970095bc76de0ed40ff8208c0
2013-11-06 17:43:18 -08:00
Dianne Hackborn
daa0d5c929 Fix issue #11223338: Not retaining service started state while restarting
When I cleaned up how we maintained the lifecycle of the tracker with a
service, I broke most tracking of the service restart state.  (Since at
that point the service is no longer associated with a process, so I
must clean up the tracker state).  This change introduces a new special
case for interacting with a service tracker to explicitly tell it when
a service is being restarted.  It also fixes how we update the process
state when services are attached to it, so it goes in and out of the
restarting state correctly.

In addition:

- Maybe fix issue #11224000 (APR: Dependent processes not getting added
  to LRU list).  We were not clearing ServiceRecord.app when bringing
  down a service, so if for some reason there were still connections to
  it at that point (which could happen for example for non-create bindings),
  then we would so it when updating the LRU state of that client process.
- dumpsys procstats's package argument can now be a package or process
  name, and we will dump all relevent information we can find about that
  name.
- Generally improved the quality of the dumpsys procstats output with its
  various options.
- Fixed a bug in ActivityManager.dumpPackageState() where it would hang if
  the service was dumping too much, added meminfo to the set of things
  dumped, and tweaked command line options to include more data.
- Added some more cleaning code to ActiveServices.killServices() to make
  sure we clean out any restarting ServiceRecord entries when a process is
  being force stopped.
- Re-arranged ActiveServices.killServices() to do the main killing of the
  service first, to avoid some wtf() calls that could happen when removing
  connections.

Bug: 11223338
Bug: 11224000

Change-Id: I5db28561c2c78aa43561e52256ff92c02311c56f
2013-11-06 16:42:17 -08:00
Craig Mautner
db5c4fb864 Fix incorrect looping limits.
One cannot iterate across an entire list if one both removes an entry
and increments the index into the list. Do one or the other or you
will end up with bugs like 11556768 which is now fixed.

Change-Id: I57f1ad13075a005cae3c1cbfae10e230d9af143a
2013-11-06 13:55:08 -08:00
Dianne Hackborn
d64744cc76 Merge "Help out with issue #11497149: Clock app crashes when opened during..." into klp-dev 2013-11-05 18:17:01 +00:00
Dianne Hackborn
23037419e3 Help out with issue #11497149: Clock app crashes when opened during...
...the repeated hour in DST transition

Record the last crash info that caused an app to be marked as a bad app.

Also for the battery work, add a system property tuning parameter to be
able to control the background service start delay, so we can easily
run experiments with it turned off if we want.

Change-Id: Ic33dc464d8011c918a39b912da09ea4f0fb28874
2013-11-04 18:11:29 -08:00
Craig Mautner
76be9d2595 Remove harmful visibility test.
Previously inserted requirment that an activity be visible in order to
block visibility of the home screen is removed.

Fixes bug 11515761.

Change-Id: Ia47cfb4a0b6d90bbbca2b42e12a6048b1644d7cb
2013-11-04 16:01:22 -08:00
Dianne Hackborn
7b492723e4 Fix issue #11223338: Not retaining service started state while restarting
Actually, the state representation seems fine, but there was a problem
we are now hitting where the restart interval could get reset back to
0 when it shouldn't be.  Also tune the restart parameters a bit.

Change-Id: I364f38e52f5387b2ec3f81009ccc78976ff48891
2013-11-01 10:32:46 -07:00
Dianne Hackborn
fbefe9bf74 Merge "Fix issue #11168649: LRU logic for Chrome renderers seems..." into klp-dev 2013-11-01 00:18:12 +00:00
Dianne Hackborn
db92608de9 Fix issue #11168649: LRU logic for Chrome renderers seems...
...not to work on KitKat (was: Janky exit animation)

Reworking the LRU list (splitting it into an activity vs. empty
section) accidentally broken the old behavior of "client activity"
processes being prioritized with activity processes.  In fact, we
were no longer marking "client activity" processes at all.

In this change, we rework how we manage "client activity" processes
by putting them on the main activity LRU section.  This is generally
simple -- ActiveServices now keeps track of whether a process is
a "client activity" process based on its bindings, and updateLruProcess
treats these as regular activity processes.  However, we don't want
to allow processes doing this to spam our LRU list so that we lose
everything else, so there is some additional complexity in managing
that list where we spread client activity processes across is so
that the intermingle with other activity processes.

The rest of the change is fairly simple -- the old client activity
process management is gone, but that doesn't matter because it wasn't
actually running any more.  There is a new argument to updateLruProcess
to indicate a client process it comes from (since we now need to update
this based on bindings) which is just used to limit how high in the
LRU list we can move things.  The ProcessRecord.hasActivities field is
simply removied, because ProcessRecord.activities.size() > 0 means the
same thing, and that is actually what all of the key mechanisms are using
at this point.

Finally, note there is some commented out code of a new way to manage
the LRU movement.  This isn't in use, but something I would like to
move to in the next release so it is staying there for now for further
development.

Change-Id: Id8a21b4e32bb5aa9c8e7d443de4b658487cfbe18
2013-10-31 16:32:44 -07:00
Craig Mautner
91eb54d119 Merge "Do not fetch tasks that don't have activities." into klp-dev 2013-10-30 17:13:20 +00:00
Igor Murashkin
e5c1208ef9 Merge "am: Increase dropbox buffer size to 256KB (from 128KB)" into klp-dev 2013-10-29 21:20:54 +00:00
Craig Mautner
5cbaaa3cb5 Do not fetch tasks that don't have activities.
Fixes NullPointerException bug 11432611.

Change-Id: I62e765750e2613ecfb79e13021631ed2cd4e79f3
2013-10-29 13:39:26 -07:00
Dianne Hackborn
3a702cb5d7 Merge "Fix issue #11391003: Allow dumpsys meminfo to be used with native processes" into klp-dev 2013-10-28 21:59:18 +00:00
Craig Mautner
dfe0d9a040 Merge "Change order of operations so flag is not overwritten" into klp-dev 2013-10-28 14:38:32 +00:00