872 Commits

Author SHA1 Message Date
Dianne Hackborn
30729fb9d7 am c7b2778c: am cfb0f409: Merge "Fix issue #6745498: Cannot view consecutive event details from agenda view" into jb-dev
* commit 'c7b2778c2dc7934665c56067b65d83d76fbe31e5':
  Fix issue #6745498: Cannot view consecutive event details from agenda view
2012-06-28 15:40:05 -07:00
Dianne Hackborn
c7b2778c2d am cfb0f409: Merge "Fix issue #6745498: Cannot view consecutive event details from agenda view" into jb-dev
* commit 'cfb0f40903cf2180ce0947cdd965e2f5b90b48bb':
  Fix issue #6745498: Cannot view consecutive event details from agenda view
2012-06-28 15:36:40 -07:00
Dianne Hackborn
45a25bcfc9 Fix issue #6745498: Cannot view consecutive event details from agenda view
- There was a long-standing bug when using FLAG_ACTIVITY_REORDER_TO_FRONT
where we could find and use an activity that is currently finishing.
- There was a recently introduced bug where activities being destroyed
would not be removed from the history stack at the time they are done
being destroyed, allowing the above bug to be exposed.
- Removing a task would not kill any processes associated with the app
that had a different name from the app itself.

Change-Id: I4401ab6d348a69e1ac4fb8f719d2c69d5a78e567
2012-06-28 13:49:17 -07:00
Dianne Hackborn
dfcd6653c5 am e53fd84a: am 9e608c12: Merge "Fix issue #6381224: Initial emulator boot fails and shows a blank black screen." into jb-dev
* commit 'e53fd84a28584692d9c99712a3d36100643ba000':
  Fix issue #6381224: Initial emulator boot fails and shows a blank black screen.
2012-06-25 18:17:19 -07:00
Dianne Hackborn
e6c2d62efb am 9906e784: am 17990395: Merge "Fix issue #6717667: expanded notification actions don\'t work on the lock screen" into jb-dev
* commit '9906e784faca2cc8388a04fdc544722ea93d51be':
  Fix issue #6717667: expanded notification actions don't work on the lock screen
2012-06-25 18:17:15 -07:00
Dianne Hackborn
e53fd84a28 am 9e608c12: Merge "Fix issue #6381224: Initial emulator boot fails and shows a blank black screen." into jb-dev
* commit '9e608c12186d308fb1711e8824901fdf931a3a96':
  Fix issue #6381224: Initial emulator boot fails and shows a blank black screen.
2012-06-25 17:37:17 -07:00
Dianne Hackborn
9906e784fa am 17990395: Merge "Fix issue #6717667: expanded notification actions don\'t work on the lock screen" into jb-dev
* commit '17990395bc62f8ce1bae4f1880899f231a8e613b':
  Fix issue #6717667: expanded notification actions don't work on the lock screen
2012-06-25 17:37:15 -07:00
Dianne Hackborn
9e608c1218 Merge "Fix issue #6381224: Initial emulator boot fails and shows a blank black screen." into jb-dev 2012-06-25 17:35:49 -07:00
Dianne Hackborn
1927ae8a56 Fix issue #6717667: expanded notification actions don't work on the lock screen
FLAG_ACTIVITY_CLOSE_SYSTEM_DIALOGS was a mistake.

Instead, and the infrastructure for the status bar to take care
of closing and hiding things itself when you press these buttons,
just like it does for the main Intent of the notification.

Bug: 6717667
Change-Id: I1b22186e0cedc05f46a1a3ec78053a72afaf61b1
2012-06-25 14:28:48 -07:00
Dianne Hackborn
42e620caf0 Fix issue #6381224: Initial emulator boot fails and shows a blank black screen.
Make sure that all cases where we remove an activity from the history
stack, we call resumeTopActivityLocked() to cause the home activity
to be launched if the stack is now empty.

Also fixed a problem where some timeouts would not be removed when destroying
an activity, and a race condition in boot that would cause the
PhoneWindowManager to initially start out with the home key not working.

