12334 Commits

Author SHA1 Message Date
John Spurlock
0ab7d4d1a1 Merge "Remove Rect allocation in each layout pass." into klp-dev 2013-09-24 21:18:00 +00:00
John Spurlock
4e92a7cf03 Remove Rect allocation in each layout pass.
Bug:10786445
Change-Id: I0cb1ab7697f33e02adeb5319bae19d3a1d20753c
2013-09-24 17:09:05 -04:00
Svetoslav
0d38d0b42f Merge "Multiple printer discovery session instances and other bugs." into klp-dev 2013-09-24 20:37:59 +00:00
Craig Mautner
9bf6c5cec8 Merge "Fix method for determining focused window." into klp-dev 2013-09-24 19:33:17 +00: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
Craig Mautner
ac56514ea7 Fix method for determining focused window.
Method had been rewritten to be task-based and there were errors
when a task had no apptokens. New version is much easier to
maintain.

Maybe fixes bug 10689184.

Change-Id: I5e4c8447a33a4f5686296c20b9f9fe302c9ae49f
2013-09-24 09:01:48 -07:00
Svetoslav
b5f180608d Multiple printer discovery session instances and other bugs.
1. The fused printers provider was dropping on the floor received printers
    if it was not active. It is in fact a loaded and if not active it should compute
    the printers and not deliver them until activated. This fixes an issue where
    opening the print dialog, then enabling a print service results in the printers
    reported by the service not showing up in the print dialog.

2. Printer discovery session was created twice which leads to incorrect behavior
    as the pint system is designed around the contract that there is a single
    printer discovery session per service at a time. This was possible due to an
    incorrect initialization of a member variable resulting in double session creation
    when the print service is connected.

3. When a print service is enabled during discovery we did not use the correct
    condition to start printer discovery resulting in starting it all the time even if
    not needed. Also if some of the printers that had to be tracked are reported
    by the service just enabled (typically historical printers) we did not ask the
    service to start tracking them.

4. Removed some logging.

bug:10903343

Change-Id: I46c049471a4b099fc668df3aee2aaedc8d7786ac
2013-09-23 23:41:12 -07:00
Dianne Hackborn
2d4eee3829 Merge "Implement issue #10895990: Better durations for proc stats" into klp-dev 2013-09-23 22:10:09 +00:00
Dianne Hackborn
6d9ef38b06 Implement issue #10895990: Better durations for proc stats
Reduce the batching down to 3 hours, so that we can show shorter
durations in the UI.

Change-Id: I46af674b0024b828595ed3cdad2b47fe47d71ed8
2013-09-23 14:39:23 -07:00
Ken Sumrall
d3fbba1579 Merge "Upload fsck logs to the dropbox when error found" into klp-dev 2013-09-23 20:07:10 +00: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
Craig Mautner
e14d0c211f Merge "Ensure that activities behind keyguard are paused." into klp-dev 2013-09-23 17:46:30 +00:00
Matthew Williams
75256476c8 Merge "fix deadlock caused by clearAllBackoffs in SSE" into klp-dev 2013-09-23 17:35:16 +00:00
Dianne Hackborn
a3abca90ae Merge "Issue #10461551: KLP API Review: AppOpsManager" into klp-dev 2013-09-23 16:36:29 +00:00
Dianne Hackborn
9bb0ee9131 Issue #10461551: KLP API Review: AppOpsManager
Changed public constants from integers to strings.  Internally
everything is still integers, since we want that more efficient
representation for most things.

Changed the Callback interface to OnOpChangedListener.  We also
have a private versin that again takes an int, and tricks to
make both work.

Reworked the class documentation to be appropriate to the SDK
(as much as it can be); most of the existing documentation is
moved to the private implementation.  Also added documentation
of the MODE constants.

Change-Id: I4f7e73cc99fe66beff9194e960e072e2aa9458f8
2013-09-23 09:35:21 -07:00
Craig Mautner
10385a17cb Ensure that activities behind keyguard are paused.
TLDR: Having a resumed activity behind keyguard can cause the keyguard
not to be dismissed.

Swiping the home button to launch Google Now causes an ASSIST intent
to be launched. The ASSIST intent starts SearchActivity which then
launches GEL. If an activity is resumed behind the keyguard when this
happens then that activity will be paused.

Because that activity is PAUSING, ActivityStackSupervisor
startActivityLocked() doesn't call dismissKeyguard() immediately.
Instead dismissKeyguard will be called later when GEL switches from
not-visible to visible. However, if the paused activity happens to be
GEL then there is never a not-visible to visible transition and
dismissKeyguard never gets called.

This fix removes an unnecessary call to resumeTopActivitiesLocked
which was causing activities behind the lockscreen to be resumed.

This fixes bug 10732489 except immediately after boot. Pausing the
initial activity if the lockscreen is visible after boot is deferred
for another CL.

Change-Id: I323262596ae41bc5a2700bae5942f6a4fba80936
2013-09-23 09:05:15 -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
Robert Greenwalt
0983eadff2 Merge "Fix BatchScan request coalesing" into klp-dev 2013-09-22 15:59:01 +00:00
Dianne Hackborn
88b6e69bc7 Merge "Fix issue #10863270: procstats UI is showing all green" into klp-dev 2013-09-21 01:52:04 +00: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
bb6fd7ff8c Merge "Shut. Up." into klp-dev 2013-09-21 01:25:18 +00:00
Dianne Hackborn
c30d92e224 Shut. Up.
Change-Id: Id047ab2308903a527bebf80bdacdb01ec51de051
2013-09-20 18:19:00 -07:00
Svetoslav
b39ce63d28 Merge "Offer to enable a print service after it is installed." into klp-dev 2013-09-21 01:15:47 +00:00
Ken Sumrall
fefefbb175 Upload fsck logs to the dropbox when error found
If fsck made changes to the filesystem, then upload
the logs to the dropbox.  We can then get them into
Android Problem Reports.

Bug: 10021342

Change-Id: I202d2b2ba4060a2f379ca78f1b3f2c7a3f5796e0
2013-09-20 17:48:15 -07:00
Svetoslav
d8f391b4e0 Offer to enable a print service after it is installed.
The user has to explicitly enable a print service from the settings UI
before using it. Usually, users very rarely if at all interact with print
services, therefore all print service management task are performed from
the print settings. We also have to get user consent warning that the
user's data is about to be given to a third-party app. We now post a
notification allowing the user to go directly to the settings screen to
turn the service on.

bug:10447510

Change-Id: Iea56c0825f0bf38328ad94912f0ea5576e9339b3
2013-09-20 17:40:25 -07:00
Jeff Sharkey
dfed244876 Merge "Delegate mkdirs() to vold when lacking perms." into klp-dev 2013-09-20 22:56:07 +00:00
Robert Greenwalt
13820af302 Fix BatchScan request coalesing
bug:10407896
Change-Id: Ic22c7d8b2a80d490d208570782a12e42d4690f5c
2013-09-20 15:30:17 -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