842 Commits

Author SHA1 Message Date
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
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
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
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
Dianne Hackborn
a4e2ec64db Merge "Fix Issue 26574: Service's onStartCommand receiving incorrect flag..." into jb-dev 2012-05-08 17:19:15 -07:00
Dianne Hackborn
d8f10240c0 Fix Issue 26574: Service's onStartCommand receiving incorrect flag...
...parameter for Intents

Change-Id: I2e2332c87e008c7ad6a89e17ae3f732c78e376ef
2012-05-08 17:14:58 -07:00
Jeff Brown
9ac663ef9a Merge "Disable input dispatch until boot finished." into jb-dev 2012-05-08 15:15:56 -07:00
Jeff Brown
c042ee2acd Disable input dispatch until boot finished.
Bug: 6263070
Change-Id: I25e15e3d8af8eb3343c7b684fec345337d9f6aab
2012-05-08 13:58:32 -07:00
Adam Powell
69de7e1a4e Fix a bug in ActivityManagerService#navigateUpTo
Deliver new intents to an existing parent from the calling uid obtained from
the applicationInfo instead of the process record, since the process record
might be dead.

Stoopid monkeys.

Bug 6328725

Change-Id: I4371a5705ccd7004f0dfe11da7c48d1563fb8dac
2012-05-07 18:42:24 -07:00
Dianne Hackborn
8e11051a06 Merge "Tweak anim API to automatically call Intent.setSourceBounds()." into jb-dev 2012-05-07 16:12:44 -07:00
Dianne Hackborn
d367ca88ee Tweak anim API to automatically call Intent.setSourceBounds().
Also don't retain the source bounds in recent tasks, since it
has no meaning there and it would be better when relaunching an
activity to have a new bounds set based on wherever it is now
being launched from.

Change-Id: Ia90c04ee98a888a7f725b038abe23d71e2b12800
2012-05-07 15:54:58 -07:00
Dianne Hackborn
755c8bfbff Fix issue #6319312: Consecutive call to Activity's onCreate()/onResume()...
...without onPause() in between

There was a bug in the handling of "always finish activities" where we
would go through destroying activities while in the middle of updating
the activity stack.  This would result in the activity behind the
non-full-screen activity being created and then immediately destroyed,
which things were not expecting.

Change-Id: Idaa89089f7b1af7eb747d7b8f9f394beeb2d23fa
2012-05-07 15:06:09 -07:00
Jeff Sharkey
2fea92e6d9 Merge "Clear ident in dismissKeyguardOnNextActivity()." into jb-dev 2012-04-30 17:22:05 -07:00
Jeff Sharkey
7ffaa98539 Clear ident in dismissKeyguardOnNextActivity().
BaseStatusBar uses this to launch activities over the insecure
lockscreen, so clear identity.

Bug: 6414983
Change-Id: Idf578923285ee1344e6e13e7f51e17a5f2005c75
2012-04-30 16:59:05 -07:00
Adam Powell
9b2a0f167e Merge "Fix a bug with updating extras in a PendingIntent with an intent stack" into jb-dev 2012-04-30 16:04:11 -07:00
Dianne Hackborn
56385cc452 Fix issue #6111771: Run-time Restart observed when signing in with an existing account
Change-Id: Ic6defb598cb08f2728d99eed7d0b209c88dd1a49
2012-04-30 15:07:47 -07:00
Adam Powell
501d4a510f Fix a bug with updating extras in a PendingIntent with an intent stack
Change-Id: I52e2677635b588b7301dd938e1dd32f94241cf5a
2012-04-30 15:03:57 -07:00
Dianne Hackborn
ecc5a9cca0 Add new Activity.finishAffinity() method.
It's cool!

Change-Id: I9fdcd9535b7f1ca2b311d3a1b23e5d058977b095
2012-04-26 18:56:09 -07:00
Dianne Hackborn
4797d57bf3 Merge "Fix issue #6373340: Cannot unlock to app if app was the..." 2012-04-24 18:38:44 -07:00
Dianne Hackborn
1e88e98d7d Fix issue #6373340: Cannot unlock to app if app was the...
...foreground app when the device was put to sleep

This is because of activities being kept in the stopped state
while the lock screen is shown, so we never get to the point of
it becoming visible again to know to proceed.

Just at this point consider the lock screen hidden so the
activity can be resumed and run as normal; the whole point of
this is to soon hide the lock screen, anyway.