Bug: 6381224
Change-Id: If046bb01aed624b0d9ee3bbaaba68ed6b98fd1d0
2012-06-25 14:27:41 -07:00
Dianne Hackborn
adb80930a9 am eef58e85: am e06e1619: Merge "Fix issue #6700897: Activity paused by activating the..." into jb-dev
* commit 'eef58e858a24c15fff303622dfe3990799e03b51':
  Fix issue #6700897: Activity paused by activating the...
2012-06-21 16:47:37 -07:00
Kenny Root
287a64af97 am ae017c55: am a9543a3d: Merge "Pass additional inputs when spawning apps via the Zygote and add SELinux permission checks."
* commit 'ae017c55824ca345186b0c9fc204401153bd8a23':
  Pass additional inputs when spawning apps via the Zygote and add SELinux permission checks.
2012-06-21 16:47:26 -07:00
Dianne Hackborn
eef58e858a am e06e1619: Merge "Fix issue #6700897: Activity paused by activating the..." into jb-dev
* commit 'e06e1619a153a902083d2a1a0c01c86d3c7e546e':
  Fix issue #6700897: Activity paused by activating the...
2012-06-21 15:52:23 -07:00
Dianne Hackborn
f530ac323b Fix issue #6700897: Activity paused by activating the...
...lock screen does not response to onNewIntent()

We now keep activities stopped even while the lock screen is
displayed.  (We used to keep them stopped while the screen was
off, and then resume the top activity when the screen was turned
on even though they are covered by the lock screen.)

When a new intent is being delivered to an application, if it
is not resumed it is held in a pending list until the next
time the activity is resumed.  Unfortunately that means for
the case where the activity is being held stopped due to the
screen off or lock screen, it will not receive any new intents,
even though it is at the top of the stack.

Fix this by adding an additional condition that allows the new
intent to be delivered immediately if the activity manager is
sleeping and the target activity is at the top of the stack.

Also some debug output improvements, since pending new intents
were not being included in the debug output, making it impossible
to see we were in that situation.

Change-Id: I5df82ac21657f1c82e05fd8bf21474e883f44e6f
2012-06-21 14:17:48 -07:00
Kenny Root
ae017c5582 am a9543a3d: Merge "Pass additional inputs when spawning apps via the Zygote and add SELinux permission checks."
* commit 'a9543a3dad0da58f30580bdf99b76bc2ab97a2df':
  Pass additional inputs when spawning apps via the Zygote and add SELinux permission checks.
2012-06-21 14:17:13 -07:00
Kenny Root
a9543a3dad Merge "Pass additional inputs when spawning apps via the Zygote and add SELinux permission checks." 2012-06-21 11:05:55 -07:00
Dianne Hackborn
468a0051eb am 99e33bf1: am 17b9cec1: Merge "Fix issue #6636731: Mariner animation ring gets stuck" into jb-dev
* commit '99e33bf14b2be799efe02b9a8a42b25abc0fced3':
  Fix issue #6636731: Mariner animation ring gets stuck
2012-06-18 10:49:06 -07:00
Dianne Hackborn
99e33bf14b am 17b9cec1: Merge "Fix issue #6636731: Mariner animation ring gets stuck" into jb-dev
* commit '17b9cec1b6fedd0e54ff61f5a12f0e515add70ab':
  Fix issue #6636731: Mariner animation ring gets stuck
2012-06-18 10:31:05 -07:00
Nick Pelly
10c45b6965 Merge "Include WIFI scan's in Battery Stats." 2012-06-15 16:55:41 -07:00
Nick Pelly
6ccaa540a1 Include WIFI scan's in Battery Stats.
Call noteWifiScanStartedFromSource() when a scan is started.
Call noteWifiScanStoppedFromSource() when a scan is finished.

The current implementation tracks to UID that requested the scan, and
correctly tracks the duration of the scan. It ignores scan requests
that occur when a scan is already in progress. It does not distinguish
between active and passive scans.

