Commit Graph

1122 Commits

Author SHA1 Message Date
Craig Mautner
0c5fdaa79b am c449613e: Merge "Revert behavior to perform onResume." into klp-dev
* commit 'c449613ec6ffed7b4605a6708a3341ab2dd5320f':
  Revert behavior to perform onResume.
2013-09-30 14:11:41 -07:00
Craig Mautner
5314a40b96 Revert behavior to perform onResume.
Back out changes from CLs ag/363992 and ag/363859. These introduced
the bugs found in bug 10917435 which is now fixed. Note that backing
out these changes reintroduces bug 10732489.

Change-Id: Ic5105dd4cfc8bf79c6f06188283d1ee3680c370c
2013-09-26 14:24:02 -07:00
Jeff Sharkey
9f68c10424 am 66ee877f: am 8c6c0419: Merge "Tighten flags enforcement, API to test Uris." into klp-dev
* commit '66ee877f5d27b4dd4081702ad216359971e1b8b3':
  Tighten flags enforcement, API to test Uris.
2013-09-26 13:40:34 -07:00
Jeff Sharkey
66ee877f5d am 8c6c0419: Merge "Tighten flags enforcement, API to test Uris." into klp-dev
* commit '8c6c04197e58be6f3e46ba6a38f5d16e4fb091fa':
  Tighten flags enforcement, API to test Uris.
2013-09-26 13:37:21 -07:00
Jeff Sharkey
ee2f7df9ee Tighten flags enforcement, API to test Uris.
Check and throw if callers request invalid grant flags.  Add API to
test if a Uri is backend by a DocumentsProvider.

Bug: 10919391, 10935608
Change-Id: Ifa6afefb95983558c8c64dc15ddf650e9fe07080
2013-09-26 13:14:45 -07:00
Dianne Hackborn
f3647c7bdc am f9ad7b9d: am 66a9b2d7: Merge "Fix issue #10903002: com.facebook.katana keeps itself in A Services" into klp-dev
* commit 'f9ad7b9d92f0464bdffb36f4b9f9f63292ba9863':
  Fix issue #10903002: com.facebook.katana keeps itself in A Services
2013-09-25 16:50:14 -07:00
Jeff Sharkey
5023a4df73 resolved conflicts for merge of 687c6221 to master
Change-Id: I9e8a24d9151f31bc3284ad7f8686fa7f3c25c0d9
2013-09-25 16:48:01 -07:00
Dianne Hackborn
f9ad7b9d92 am 66a9b2d7: Merge "Fix issue #10903002: com.facebook.katana keeps itself in A Services" into klp-dev
* commit '66a9b2d7392a7f6334b5fe23d00ba718f3fa1851':
  Fix issue #10903002: com.facebook.katana keeps itself in A Services
2013-09-25 16:09:13 -07:00
Jeff Sharkey
687c6221c8 am be17a614: Merge "Require that persistable Uri permissions be taken." into klp-dev
* commit 'be17a61447e1a7992a6c855059a3c43ab3216610':
  Require that persistable Uri permissions be taken.
2013-09-25 16:05:36 -07:00
Dianne Hackborn
66a9b2d739 Merge "Fix issue #10903002: com.facebook.katana keeps itself in A Services" into klp-dev 2013-09-25 23:04:50 +00:00
Dianne Hackborn
cbd9a52f25 Fix issue #10903002: com.facebook.katana keeps itself in A Services
Now when memory low, if a service's process is above
a selected pss, then the process is not allowed to go
in to the service a list.

Also simplified the normal meminfo details dump to not
include the shared dirty and shared clean sizes by
default, since these can be very confusing.  You will
still get to see them with the "-a" flag.

Finally some small steps to better managing service
processes in the LRU list, so hopefully we can some
day be better about letting them drop down in the list
when there isn't really much interesting happening in
the process.  Not yet used at this point.

Change-Id: I654bfd6d05de2a63120185ebb15ffda8cbeb5dac
2013-09-25 15:45:56 -07:00
Jeff Sharkey
e66c1778f8 Require that persistable Uri permissions be taken.
Change our Intent flag to indicate that a Uri permission grant is
persistable, but don't actually persist it until explicitly taken by
the receiving app.  This prevents apps from spamming each other if
persisted permissions aren't really required.

Remember the last time a persisted grant was taken by an app, and
use this to prune away the oldest grants when the number of grants
grows too large.  Allow apps to query persisted grants they are
holding, and allow them to release previously persisted grants. Add
public UriPermission class to return grant details and timestamp.

