14703 Commits

Author SHA1 Message Date
destradaa
7f02eb2c84 Ensure access to the map of geofence callbacks is synchronized in all cases
Fix Java reference leak in the JNI layer

Bug: 10624887
Change-Id: I656973653d82c73a7ba2b51f22989ffed144c5df
2013-09-20 15:19:00 -07:00
Jeff Sharkey
2d8b4e8013 Delegate mkdirs() to vold when lacking perms.
Apps without sdcard_r or sdcard_rw are still able to write to
their package-specific directory, but someone needs to first make
that directory on their behalf.  This change will delegate the
mkdirs() call through to vold when an app fails to create directly.

MountService validates that the path belongs to the calling user, and
that it's actually on external storage, before passing to vold.

Update Environment to make app-vs-vold paths clearer.

Bug: 10577808
Change-Id: I43b4a77fd6d2b9af2a0d899790da8d9d89386776
2013-09-20 14:34:02 -07:00
Craig Mautner
0447669142 Merge "Remove over-aggressive stack movement." into klp-dev 2013-09-20 21:28:14 +00:00
Craig Mautner
8916aadd1e Remove over-aggressive stack movement.
Moving a task to the bottom was also moving its stack to the back.
Since chrome always finishes by calling moveTaskToBack this put
the home stack in front of the application stack and would cause
bizarre window layering effects.

Definitely fixes 10764463.
Maybe fixes 10678010.

Change-Id: Ic202ae4fad44b36a8444255764d2135fccd4743d
2013-09-20 13:42:49 -07:00
Matthew Williams
ed37b93af8 fix deadlock caused by clearAllBackoffs in SSE
ordering of locks in SyncStorageEngine#clearAllBackoffs()
introduced deadlocks.
Bug: 10751759
Bug: 10680330
Change-Id: Ief118830b6b249de0e7618b6186b4181b4f12f82
2013-09-20 18:24:30 +00:00
Robert Greenwalt
540784f903 Merge "Cleanup the shutdown of BatchedScans." into klp-dev 2013-09-20 17:43:30 +00:00
Robert Greenwalt
82f4218c0d Cleanup the shutdown of BatchedScans.
Fixes binder-death as well as disambiguation when an app has multiple requests in.

bug:10641931
Change-Id: Ib701d531fa51e7e2a027848cfdfcad3b47056923
2013-09-20 16:32:47 +00:00
Christopher Tate
3301f76b23 Merge "Don't back up apps in the 'stopped' state" into klp-dev 2013-09-20 02:16:10 +00:00
Craig Mautner
12946530cf Merge "Only show launcher for the bottom activity in a task" into klp-dev 2013-09-20 00:51:20 +00:00
Craig Mautner
f51b5588d7 Only show launcher for the bottom activity in a task
When transitioning from activity-over-launcher to task-over-launcher
ensureActivitiesVisibleLocked() was too aggressive in showing the
launcher. If there were any non-fullscreen activities in a task that
sits over the launcher then the launcher would be shown.

This fix adds a test to make sure the launcher will only be shown if
the bottommost activity in such a task is non-fullscreen.

Fixes bug 10840919.

Change-Id: I5dcd63be3fa2865ae38cbb921332937dfa4b5d47
2013-09-19 17:19:51 -07:00
Christopher Tate
9ac23d0952 Don't back up apps in the 'stopped' state
E.g. right after install from the Play Store, or after a force stop.

Bug 10845317

Change-Id: I7764ce61caa77136ca2758657f111928f9740fc0
2013-09-19 17:12:27 -07:00
Ed Heyl
812c4d7378 Merge "fix typo" into klp-dev 2013-09-19 23:43:25 +00:00
Ed Heyl
6e65cb47dc fix typo
Change-Id: I97df15ea7d349e0224e1830d7327dde87e840a51
2013-09-19 16:25:57 -07:00
Amith Yamasani
722b15e000 Merge "Fix a regression in pausing activity immediately on sleep" into klp-dev 2013-09-19 22:42:50 +00:00
Dianne Hackborn
70817c479a Merge "Implement issue #10691475: Kill cached processes if about to..." into klp-dev 2013-09-19 21:44:20 +00: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
Amith Yamasani
ce15e157a6 Fix a regression in pausing activity immediately on sleep
At some point during refactoring of ActivityStack, the code to pause the current
activity got deleted. Added back that line of code. Activity will now pause
as soon as the screen is turned off, rather than after 5 seconds (sleep timeout).