Repurpose all the noteScanWifiLockAcquired/Released() plumbing
for WIFI scan tracking. The WIFI scan locks were never reported
to the user. Use noteFullWifiLock() when WIFI scan locks are used -
this makes sense because the power draw for a WIFI scan lock
should be about the same as for a full WIFI lock.

Bug: 6642581
Change-Id: Ida6e87992853698545b89f875c973a239218317d
2012-06-15 16:10:38 -07:00
Dianne Hackborn
6e3d6daa37 Fix issue #6636731: Mariner animation ring gets stuck
Weren't cleaning out any ActivityOptions that are still attached
to a finishing activity.

Bug: 6636731
Change-Id: If0520bbcbf1d4ce19d46ff769918893cefda9c87
2012-06-15 12:12:56 -07:00
Christopher Tate
0d732fe68c am 0e44a6be: Merge "Don\'t finish noHistory="true" activities behind the lock screen" into jb-dev
* commit '0e44a6beeae8a17e81145b83f2dfb8f719d41f52':
  Don't finish noHistory="true" activities behind the lock screen
2012-06-14 19:37:45 -07:00
Christopher Tate
d3f175c817 Don't finish noHistory="true" activities behind the lock screen
The foreground activity is stopped when the device goes to sleep,
and started again when the device is unlocked.  We now distinguish
this case from a "normal" stop, and do not finish() a foreground
noHistory="true" activity inappropriately when the device sleeps.
We also detect the case where an activity is started while the
device is still asleep, in which case the foreground noHistory
activity is cleaned up as part of bringing the new activity to
the foreground.

Bug 6657549

Change-Id: I9c6a0830aed0e47e4207b62803b90067c8486112
2012-06-14 16:51:58 -07:00
Christopher Tate
4d3448db54 am 4cabbef8: Merge "Make sure to stop noHistory="true" activities properly" into jb-dev
* commit '4cabbef8266c909997cf608d008920f5a2f49937':
  Make sure to stop noHistory="true" activities properly
2012-06-12 13:41:31 -07:00
Christopher Tate
5007ddded6 Make sure to stop noHistory="true" activities properly
The code was correctly inducing a 'finish' when such an activity was
being stopped, but then was not continuing with the rest of the stop
bookkeeping at that point.  In some circumstances this could result
in an inconsistent state, with the activity marked as finishing but
neither in the foreground nor stopped.

Bug 6585403

Change-Id: Ib5c5be885bc6534e099e040d87a8589f7b7454ce
2012-06-12 13:08:18 -07:00
Vairavan Srinivasan
ac5f998396 DO NOT MERGE: Cherry-pick 2ed524966d3c4bd04ea5f54026ed59558d73cd44 to JB.
This was contributed from AOSP, a fix to the management of URI write
permissions.  This is a very blatant bug, and with the new Intent ClipData
and other stuff we are making much more use of write permissions in JB,
so it is well worth taking.

Change-Id: I58c86119b4d5c13fefd090944bea139803df1a48
2012-06-11 13:06:41 -07:00
Dianne Hackborn
5134d711d1 am 574352a7: am aa8cac86: Merge "frameworks/base: release references of UriPermissionOwner"
* commit '574352a796e6398ff4f2b7fb1e14ada035e9a47a':
  frameworks/base: release references of UriPermissionOwner
2012-06-11 11:22:09 -07:00
Jean-Baptiste Queru
b8c6405fda resolved conflicts for merge of cddaf4d5 to jb-dev-plus-aosp
Change-Id: I973d361a9599b32f9eaced0748d984900590ea3d
2012-06-11 11:01:19 -07:00
Dianne Hackborn
aa8cac86d8 Merge "frameworks/base: release references of UriPermissionOwner" 2012-06-08 18:45:10 -07:00
Dianne Hackborn
f72467ad98 Include important native processes in watchdog stacks.
Helps us track down deadlocks involving native service processes.