Track various permission strengths separately, and combine together
after each mutation pass.  Persistable grants are currently treated
like global grants, but they could be moved to have owners in the
future.  Require that grant holders trying to extend a persistable
permission actually hold a persistable permission themselves.

Bug: 10835779
Change-Id: I95b2f797c04ce7fd2612f9a644685dbd44e03759
2013-09-25 15:16:41 -07:00
Dianne Hackborn
23ff9f6128 am 9b7d1484: am 5f86b90b: Merge "Fix issue #10848916: "Always" button is not working." into klp-dev
* commit '9b7d148466b1aedb24187294e0c59718afb104a0':
  Fix issue #10848916: "Always" button is not working.
2013-09-24 14:51:06 -07:00
Dianne Hackborn
9b7d148466 am 5f86b90b: Merge "Fix issue #10848916: "Always" button is not working." into klp-dev
* commit '5f86b90b8a224e21db89bacf78d4bd4d3f44342d':
  Fix issue #10848916: "Always" button is not working.
2013-09-24 14:49:17 -07:00
Dianne Hackborn
6d8dfbd814 Fix issue #10848916: "Always" button is not working.
The problem was that the ResolverActivity filters some activities
out of the list it shows, but it uses that display list as the
list of components the preference is set against when ultimately
setting it on the package manager...  but that filtered list is *not*
the right component set, since it is not the same as the package
manager's view on it.

The fix here is to retain the original set of matching components
and use that when setting the preferred activity.  Note that this
does mean that in very unusual cases where filtering is happeing
(such as one of the activities not being exported but being seen
as a possible completion from another app), then you will be setting
the preference for the complete set.  Ultimately we probably need
to have the package manager apply these filtering rules up-front so
this is all consistent, but this is a very rare case so not that
important.

And then most of the change here is just improving the debug
output for intent resolution.

Change-Id: Ie35ac2c05a45946439951bbf41433c8b7de79c05
2013-09-24 14:16:38 -07:00
Craig Mautner
15a0436ac4 am a52bfb9f: am 254f5ffc: Merge "Pause activities behind keyguard after boot." into klp-dev
* commit 'a52bfb9fe4d8f28ccb6bc3eda37250f0d3aeb8d4':
  Pause activities behind keyguard after boot.
2013-09-24 10:46:56 -07:00
Craig Mautner
a52bfb9fe4 am 254f5ffc: Merge "Pause activities behind keyguard after boot." into klp-dev
* commit '254f5ffc47fe26d48fe3fd9f3bc513805dd04ac5':
  Pause activities behind keyguard after boot.
2013-09-24 10:43:53 -07:00
Craig Mautner
254f5ffc47 Merge "Pause activities behind keyguard after boot." into klp-dev 2013-09-24 17:39:17 +00:00
Craig Mautner
2acc389d61 Pause activities behind keyguard after boot.
Following boot the initial activity was automatically resumed even if
a lockscreen is obscuring it. Refer to CL 363859 for why this breaks
things.

This fix pauses all activities the first time a lockscreen appears.

Completes the fix for bug 10732489.

Change-Id: I6fcac14b574c495aa0e16d798cddc1263c6b4c25
2013-09-24 10:36:05 -07:00
Dianne Hackborn
e941dee66f am 8db6517e: am ba0abd0a: Merge "Fix issue #10876433: java.lang.IllegalStateException in..." into klp-dev
* commit '8db6517e846a6ee43d4ce19f7b5b2c5a351a2122':
  Fix issue #10876433: java.lang.IllegalStateException in...
2013-09-24 10:22:34 -07:00
Dianne Hackborn
a0faa41254 am dc655c0e: am 4bf0fcef: Merge "Work on issue #10759595: preferred tag doesn\'t prevent..." into klp-dev
* commit 'dc655c0e0742bcc4834773a8aacb8b7d67a73aad':
  Work on issue #10759595: preferred tag doesn't prevent...
2013-09-24 10:22:25 -07:00
Dianne Hackborn
8db6517e84 am ba0abd0a: Merge "Fix issue #10876433: java.lang.IllegalStateException in..." into klp-dev
* commit 'ba0abd0abdaf3eedd42927eb5b51b202f0f348eb':
  Fix issue #10876433: java.lang.IllegalStateException in...