Change-Id: I3a713a2f87b8e4412ff66724c051f09a2675be00
2012-04-24 18:35:55 -07:00
Adam Powell
4bde4b9274 Merge "Check for valid records associated with activity tokens in ActivityManagerService up-navigation methods." 2012-04-24 17:25:25 -07:00
Dianne Hackborn
2ed9c20048 Merge "Add new signature-level permission to get details of tasks." 2012-04-24 15:42:26 -07:00
Dianne Hackborn
e29ccb0d67 am b3a76660: am 78e62111: am fee88fdb: Merge "Issue: Foreground activity performs [Resume] and [Pause] when any process died in sleep mode."
* commit 'b3a766600275a004dfa2423e87229082d7f1232b':
  Issue: Foreground activity performs [Resume] and [Pause] when any process died in sleep mode.
2012-04-24 14:51:21 -07:00
Dianne Hackborn
8238e717df Add new signature-level permission to get details of tasks.
Third party apps now can't get access to the extras of the
intents associated with tasks, to keep private data in them
from leaking out.

Change-Id: I95af9e181ac42557bc8b981807e7ddd266a88d0e
2012-04-24 14:27:02 -07:00
Adam Powell
b71a5bc02b Check for valid records associated with activity tokens in
ActivityManagerService up-navigation methods.

Silly monkeys.

Fixes bug 6328725

Change-Id: Ifec3f162bdfc2e7e872a689210752c0f6b9b0ab7
2012-04-24 14:20:57 -07:00
Dianne Hackborn
d0d7503fd3 Move handling of package changes to a background thread.
Helps get rid of some jank when installing applications.

Change-Id: I97d0022f82d67796e334d37086e5911dd6ca6b62
2012-04-19 23:12:09 -07:00
p13451
dbad287b62 Issue: Foreground activity performs [Resume] and [Pause] when any process died in sleep mode.
Step to Reproduce
1)	Turn off device’s screen. (Sleep mode)
2)	Kill any process.
A.	Engineer Version: kill [PID]
B.	User Version: am force-stop [Package Name]
3)	Foreground activity proceed [Resume] and [Pause] consecutively.

Reason: Since ICS version, activity goes to stopped status when screen turns off.
stopIfSleepingLocked( ) makes activity to stopped status but, pauseIfSleepingLocked( ) was used in GB
and, activity keep paused status and, this problem did not occur.
This change give effect to resuming activity when any process was killed.
Because, resume is proceed without exception for activity status.
The exception only filtered for [ActivityState.PAUSED] in sleep or shutdown mode.
and, resume complete flow when activity status was [ActivityState.STOPPED].

Solution for this issue:
We think that exception’s condition have to change if stopped activity status is intended in sleep mode.
According to activity life cycle, activity can not resume from stop status.

Also check [ActivityState.STOPPING]. :)

Change-Id: Icca3366ac30ffa3b18f6e2393e4d7309089ef26a
2012-04-20 09:21:08 +09:00
Jeff Sharkey
35be756030 Move SystemUI out of system UID.
Add permissions for various things it pokes.  Create new permission
to control launching non-exported activities from recents.  Hidden
API to relax WallpaperService checks.

Change-Id: I547fdcd7c213dd153ae101533ce7c56cd8f86a0d
2012-04-19 11:54:34 -07:00
Dianne Hackborn
7f58b95f7c Fix to custom scale animations.
These now do something reasonable when performing transitions
across two activities that are both on top of the wallpaper.

Fixed computation of the pivot point of the animations.

Fixed issue where the recents panel was considered a status
bar element for purposes of deciding if the animating elements
are obscured by the status bar, which would result in us not
running the animation correctly.

Change-Id: I4b9b588b80243463e6f087a9703ee886ee281630
2012-04-18 14:58:03 -07:00
Amith Yamasani
95a6a96e1c Fix an NPE when launching an activity that's not found.
Bug: 6356194
Change-Id: I66aeeda3ecab36a4aa32fb78c1d0559a73cd9a7a
2012-04-18 09:54:43 -07:00
Amith Yamasani
d95ce04bdc Merge "Make sure persistent processes are not replicated for secondary users." 2012-04-17 11:55:54 -07:00
Amith Yamasani
a4a54e2a5f Make sure persistent processes are not replicated for secondary users.
An intent is launched in a singleton process if the process is persistent
and the resolved activity/service/etc is not requested to run in a different
process.

Change-Id: I1463e73a76bc8bde4185f9cf4395edb47515841d
2012-04-17 11:41:30 -07:00
Dianne Hackborn
eabfb3a36e Add new scale-up window manager animation.
Like zoom thumbnail, but without the thumbnail.

Change-Id: I9486dd204398b87c9e70ff0d05d03f4a22449cd6
2012-04-16 17:32:50 -07:00