Bug: 6615693
Change-Id: I580047550772e29586195a8cf440141574e3f40c
2012-06-08 18:36:48 -07:00
Björn Davidsson
90f9e31343 Performance: Activity manager perf unnecessary recalc of oom_adj
If an activity has bound servicesor content providers,
updateLruProcessInternalLocked will be called recursively with
the oomAdj flag set, resulting in several recalculations of oomAdj
with unchanged data. Doing it at the end of the top level call to
updateLruProcessInternalLocked should be sufficient.

Change-Id: I95e27011e1d3519f256a9bd756cbb18d43e8db29
2012-06-08 12:56:14 +02:00
Dianne Hackborn
bd145dbfd7 Fix issue #6609383: java.lang.SecurityException: Requires...
...MANAGE_APP_TOKENS permission

Bug: 6609383
Change-Id: I5ce8ac1ec496af50477111b46e6daea81181e3ca
2012-06-05 16:20:46 -07:00
Dianne Hackborn
84375876fc Work on issue #6579997: Mariner entrance animation
Add a new variation of ActivityOptions that allows you to
supply custom animation resources and get a callback when the
animation starts.

Use this in SearchPanelView to determine when to start hiding
the search panel instead of having a fixed delay.

Fix some issues in the activity manager where we would cancel
the options in cases where we should actually keep them to give
to the window manager for a transition.  (Basically when the
activity being started is not actually ending up launched, but
just results in a shift in the activity stack.)

Note that this is not quite what the design calls for -- the
entire search UI is waiting and then disappearing when the
animation starts, instead of the ring first disappearing while
waiting for the time to fade out the circle.

Change-Id: Iee9a404ba530908d73cdbd4a9d0d2907ac03428f
2012-06-01 19:13:55 -07:00
Dianne Hackborn
a93c2c117d Extend process observer to be usable for media routing.
It now has a new callback to report changes in the "importance"
of processes.  Rewrote the dispatching code to be a bit more
efficient now that we are sending more reports.

Change-Id: Ie865cfd286455819f04e8c14e9b6fd54d028f8f2
2012-05-31 18:58:34 -07:00
Dianne Hackborn
f0e96de863 Merge "Maybe fix #6584979: Unable to launch share chooser activity from a Notification action" into jb-dev 2012-05-31 17:38:42 -07:00
Dianne Hackborn
a3a041d55b Maybe fix #6584979: Unable to launch share chooser activity from a Notification action
Don't count an activity as a system dialog to be closed, if it is the
one that asked to have system dialogs closed.

Change-Id: I60bb194adde78dc3ac0a4d9b0c1dfbabd105e594
2012-05-31 16:18:21 -07:00
Dianne Hackborn
d9137ca87e Add time stamp to content provider connection.
For help in tracking down memory use issues, seeing how long
a connection has been held that is keeping other processes around.

Let's call this for issue #6577613: Unbelievably sluggish nexus-S

Change-Id: Ia3d016c5ed9d2155eea18ec884047e1e1d8a0ad5
2012-05-30 15:29:36 -07:00
Dianne Hackborn
7f96b7961b A little debug code from issue #6516197: Places app not getting removed...
...from recent apps drawer after launching Places app

Change-Id: Ibfa75e9cea2721a7380d7c13dc21504fbce61aee
2012-05-29 18:46:45 -07:00
Dianne Hackborn
6ae8d18218 Fix (mostly) issue #5109947: Race condition between retrieving a...
...content provider and updating its oom adj

This introduces the concept of an "unstable" reference on a content
provider.  When holding such a reference (and no normal stable ref),
the content provider dying will not cause the client process to be
killed.

This is used in ContentResolver.query(), .openAssetFileDescriptor(),
and .openTypedAssetFileDescriptor() to first access the provider
with an unstable reference, and if at the point of calling into the
provider we find it is dead then acquiring a new stable reference
and doing the operation again.  Thus if the provider process dies
at any point until we get the result back, our own process will not
be killed and we can safely retry the operation.

