Commit Graph

2253 Commits

Author SHA1 Message Date
Adam Powell
90b9f84c43 Merge "API updates for MediaRouter" into jb-dev 2012-06-14 17:51:27 -07:00
Adam Powell
0d03c042f9 API updates for MediaRouter
* Accept a Context when fetching the names of routes and
  categories. This lets string resources resolve at time of access
  with the correct configuration. The older versions remain available
  that will use the static resources from the application. (There are
  enough cases where applications will populate this from external
  data that requiring it each time even when it was not initialized
  from a resource doesn't seem reasonable.)

* Remove the ability for apps to programmatically select non-user
  routes.

* Make MediaRouter.Callback an abstract class instead of an interface.
  This will make further extensions easier to keep compatible in the
  future.

Change-Id: If981c511dfbdfaf41ef0d1cfe4a377fc14bb5600
2012-06-14 16:16:31 -07:00
Jeff Brown
9e197141f8 Merge "Add new ASSIST key and map it to the global assist intent." into jb-dev 2012-06-14 11:28:52 -07:00
Jeff Brown
de7a8ead24 Add new ASSIST key and map it to the global assist intent.
Moved some duplicate code from SearchPanelView and LockScreen
over to SearchManager to avoid creating yet another copy of it
in PhoneWindowManager.

Bug: 6594275
Change-Id: Ib4ebcd6817639d17548952ab2ce7cb876c05777c
2012-06-14 04:16:26 -07:00
Daniel Sandler
4365d066e8 Merge "Remove line3 in big notification unless there's text to show." into jb-dev 2012-06-13 18:00:56 -07:00
Adam Powell
70e11e50ee MediaRouter dialog
Add the dialog behavior for MediaRouteActionProvider/MediaRouteButton.

Still TODO:

* Switch audio icon based on source; speaker/bt/user

* Rig up volume slider

* Rig up item icons

* Rig up group button for groupable categories

* Make grouping work

Change-Id: I3f992516b184d5ae940ddb7bbb7f94ff58914589
2012-06-13 11:42:10 -07:00
Daniel Sandler
916ad91c38 Remove line3 in big notification unless there's text to show.
If you have no subText or summaryText in a big template, but
you *do* have a number, the overflow bar (below the big text
or inbox or whatever) would have shown; now it does not.

Bug: 6657006
Change-Id: Ib2af2712da3a98227bd8d697560893adbdc427e9
2012-06-13 12:17:07 -04:00
Daniel Sandler
7d2e8960d0 Merge ""Two actions ought to be enough for anybody."" into jb-dev 2012-06-13 07:07:02 -07:00
Daniel Sandler
602ad1c978 "Two actions ought to be enough for anybody."
Bug: 6650170
Change-Id: I5ee6990a8e556f9ee1fbfb0989db33f75b07f4ea
2012-06-12 16:06:27 -04:00
Adam Powell
b35c445f34 MediaRouter work
Fix a bug where MediaRouter would crash on creation

Add click listener for app-supplied extended settings on the route
selection dialog.

Change-Id: I2991db1720b5c574148e250526984592f4dc3c44
2012-06-12 11:26:39 -07:00
Dianne Hackborn
b58b8f832d Rework media router to be per-context with global process state.
Change-Id: Ic1cb6f13e691d22783bcdafae85b7c75aec0a66f
2012-06-11 15:41:08 -07:00
Adam Powell
d0d2cda9d4 Further work on MediaRouter
Remove volume control and tracking. This will be handled by extensions
to existing audio and media APIs for now.

Tweak/refine other aspects of the API. Pass the router to callbacks for
easier future-proofing. Add group/ungroup callback methods.

Change-Id: Ib69e76e5f46280a9002b545bcf4cbc7b839844ee
2012-06-11 13:17:44 -07:00
Daniel Sandler
619738c9e7 Various notification template cleanups.
Bug: 6597693 // hide line3 in InboxStyle
Bug: 6593691 // vertical centering inconsistencies
Bug: 6592116 // no left action gutter in BigPicture
Bug: 6622757 // missing subtext in BigText expanded
Change-Id: I941af99d0a905b6e0aa6fb74ad4eff29c17d9fc2
2012-06-08 11:41:37 -04:00
Adam Powell
690ffb4e1f More fun with MediaRouter
Add action provider, button, and styles. Extend ActionProvider to
allow for getting references to MenuItem instances.

Implement toggle mode for the MediaRouteButton/ActionProvider. Dialog
selection yet to come.

Change-Id: Ibe3188570f503bbf8dd00cf154663435656a7171
2012-06-05 19:15:57 -07:00
Dianne Hackborn
ee76efb74b Fix issue #6584942 IllegalStateException: Failure saving state...
...active SuggestFragment{419494f0} has cleared index: -1

There were issues when the same fragment was removed and then
added again before completely finishing the remove (such as due
to a running animation).

Two fixes:

- Now when you call FragmentTransaction.replace() and are replacing
  a fragment with the same fragment, this becomes a no-op, to avoid
  visual artifacts in the transition and bad states.
- When we are moving the fragment state up and it is currently
  animating away to the INITIALIZED state, we could end up making
  the fragment inactive as part of the cleanup.  In this case it
  shouldn't be made inactive; we just need to initialize it but
  keep it active since we are going to continue to use it.

Bug: 6584942
Change-Id: I8bfd73f2d8ef8f67b541b3e2525dfa5db6c3bfa5
2012-06-05 10:52:38 -07:00
Daniel Sandler
7a394abb54 Merge "Unused API should be hidden." into jb-dev 2012-06-04 10:49:53 -07:00
Daniel Sandler
a90513d5f4 Unused API should be hidden.
Change-Id: Ifed4d06e620c990ccecc1ee1aaf3adedbdc7c2da
2012-06-04 02:11:17 -04: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
388d4801d5 Merge "Working on issue #6561352: java.lang.RuntimeException: Unable to start..." into jb-dev 2012-05-30 18:11:23 -07:00
Dianne Hackborn
61af8a8ef7 Working on issue #6561352: java.lang.RuntimeException: Unable to start...
...activity ComponentInfo{com.google.android.googlequicksearchbox
/com.google.android.googlequicksearchbox.SearchActivity}

Add check for a situation where we are saving the state of a
fragment with a -1 index, and fail early in that case with more
debug information.

Change-Id: I03a928dde521fa06664d0036dd9f90eef3247afc
2012-05-30 16:38:30 -07:00
Daniel Sandler
c5d2050961 Merge "Visual tweaks to notifications." into jb-dev 2012-05-30 12:55:00 -07:00
Daniel Sandler
6387d2f6da Visual tweaks to notifications.
- Smaller right_icons
  - Higher-contrast text colors
  - Dividers between actions
  - Dividers above actions and overflows
  - Consistent 8dp gutter on left of content
  - BigTextStyle should not show line3 unless there is a subtext.
  - Collapse summary ("overflow") text into line3. This is a
    little wild because now the contentText, subText, and
    summaryText all share this spot, but the various
    variables all have different times when they're
    expressed so you have greater control over what shows
    where in the 1U and the expanded form.
  - Do not show contentText in BigText's line3. If you have
    subtext or summarytext, show that; otherwise suppress
    line3 entirely.

Bug: 6558134 // line3
Bug: 6508804 // other visuals
Change-Id: Ib79e818a332d17000e9a8fce333eff8f8cf043aa
2012-05-30 15:28:22 -04:00
Dianne Hackborn
5f48fca218 Fix issue #6579824: Email crash observed after updating...
...device from JRN59D to JRN60

Deal correctly with multiprocess content providers that need to
be loaded into a secondary process; wasn't correctly detecting the
case where the IContentProvider returned by the activity manager
is null.  (installProvider used to be given the direct IContentProvider,
now it gets the ContentProviderHolder and much check whether the
provider inside is null.)

Change-Id: I888622e275a459031ab849952941f39cf9c02ee0
2012-05-30 11:06:31 -07:00
Christopher Tate
aefe4aa4d4 Merge "Prevent construction/use of invalid restore session proxies" into jb-dev 2012-05-29 15:52:24 -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
Christopher Tate
f5491fc1b6 Prevent construction/use of invalid restore session proxies
Possible (rare) null return was not being handled.  Fixes
bug 6554812.

Change-Id: I470e916f2156ff7ed2947d6ce21ef2816fc7f97d
2012-05-25 14:14:49 -07:00
Jean-Michel Trivi
37fde0aca0 Unhide KeyguardManager locked and secure state getters
Unhide the following methods:
  android.app.KeyguardManager.isKeyguardLocked()
  android.app.KeyguardManager.isKeyguardSecure()

Fix some javadoc typos

Change-Id: Iedcd9f6a5261b7a3b47431edff013f629e1dc45d
2012-05-24 18:09:44 -07:00
Chris Wren
3745a3da75 BigPicture notifications for screenshots.
Needed a little extra help from the builder to make this
happen (like the title, you might want a different largeIcon
in the expanded view if---as in this case---it is redundant
with the big picture).

Needed to fix BigPicture template to reveal actions.

Bug: 6289107
Change-Id: I19dc62e693ee2c87cbe82f7327fe9115768b4102
2012-05-22 17:47:33 -04:00
Daniel Sandler
c40a7fe002 Merge "Fix three-line notifications." into jb-dev 2012-05-22 08:17:29 -07:00
Daniel Sandler
9f7936a30b Fix three-line notifications.
To accommodate three lines as before, we now adjust the size
of text and icons to fit.

Also in this change:

 - snazzy little shadow below BigPicture's 1U block
 - restore contentText to BigPicture notifications
 - make overflow match other notification text (not so big)
 - fix text position jumps between 1U and expanded
   notifications across all templates

Bug: 6519374 (three-line notifications cut off)
Bug: 6494982 (text jumps)
Change-Id: I717ec2dde805c25e3b949641ca7e69e4d8fc86d2
2012-05-21 16:45:11 -04:00
Romain Guy
13b907353f Remove unused, obsolete debug code
All these features have either been abandonned and left un-maintained
for years or can be replaced by systrace.

Change-Id: I42e4579a8078744047e5fe08a7a15254970b09bc
2012-05-21 13:29:06 -07:00
Chris Wren
29bb6d925b Support more items in the Notification.InboxStyle, plus an overflow.
Bug: 6500113
Change-Id: I9f6b45ef0821c45000afa8a23ee51033b51df298
2012-05-21 07:56:58 -07:00
Dianne Hackborn
9275197d35 Add aapt support for generating proguard rules for onClick methods.
Also fix Activity menu inflater when using the dark on light
theme wrapper to still be able to find onClick listeners.

Change-Id: Ie206db26d1df96041bc477804e476b02ad99dc9d
2012-05-18 19:23:19 -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
Chris Wren
4ed80d581c Don't assume digest lines are GONE, we may be recycling them.
Bug: 6500945
Change-Id: I0f01ccdde25bebb8335f0d34408877b895d286ff
2012-05-17 09:35:34 -04:00
Adam Powell
b00b8b0d53 Be more tolerant in TaskStackBuilder
Let callers try to get a parent stack for an activity class with no
parent declared.

Bug 6503702

Change-Id: Iec1bc7a8d9e5b65b756a8ebd0e53d63506796aa3
2012-05-16 16:23:03 -07:00
Chris Wren
b46f3f6743 Merge "Defensively reset the default state of layout elements." into jb-dev 2012-05-16 12:01:44 -07:00
Daniel Sandler
8680bf865a Action button improvements:
- Horizontal layout
  - At most 2 are shown
  - Tombstones are now shown (if the intent is null, the
    button is disabled; use it for quick feedback of an
    action's effect)

Bug: 6418617 (tombstones)
Bug: 6482237 (action separators)
Change-Id: Ie0c613006227bbfe1c0ec6eab1cda4f3782a05f2
2012-05-16 01:27:54 -04:00
Chris Wren
67dc9a02cf Defensively reset the default state of layout elements.
Bug: 6500945
Change-Id: Idf7300c44955413e2db26ecbabdef9f67f12f360
2012-05-16 01:03:20 -04:00
Adam Powell
3d193d92f6 Handle returning a result from automatic up navigation from another
task.

When navigating up from a different task, if the current activity has
a result set only finish the current activity instead of trying
finishAffinity. Log this so that developers know why this behavior is
happening.

Bug 6465336

Change-Id: Ic7cec6f0c0d5861296091e2aea9344309f5fc600
2012-05-15 16:53:34 -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
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
Daniel Sandler
f54bfcf5a3 Merge "Restyling action buttons." into jb-dev 2012-05-10 15:44:16 -07:00
Daniel Sandler
e551884b09 Restyling action buttons.
Bug: 6418617
Change-Id: I843352fbd167aeb6cc7beb0172b7416aabd5856a
2012-05-10 16:45:48 -04:00
Daniel Sandler
a4487e1b4b Merge "Clean up API docs for Notification." into jb-dev 2012-05-10 10:57:02 -07:00
Michael Jurka
421dceb0a4 Merge "Making transition out of recents look better" into jb-dev 2012-05-10 10:35:19 -07:00
Daniel Sandler
d33b803b6b Clean up API docs for Notification.
Bug: 6427241
Bug: 6427245
Bug: 6427814
Change-Id: I91d741513e3b345d2b9f28ad0a1bf11b0a898076
2012-05-10 13:15:37 -04:00
Daniel Sandler
e95658c98e New backgrounds for notifications.
Note that PRIORITY_MIN notifications have a special
background treatment.

Bug: 6418617
Change-Id: I5f96330fcc53ac39e80a025baa0c134bd1e971b8
2012-05-10 04:52:18 -07:00
Dianne Hackborn
2c2864f65c Merge "Add new API to find total RAM." into jb-dev 2012-05-09 21:34:42 -07:00