2013-09-23 18:59:36 -07:00
Dianne Hackborn
dc655c0e07 am 4bf0fcef: Merge "Work on issue #10759595: preferred tag doesn\'t prevent..." into klp-dev
* commit '4bf0fcef9296b53114e86490d79956986f8b93a6':
  Work on issue #10759595: preferred tag doesn't prevent...
2013-09-23 18:59:13 -07:00
Dianne Hackborn
90007f7440 Fix issue #10876433: java.lang.IllegalStateException in...
...ActivityManagerService.updateLruProcessInternalLocked on bluetooth

Don't try to move process records associated with dead service
connections.

Technically we should probably be clearing the binding/service's
app entry so we don't get into this case, but the least intrusive
change for now is this check.

Change-Id: I6683e692eb5a8fa4f8ec1fa31bd63ec3d7f878ef
2013-09-23 13:01:43 -07:00
Dianne Hackborn
4bf0fcef92 Merge "Work on issue #10759595: preferred tag doesn't prevent..." into klp-dev 2013-09-23 18:10:28 +00:00
Dianne Hackborn
38ba6e9ee3 Work on issue #10759595: preferred tag doesn't prevent...
...activity chooser from being shown

Add more useful output when intent filter debugging is enabled.

Change-Id: I3722b03ed625046398e81233cf7fb6aa5ded5eca
2013-09-23 11:08:52 -07:00
Dianne Hackborn
bf00b1a5f8 am eafa9c2b: am f9b70ab8: Merge "Debug issue #10876433 java.lang.IllegalStateException..." into klp-dev
* commit 'eafa9c2b893a9c98d4bf8086b32aabc05181791a':
  Debug issue #10876433 java.lang.IllegalStateException...
2013-09-22 16:53:10 -07:00
Dianne Hackborn
eafa9c2b89 am f9b70ab8: Merge "Debug issue #10876433 java.lang.IllegalStateException..." into klp-dev
* commit 'f9b70ab87e8f26b57ac3d8dc3b77052e747cb888':
  Debug issue #10876433 java.lang.IllegalStateException...
2013-09-22 16:50:38 -07:00
Dianne Hackborn
2be0093316 Debug issue #10876433 java.lang.IllegalStateException...
...in ActivityManagerService.updateLruProcessInternalLocked on bluetooth

Add more debug output to help track down what is going on.

Also fix a little problem where, when a service ANRs, if you ask to
wait and it still wasn't responding, the ANR dialog wouldn't be
shown again.

Change-Id: I5be2b1705a0a39ca2992624ae683945c5f38065d
2013-09-22 16:46:00 -07:00
Dianne Hackborn
04cca35b85 resolved conflicts for merge of cc585f86 to master
Change-Id: I72aa7707edeb48f63fbe5348915a31650bdfd8f5
2013-09-20 19:04:45 -07:00
Dianne Hackborn
cc585f86bc am 88b6e69b: Merge "Fix issue #10863270: procstats UI is showing all green" into klp-dev
* commit '88b6e69bc7007964f9ae4f30faf1bb59d6a702bb':
  Fix issue #10863270: procstats UI is showing all green
2013-09-20 18:53:37 -07:00
Dianne Hackborn
2610b7cb2a Fix issue #10863270: procstats UI is showing all green
Gah I messed up when refactoring so it would always be told
RAM is low.

Also slightly tune the low memory parameters to go into low
memory states a bit more aggressively.

Change-Id: I5f970349760ad349d515a85c266ab21b387ee353
2013-09-20 18:51:03 -07:00
Dianne Hackborn
9bef5b67dc resolved conflicts for merge of 20021b30 to master
Change-Id: Ie758de25a277ed0a25bf08e4cd2c57c9519bd52d
2013-09-20 10:40:34 -07:00
Dianne Hackborn
20021b300f am 70817c47: Merge "Implement issue #10691475: Kill cached processes if about to..." into klp-dev
* commit '70817c479aa05778733d9afc809c311e8030b000':
  Implement issue #10691475: Kill cached processes if about to...
2013-09-19 14:49:35 -07:00
Dianne Hackborn
3bc8f78d7a Implement issue #10691475: Kill cached processes if about to...
...be uncached and too large

When the device is in a low RAM state, when we go to pull a cached
process out to use for some background operation, we can now kill
the current process if we consider its size to be too large.