Arguably there is still the potential for a race -- if somehow the
provider is killed way late by the OOM killer after the query or
open has returned -- but this should now be *extremely* unlikely.
We also continue to have the issue with the other calls, but these
are much less critical, and the same model can't be used there (we
wouldn't want to execute two insert operations for example).

The implementation of this required some significant changes to the
underlying plumbing of content providers, now keeping track of the
two different reference counts, and managing them appropriately.  To
facilitate this, the activity manager now has a formal connection
object for a client reference on a content provider, which hands to
the application when opening the provider.

These changes have allowed a lot of the code to be cleaned up and
subtle issues closed.  For example, when a process is crashing, we
now have a much better idea of the state of content provider clients
(olding a stable ref, unstable ref, or waiting for it to launch), so
that we can correctly handle each of these.

The client side code is also a fair amount cleaner, though in the
future there is more than should be done.  In particular, the two
ProviderClientRecord and ProviderRefCount classes should be combined
into one, part of which is exposed to the ContentResolver internal
API as a reference on a content provider with methods for updating
reference counts and such.  Some day we'll do that.

Change-Id: I87b10d1b67573ab899e09ca428f1b556fd669c8c
2012-05-29 13:33:09 -07:00
Vairavan Srinivasan
2ed524966d frameworks/base: release references of UriPermissionOwner
Change-Id: I72e2310458de15f18e6f2c67f383bbb5c8f60ae2
2012-05-22 00:06:15 -07:00
Dianne Hackborn
5320eb8938 Fix activity resolver, issues #6519130 and #6507239
6519130: Starting ResolverActivity with no arguments crashes system_server
6507239: ResolverActivity may bypass signature permissions

Change-Id: I64534f781bc6b7eb45e85dbe3a55d351ee28e85c
2012-05-18 15:04:53 -07:00
Dianne Hackborn
e302a16235 A few odds and ends.
- Add documentation on "television" UI mode.
- Tweak new documentation and implementation around propagating
  URI grants through choosers.
- Add new activity launch flag for closing system dialogs.

Change-Id: I978c05f0dc3d16e1c55d43631828b9efa6335b19
2012-05-15 14:58:32 -07:00
Dianne Hackborn
03fcc333cf Fix issue #6284404: ArrayIndexOutOfBoundsException in...
...FragmentManagerImpl.restoreAllState

This was a bug related to the difference between the pre- and post-HC
behavior of onSaveInstanceState().  Prior to HC, state was saved
before calling onPause().  Starting with HC, it is saved between
onPause() and onStop().  To maintain compatibility with existing
applications, there is a check in ActivityThread for pre-HC to in
that case emulate the behavior of old applications, still calling
onSaveInstanceState() before onPause() but using the state later.

One of the special cases we had to deal with in the old model of
saving state before pausing was restarting an activity that is
already paused.

Consider, for example: you have two activities on screen, the one on
top not fullscreen so you can see the one behind.  The top activity
is resumed, the behind activity is paused.  In the pre-HC world, the
behind activity would have already had its state saved.

Now you rotate the screen, and we need to restart the activities.
We need to destroy the behind activity and create a new instance,
but the new instance has to end up in the paused state.  To
accompish this, we restart it with a flag saying that it should
end up paused.  For the pre-HC world, since it ends up paused,
we need to make sure we still have its instance state kept around
in case we need it because we can't regenerate it (since it is
already paused).

So that is what the changed code here is doing.  It goes through
the normal create/start/resume steps, but holds on to the current
saved state so that it isn't lost when resume clears it, and then
puts the activity back to paused and stuffs that old saved state
back in to it.

The problem is that this code was doing it for every application,
even HC apps.  So we end up in a bad state, when a HC app has its
saved state sitting there as if it had been saved, even though it
is only paused.  Now if we go to restart the activity again, instead
of asking it for a new saved state (as we should for a HC app as
part of stopping it), we just re-use the existing saved state again.