Bug: 10632898

Change-Id: If3cc8708d692d29a13dbd8cfd9edda8883b38c2e
2013-09-19 14:30:47 -07:00
Craig Mautner
7908f19015 Merge "Debug for b/10689184." into klp-dev 2013-09-19 21:08:27 +00:00
Craig Mautner
e8a9422495 Merge "Return tasks in correct order." into klp-dev 2013-09-19 20:03:24 +00:00
Craig Mautner
b3370cec71 Debug for b/10689184.
Change-Id: I67b7a4bd7fb902b0d0275af0665625593dc1af00
2013-09-19 12:55:19 -07:00
Christopher Tate
9c5cc571e5 Merge "Support for "not the home app you're looking for" metadata" into klp-dev 2013-09-19 19:46:20 +00:00
Christopher Tate
bd413f6c05 Support for "not the home app you're looking for" metadata
* Make sure that pm.getHomeActivities() returns the activity metadata
  as well, so that the caller can trace the reference

* Add a public canonical name for that metadata key

Bug 10749961

Change-Id: Ic4d0750d61001ffe5af180398f042afa30eea1ce
2013-09-19 12:31:49 -07:00
Amith Yamasani
7301bd96c4 Merge "Use a separate thread for services that do NTP lookup" into klp-dev 2013-09-19 19:17:51 +00:00
Craig Mautner
c0fd805234 Return tasks in correct order.
Fixed ActivityManager.getRunningTasks().

Fixes bug 10705790.

Change-Id: Ia3f66e592e08a87896a1ab59f980618ec5310dfe
2013-09-19 11:20:17 -07:00
Amith Yamasani
450a16b33f Use a separate thread for services that do NTP lookup
Some services do periodic network time lookups and can wedge the other operations on
BackgroundThread and IO Thread, causing Watchdog to kill the runtime. So best to put
those handlers on separate threads.

Going forward, should convert NTP lookups to be async with callbacks.

Bug: 10646480
Change-Id: I8c7ba6052cb3539575712c2099a706b14ff60196
2013-09-19 10:57:16 -07:00
Craig Mautner
81d1689ceb Merge "Remove debug logging for b/106899184." into klp-dev 2013-09-19 14:50:41 +00:00
Craig Mautner
ec9cf65b55 Remove debug logging for b/106899184.
Change-Id: I1e5f959a6d674b4bf9609553f28e66ffee367f5c
2013-09-18 17:04:45 -07:00
Jim Miller
f429247867 Merge "Fix keyguard/Keystore storage issue" into klp-dev 2013-09-19 00:00:22 +00:00
Jason Monk
ff65c6daab Merge "Fix PacManager to not unbind when no connection" into klp-dev 2013-09-18 23:51:07 +00: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
e428a7f662f109a5f2015008e3161df23932483e.
- 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
Dianne Hackborn
b9466db4a5 Merge "Finish issue #10779747: Calendar Storage crash observed..." into klp-dev 2013-09-18 20:34:11 +00: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
Craig Mautner
ae7ecab400 Move flag for home launching from activity to task.
The variable ActivityRecord.mLaunchHomeTaskNext was used to indicate
that the home task should be launched when the activity completed.
This only mattered when it was at the end of a task. As the activity
launched other activities within the same task it needed to be
migrated from activity to activity and task to task. This became
too complicated and was at the wrong level to begin with.

By moving the flag to TaskRecord.mOnTopOfHome the logic is simpler
and the results more predictable.

Fixes bug 10602256.

