Merge commit 'f32f746b83826303350417ff9937a6f9e5488f24'
* commit 'f32f746b83826303350417ff9937a6f9e5488f24':
Make the SearchDialog's AutoCompleteTextView dropdown respect the
Before, Drawables for cached icons were reused. This is not good,
since they can then share mutable state information. This change
copies all Drawables when getting them from the cache, storing
only the constant state in the cache.
Hopefully fixes http://b/issue?id=1984813
IME again when the user presses right or left from a query-jammed
suggestion to continue editing. Previously we required the user
to press on the text field again in order to get the IME to show.
We accomplish this by factoring out the code to 'ensureImeVisible'
into a separate method and calling that from SearchDialog.
Fixes http://b/1976338
Merge commit '9ce081aa2493dc163a42decfd4e1756b5c55a834'
* commit '9ce081aa2493dc163a42decfd4e1756b5c55a834':
Add ability to delay messages in Filter based on constraint. Use this to delay 500ms for delete keys in the search dialog.
Merge commit 'eb09c6a07abf58b4da2c4baf3800a1f96e3b0731'
* commit 'eb09c6a07abf58b4da2c4baf3800a1f96e3b0731':
Issue #1969025: need api for launching intent as if it were coming from another component
Merge commit '8e3c3f6461b53dc587ba92b3fe8cfbeb985f8514'
* commit '8e3c3f6461b53dc587ba92b3fe8cfbeb985f8514':
Only parse search suggestions that look like HTML
Merge commit '5380aa29470274de5b3e445d577ef0834cfacb71'
* commit '5380aa29470274de5b3e445d577ef0834cfacb71':
Get rid of drawing hacks for search dialog suggestions
HTML parsing of search suggestions is still a major
CPU hog in the search dialog. This change first
checks if the text contains any HTML markup
(by looking for < and &) before bothering to
treat it as HTML.
Before, SuggestionsAdapter parsed every HTML formatted
string three times, to support state-dependent colors
in <font> tags. Now that there is support in Html
for color resources (added in
https://android-git.corp.google.com/g/7441),
we can get rid of this code.
Also, SuggestionsAdapter had a special purpose view
for drawing background colors when suggestion items
were not selected or pressed. This change replaces that
code with a StateListDrawable of ColorDrawables.
Before this change, HTML parsing used ~17% (uncontrolled benchmark,
just did some random searching) of the system_process CPU.
This change should reduce that by 2/3, i.e. about ~11% total
system_process reduction.
This change adds checking that the searchdialog is initialized
properly to a few key event listeners where it was missing
before.
Also makes sure that the search dialog is not shown if the
global search is requested but the global search provider
cannot be found.
Should fix http://b/issue?id=1982128
"Device rebooting after search results"
where SearchDialog.onKeyDown() threw an NPE
Merge commit '82b283a9bf8e3508e1b5c6d4b6b8cae04597b83c'
* commit '82b283a9bf8e3508e1b5c6d4b6b8cae04597b83c':
Include 'calling_package' extra for uses of in-app voice search so that
Merge commit '1fffbd97fa756ef7d3e7e885a5c1c8bb64380c20'
* commit '1fffbd97fa756ef7d3e7e885a5c1c8bb64380c20':
Fix keyboard not showing for global search on Dream. Rather than trying to
call the hidden showSoftInputUnchecked method to show the IME in SearchDialog#show(),
override onWindowFocusChanged in our subclass of AutoCompleteTextView so that whenever
it gets focus, we call the public showSoftInput method, passing in the ACTV, which is
the correct way to do this.
This fixes http://b/1930989.
Merge commit '83a066c6d8ed953c3f5a1a44316509c9a9b0c6c2'
* commit '83a066c6d8ed953c3f5a1a44316509c9a9b0c6c2':
Fixes lock on Home. Adds a new API on Dialog to get a callback when the dialog
This adds a new API with the activity manager to find out about movement between
activities. For my sanity, the old IActivityWatcher is now renamed to
IActivityController, and the new activity movement interface is named
IActivityWatcher.
This changes the search manager itself to use the new API to manage its state.
Note that there are still problems when going back to the search dialog after
it was hidden -- the suggestions window no longer appears until you explicitly
dismiss and re-show it.
Merge commit 'c1d82e68eb4aae1b575e82b08e71a87670cc1532'
* commit 'c1d82e68eb4aae1b575e82b08e71a87670cc1532':
Use activity icon when search suggestion icon is missing
New left-hand side icon fallback logic in search dialog:
1. If the search dialog gets no icon column, it shows no
icon (like before). This would handle the case of in-app
search where the provider does not include icons.
2. If the icon column is empty, or there is an error converting
the icon id or URI to a drawable, the search dialog identifies
the suggestion source by looking at the
SUGGEST_COLUMN_INTENT_COMPONENT_NAME.
3. If SUGGEST_COLUMN_INTENT_COMPONENT_NAME is empty or not set,
the current searchable activity is considered the suggestion source.
4. Try to get the activity icon of the suggestion source.
5. Fall back to the application icon of the suggestion source
if there is no activity icon.
6. Fall back to some generic icon if there is no application icon.
Fixes http://b/issue?id=1905757
android.app.SearchManager implements
DialogInterface.OnDismissListener and DialogInterface.OnCancelListener
and thus exposes the methods onCancel(DialogInterface dialog) and
onDismiss(DialogInterface dialog). This was used by the SearchManager
to register itself as a listener on the search dialog, but is no
longer used.
This was an implementation detail that leaked into the public
API. Removing them would change the API, so they are deprecated instead.
Fixes http://b/issue?id=1962203
Restore runs during the SetupWizard, before the phone is usable per se, so we
want to avoid presenting the usual "Application whatever has crashed..." dialog
to the user in the middle of that process. This change modifies the exception
handling around agent bringup so that agent-originated exceptions are caught and
a null agent binder reported to the backup manager.
There are three points during this code sequence at which an exception can be
thrown due to application-code error:
+ the app's manifest can name a nonexistent or malformed BackupAgent class,
incurring a VM-level exception like ClassNotFound or BadCast.
- the agent's onCreate() method could crash/throw.
- the agent's onBind() method could crash/throw.
The new code arrangement here puts a try/catch around all of these possible
failure points. When the code is invoked for backup, any caught exception is
merely rethrown. During restore, however, execution is allowed to proceed
through reporting the app's agent binder back to the activity manager. If any
exception was thrown, this reported binder will be null, i.e. a clean failure
notification to the backup manager.
What this code does *not* do at present is tear down the app when an exception
has been thrown. This is happens if the exception is allowed to propagate.
Doing so cleanly is problematic, however, in circumstances where mutiple apps
and agents share a process. Leaving the background process around until it is
torn down by the usual policies is probably the safer course at present.
Merge commit '313ea433d18e7fd5438b94c0606c496fcc7a2f88'
* commit '313ea433d18e7fd5438b94c0606c496fcc7a2f88':
Make suggestion text color change based on the item state.
We support a ColorStateList reference now as a valid font color value
in the given html and manage html strings for all supported states
which we dynamically set while drawing the items.
This will get checked in along with changes to GlobalSearch,
EnhancedGoogleSearchProvider and Browser to make them use the new
model.
Bug: http://b/issue?id=1865037
Merge commit '6de4aed1c67263269f83f579ec5b06263d173ef3'
* commit '6de4aed1c67263269f83f579ec5b06263d173ef3':
Fixes#1933428. Call onPrepareDialog() on managed dialogs after their onCreate() is finished.
Before it was hidden in cancel(), which does not get
called when the search dialog is dismissed by clicking
on a suggestion.
Fixes http://b/issue?id=1967633
Details:
- Add a new SearchDialogWrapper class that makes sure
all access to the SearchDialog is run one a single thread
other than the main ServerThread.
- Don't save/restore seach dialog state in Activity.
This resulted in lots of calls to the SearchManager
throughout the life cycle of all activities, for
the questionable benefit of restoring the search dialog
in a few cases.
- Remove search UI state save/restore, and the isVisible()
method from SearchManagerService. They are no longer used,
and were tricky to implement since they return values from
the search UI thread to the service.
- Handle configuration changes in searchDialogWrapper instead
of calling through from Activity.
Fixes http://b/issue?id=1938101
TODO:
- Activity.performPause() calls stopSearch(). This call may not happen
until the new activity has been started. If the new activity starts a
search immediately, this search could be cancelled by the old activity's
call top stopSearch().
If provided and true, URLs entered in the search dialog while searching within this activity would be detected and treated as URLs (show a 'go' button in the keyboard and invoke the browser directly when user launches the URL instead of passing the URL to the activity). If set to false any URLs entered are treated as normal query text.
The default value is false. This is an optional attribute.