Note that the current implementation for killing processes is to
just use the same killUnneededProcessLocked() method that we already
have for other things like too many cached processes.  This is a
little wrong here, though, because in this case we are at the
point where the caller is actually looking for a process to use.
This current code is not actually removing or cleaning up the
process, so we still need to return the now killed ProcessRecord
and let things fall out from there, which typically means the caller
trying to make an IPC on it and failing and falling into its "oh
no the process died unexpectedly" path.  All code using this
*should* be able to handle this correctly, anyway, since processes
really can be killed at any time.

At some point we may to make this implementation cleaner, where it
actually tears down the process right in the call and returns a
null ProcessRecord.  That is very dangerous however (we'd need to
go through all paths into this to make sure they are going to be
okay with process state changing on them like that), and I'm not
sure it is really worthwhile.  This intention is that killing
processes like this is unusual, due to processes being too large,
and anyway as I wrote all of our incoming code paths must already
be able to handle the process being killed at this point and one
could argue this is just another way to excercise those code paths.
Really, the main negative to this is that we will often have spam
in the log with exceptions about processes dying unexpectedly.
If that is the only issue, we could just add some conditions to
quiet that up at in this case.

We don't want to compute the size of the process each time we try
to evaluate it here (it takes 10s or ms to do so), so there is now
a new field associated with the process to give us the last pss
size we computed for it while it was in the cached state.

To be able to have better cached pss data when we now need it, the
timing for computing process pss has been tuned to use a much
shorter delay for the situations when the process has first switch
into a new state.  This may result in us having a fair amount more
pss data overall, which is good, as long as it doesn't cause us to
be computing pss excessively and burning cpu.

Procstats now also has new state to keep track of the number of
times each process has been killed by this new system, along with
the min, avg, max pss of all the times it has happened.  This has
slightly changed the checkin format to include this additional data
at the end of pkgkills/prockills lines.

Other changes here:

- Fixed a problem where GPU RAM was not being seen when dumping
  the full RAM details of a process.  This was because in that
  case the system would ask the process to compute its own MemInfo,
  which it returned, but the process doesn't have permission to
  access the files containing the GPU RAM data.  So now the system
  always computes the MemInfo and hands it to the app.

- Improved broadcast delays to not apply the delay if the next receiver
  of the broadcast is going to run in the same process as the last
  one.  A situation I was seeing was an application that had two
  receivers, one of which started a service; we are better off letting
  the second receiver run while the service is running.

- Changed the alarm manager's TIME_TICK broadcast to be a foreground
  broadcast.  This really should have been anyway (it is supposed to
  go out even minute, on the minute, very accurately, for UI elements
  to update), and is even more important now that we are doing more
  things to delay background broadcasts.

- Reworked how we maintain the LRU process list.  It is now divided
  into the two parts, the top always containing the processes holding
  activities.  This better matches the semantics we want (always try
  to keep those around modulated by the LRU order we interleave with
  other cached processes), and we now know whether a process is being
  moved on the LRU list because of an activity operation so we can
  only change the order of these activity processes when user operations
  happen.  Further, this just makes that common code path a lot simpler
  and gets rid of all the old complexity that doesn't make sense any
  more.

Change-Id: I04933ec3931b96db70b2b6ac109c071698e124eb
2013-09-19 14:35:53 -07:00
Craig Mautner
d4338177c0 am 2325fd5d: am 4ef2693a: Revert back to a single home app in mHomeProcess
* commit '2325fd5d1192553c7056eeec2e1e458886dd173f':
  Revert back to a single home app in mHomeProcess
2013-09-18 16:05:29 -07:00
Craig Mautner
2325fd5d11 am 4ef2693a: Revert back to a single home app in mHomeProcess
* commit '4ef2693a243b308fad775a8a1691963c51ac925e':
  Revert back to a single home app in mHomeProcess
2013-09-18 16:02:59 -07:00
Craig Mautner
4ef2693a24 Revert back to a single home app in mHomeProcess
The idea of multiple processes serving as home was unfeasible.

- Revert "Allow for more than one home app." commit
e428a7f662.
- Assign ActivityManagerService.mHomeProcess to the process of the
root activity of the home task.

Addresses bug 10342471.

Change-Id: Ifb494626107d24de1306e320a18206d5b176a7c0
2013-09-18 15:48:28 -07:00
Kenny Root
b5a14f0fc9 resolved conflicts for merge of 1995a7de to master
Change-Id: I9915ae06d460696b24cbee935738267911baa580
2013-09-18 14:23:58 -07:00
Dianne Hackborn
1995a7de5b am b9466db4: Merge "Finish issue #10779747: Calendar Storage crash observed..." into klp-dev
* commit 'b9466db4a56564101a26865962dda87aaeab56ff':
  Finish issue #10779747: Calendar Storage crash observed...