Now this wouldn't generally be a huge problem.  Worst case, when we
restart the activity yet again we are just instantiating it from
the same saved state as we used last time, dropping whatever changes
may have happened in-between.  Who cares?  All it has been doing is
sitting there in the background, visible to the user, but not something
they can interact with.  If the activity made changes to its
fragments, those changes will be lost, and we will restore it from
the older state.

However...  if one of those fragements is a retained fragment, this
will *not* appear in the saved state, but actually be retained across
each activity instance.  And now we have a problem: if the retained
fragments are changed during this time, the next activity instance
will be created from the most recent state for the retained fragments,
but the older state for everyting else.  If these are inconsistent...
wham, dead app.

To fix this, just don't keep the saved state for HC apps.

Also includes a small optimization to ActivityStack to not push
the home screen to the front redundantly.

Change-Id: Ic3900b12940de25cdd7c5fb9a2a28fb1f4c6cd1a
2012-05-15 13:13:33 -07:00
Amith Yamasani
bfc1be1101 Fix a problem in finish affinity in Activity Manager.
Finishing tasks with an activity affinity was failing if the
activity was found at index 0. This fixes the loop condition.

Change-Id: If2e0d294e3e4493bca8b7efd40f24adaf2eb0b6f
2012-05-15 11:12:17 -07:00
Dianne Hackborn
b61a02657b Fix issue #6020164: Settings crashed on orientation change...
...while listening to TTS example

This was a nice one.  What was happening is that immediately upon
being created, the activity was starting another activity in a
different process.  The second activity would never show, just
immediately exit.  However the original activity had time to
pause and get into stopping itself before the second activity had
come back to the activity manager to say it was going away, resulting
in the activity manager asking the original activity to resume.

At this point the activity manager's state is that the second
activity is finishing and gone, and the original activity is
resumed.  However in the app process the original activity is
still working on stopping itself, and it eventually completes
this and tells the activity manager.  The activity manager now
changes its state to STOPPED, even though it is actually resumed
and that is the last thing it told it to be, and it is now
proceeding to set itself in that state.

This would result later in the activity manager sending an
unnecessary state change to the application.  In the case of
the screen here, we next do a rotation change, the activity
manager thinks the current state is STOPPED not RESUMED, so it
tells the application to relaunch the activity in a new config
but not in the resumed state.  Now it does the whole "start a
new temporary activity" thing again, at which point it tries
to pause the original activity again, and we have an unbalanced
onPause() call to the app and it falls over.

Change-Id: I38b680746f4c61ae30e7ce831e1de187adf60902
2012-05-14 17:19:18 -07:00
Michael Jurka
421dceb0a4 Merge "Making transition out of recents look better" into jb-dev 2012-05-10 10:35:19 -07:00
Michael Jurka
21385cd83d Making transition out of recents look better
- Fading out recents first, then scaling up app
thumbnail
- Fade Recents out over 130ms
- Delay the window animation for 200ms first,
then animate for 200ms (previously we didn't delay
and then animated for 300ms)

Bug: 6390075

Change-Id: Ia8c753bf7ee03d2acef6eb2772b28d88fe10a682
2012-05-09 20:25:28 -07:00
Dianne Hackborn
59325eb31f Add new API to find total RAM.
Change-Id: Iad2dff3c44f471515f093e7f0d0d959528881ab9
2012-05-09 18:45:20 -07:00
Dianne Hackborn
a53de0629f Add callback hack to find out when to load system properties.
Use this to reload the trace and layout bounds properties.

This is ONLY for debugging.

Change-Id: I1c4bdb52c823520c352c5bac45fa9ee31160793c
2012-05-09 14:53:20 -07:00
Craig Mautner
9158cbcbc9 Remove incorrect CLEAR_WHEN_TASK_RESET behavior.
Fixes bug 6447950.

Change-Id: I6b512d5dd44c54e7b51f85c51783e8c942238c1d
2012-05-09 11:37:48 -07:00