Change-Id: If0b752522b77be9918f1dba221d0ff670fc01af8
2013-09-18 11:48:14 -07:00
Jason Monk
bc018d89c2 Fix PacManager to not unbind when no connection
PacManager previously would unbind service even when there was no
connection.  This means that multiple set proxies of no PAC after a PAC was
present would cause the framework to crash.

Bug: 10801296
Change-Id: I4387b50b6510cea3ee73425c8a0a837f816b0ce1
2013-09-18 09:28:29 -04:00
Dianne Hackborn
222920c460 Merge "Maybe fix issue #10797796: IllegalStateException in ProcessState..." into klp-dev 2013-09-18 00:34:02 +00:00
Dianne Hackborn
53459a7020 Maybe fix issue #10797796: IllegalStateException in ProcessState...
...caused runtime restart

There were some situations where the package list could be set
with process stats when it shouldn't.  Not sure if this is causing
the problem, since there is no repro.

Also some improvements to debug output -- new commands to clear
all stats, print full details of stats, and print a one-day
summary (which should match what the UI shows).

Change-Id: I9581db4059d7bb094f79f2fe06c1ccff3e1a4e74
2013-09-17 17:30:34 -07:00
Craig Mautner
019f8cb8a7 Merge "Add bounds checks before accessing ArrayList." into klp-dev 2013-09-17 23:13:31 +00:00
Craig Mautner
dccb770b84 Add bounds checks before accessing ArrayList.
Add a test for emptiness before accessing either mTaskHistory[0] or
TaskRecord.mActivities[0]. This will keep us from hitting
IndexOutOfBoundsException.

Fixes bug 10789624.

Change-Id: If726df888a2c8b393788793b6220a6bffe2df883
2013-09-17 15:53:34 -07:00
David Braun
345d491b77 Merge "Implement new method for handling SMS/MMS on the platform" into klp-dev 2013-09-17 22:14:54 +00:00
Craig Mautner
bc65c1dbcc Merge "Do not assign InputMethod to non-input windows." into klp-dev 2013-09-17 22:13:10 +00:00
Craig Mautner
22b9a5e0aa Do not assign InputMethod to non-input windows.
The InputMethod window was being assigned to the bottommost
window as a fall-through situation when no window could receive
input. This fix changes that so that if the bottommost window
cannot receive IME input then the InputMethod will be unassigned.

In most ANRs associated with bug 10689184 mInputMethodTarget
was assigned to the Wallpaper window and the InputMethod was
placed directly above it. When the ANR occurred the window that
was awaiting focused was then always placed immediately above the
InputMethod. This fix will keep that situation from happening.

Change-Id: Ic247e8132a907f2712a9f8a89e43c099142ec851
2013-09-17 14:50:56 -07:00
Craig Mautner
16efe96cbc Merge "Fix parenthetical error." into klp-dev 2013-09-17 20:21:40 +00:00
Dianne Hackborn
463850e0c6 Merge "Fix issue #10795385: System process crash reinstalling GEL -" into klp-dev 2013-09-17 18:08:00 +00: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
Craig Mautner
7504d7b24a Fix parenthetical error.
Mis-grouping of && and || from CL ag/360551.

Fixes bug 10798273.

Change-Id: Idbc77e03d09f7ad5fcf1a5de98c6c14f0c63a6e4
2013-09-17 10:50:53 -07:00
Craig Mautner
fbd67258e1 Merge "More debugging for b/106899184" into klp-dev 2013-09-17 17:39:08 +00:00
Craig Mautner
b1885b8588 More debugging for b/106899184
Change-Id: I729a2c5bae087713765d782daaa7309ee6cd5b5a
2013-09-17 09:35:20 -07:00
Amith Yamasani
33caca5cd5 Merge "Add a feature to specify if device admins are supported on the device" into klp-dev 2013-09-17 15:56:14 +00:00
Svetoslav
be0d9317e2 Merge "App UI freezes when printing. API clean up." into klp-dev 2013-09-17 02:28:34 +00:00
Dianne Hackborn
a0d53c6188 Merge "Fix issue #10779747: Calendar Storage crash observed..." into klp-dev 2013-09-17 02:12:58 +00:00