2013-09-18 13:37:02 -07:00
Dianne Hackborn
6285a32f74 Finish issue #10779747: Calendar Storage crash observed...
...while setting up a new user from settings.

We can now delay broadcasts when there are enough background services
currently starting (still set to 1 for svelte devices, 3 for normal
devices).

Add new intent flag to not allow receivers to abort broadcasts, which
I use to fix an issue with the initial BOOT_COMPLETED broadcast not
actually requesting pss data at the right time -- it can now be sent
as an ordered broadcast without the ability for the receivers to cancel
it.

Change-Id: I51155bbbabe23e187003f3e2abd7b754e55d3c95
2013-09-18 12:09:47 -07:00
Dianne Hackborn
19eacd566e am 0c95b8c8: am 463850e0: Merge "Fix issue #10795385: System process crash reinstalling GEL -" into klp-dev
* commit '0c95b8c824f8c2282eedde3af2f83af357b00975':
  Fix issue #10795385: System process crash reinstalling GEL -
2013-09-17 11:12:30 -07:00
Dianne Hackborn
0c95b8c824 am 463850e0: Merge "Fix issue #10795385: System process crash reinstalling GEL -" into klp-dev
* commit '463850e0c658b37bbe29b9e9dec6ff7565bb883f':
  Fix issue #10795385: System process crash reinstalling GEL -
2013-09-17 11:09:32 -07:00
Dianne Hackborn
e56c2c3f05 Fix issue #10795385: System process crash reinstalling GEL -
NPE at com.android.server.am.ProcessRecord.resetPackageList(ProcessRecord.java:596)

Take care of some more cases now that baseProcessTracker can be null.

Change-Id: I394c0b7802788118c3ad6bcac5dfdd23eeda8d58
2013-09-17 11:03:10 -07:00
Dianne Hackborn
df2dae01b0 am 40489be9: am 61158244: Merge "Implement issue #10691359: Kill long-running processes" into klp-dev
* commit '40489be90b7c145da75034f793932500f0e5d380':
  Implement issue #10691359: Kill long-running processes
2013-09-16 14:37:30 -07:00
Dianne Hackborn
40489be90b am 61158244: Merge "Implement issue #10691359: Kill long-running processes" into klp-dev
* commit '61158244b42df547ecf8ca145d539c814b154a4a':
  Implement issue #10691359: Kill long-running processes
2013-09-16 14:34:55 -07:00
Dianne Hackborn
35f72be50b Implement issue #10691359: Kill long-running processes
We now have the activity manager kill long-running processes
during idle maintanence.

This involved adding some more information to the activity manager
about the current memory state, so that it could know if it really
should bother killing anything.  While doing this, I also improved
how we determine when memory is getting low by better ignoring cases
where processes are going away for other reasons (such as now idle
maintenance).  We now won't raise our memory state if either a process
is going away because we wanted it gone for another reason or the
total number of processes is not decreasing.

The idle maintanence killing also uses new per-process information
about whether the process has ever gone into the cached state since
the last idle maintenance, and the initial pss and current pss size
over its run time.

Change-Id: Iceaa7ffb2ad2015c33a64133a72a272b56dbad53
2013-09-16 14:05:34 -07:00
Dianne Hackborn
1cd9a73ac0 am f3b4cf7d: am 28eeb420: Merge "Implement #10749688: Improve low memory reporting" into klp-dev
* commit 'f3b4cf7d01b68418dd652e201868d140de081bd8':
  Implement #10749688: Improve low memory reporting
2013-09-13 17:30:31 -07:00
Christopher Tate
9b6c9a1592 am fcda3283: am 7560c256: Merge "Add hidden API for querying available \'home\' activities" into klp-dev
* commit 'fcda3283d27f8dfaa812fb735af43eea2e077c64':
  Add hidden API for querying available 'home' activities
2013-09-13 17:22:45 -07:00
Dianne Hackborn
f3b4cf7d01 am 28eeb420: Merge "Implement #10749688: Improve low memory reporting" into klp-dev
* commit '28eeb42012018bfa3cffc77e9a970e8f5c13f70b':
  Implement #10749688: Improve low memory reporting
2013-09-13 17:15:23 -07:00