Commit Graph

167 Commits

Author SHA1 Message Date
Christopher Tate
d1475e0375 Don't crash the app when restore agent bringup throws
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.
2009-07-09 15:36:17 -07:00
Satish Sampath
313ea433d1 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
2009-07-09 16:48:16 +01:00
Android (Google) Code Review
f9b7faee88 Merge change 6503 into donut
* changes:
  Hide soft keyboard in SearchDialog.dismiss()
2009-07-09 00:29:38 -07:00
Romain Guy
6de4aed1c6 Fixes #1933428. Call onPrepareDialog() on managed dialogs after their onCreate() is finished. 2009-07-08 13:56:28 -07:00
Bjorn Bringert
ec8ee34e06 Hide soft keyboard in SearchDialog.dismiss()
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
2009-07-08 21:49:42 +01:00
Bjorn Bringert
444c727e0e Run search UI on its own thread.
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().
2009-07-08 17:43:49 +01:00
Satish Sampath
d21572cd44 NEW_API: Expose autoUrlDetect searchable attribute.
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.
2009-07-08 15:09:08 +01:00
Mitsuru Oshima
569076c9f6 widgets scaling fix. Use container's compatibility info and display metrics when container and widgets disagree. 2009-07-06 21:13:39 -07:00
Romain Guy
870e09fcd2 Fixes #1963229. Introduces Context#isRestricted().
A restricted Context is a special type of Context that prevents specific features
from being used. For instance, android:onClick, used by View, can be dangerous when
used from within apps widgets. By using a restricted Context to inflate apps widgets,
widgets providers are prevented from using android:onClick.
2009-07-06 16:45:17 -07:00
Mike LeBeau
617202a53a Fix a bug where clicking the "more results" suggestion with the trackball
did not seem to expand to show the corpus selectors. (http://b/1906643)

It turns out that when the trackball was used to select this item, onItemClick
was getting called on the listener twice in AutoCompleteTextView#onKeyUp:
once when we call onKeyUp on the DropDownListView, and once a little further
down when we call performCompletion(). In our case, performCompletion() is
useless since it was intended for normal AutoCompleteTextViews which populate
text into the TextView when an item in the list is clicked, but we do not
rely on this. So the easiest fix is just to make performCompletion() do nothing
in our SearchAutoComplete subclass.
2009-07-06 14:29:25 -07:00
Android (Google) Code Review
54af78a3f7 Merge change 5950 into donut
* changes:
  Fix memory leaks in system_server unlink DeathRecipients in a whole bunch of places to avoid memory leaks
2009-07-01 12:52:39 -07:00
Suchi Amalapurapu
fff2fda019 Fix memory leaks in system_server
unlink DeathRecipients in a whole bunch of places to avoid memory leaks
2009-07-01 12:55:30 -07:00
Satish Sampath
fef8d3e4d8 Make search UI open up quicker to the user.
On invoking the search UI, the drop down list box with past queries and shortcut items
appears after a few hundreds of milliseconds on screen. This was because we were
displaying the drop down within the onFilterCompleted callback after the list box filtered
the items based on the given query text. While that code path is necessary, for the first
invocation of the search dialog with an empty query we can show the list box before the
text stuff happens. This change does that, issuing an async request to show the drop
down after pending events have been processed.

Without this change, on an average it took 350ms for the code to show the drop down.
With this change, on an average it takes 150ms.
2009-07-01 17:55:31 +01:00
Romain Guy
b5537c4522 Replace indeterminate progress animated asset with new ones 2009-06-30 12:39:18 -07:00
Romain Guy
f4f7046183 Update spinner's drawables. Clean up resources, pave the way for new animation. 2009-06-26 19:21:54 -07:00
Joe Onorato
4ababd922e Make the BackupHelperDispatcher properly handle multiple helpers. 2009-06-25 20:36:09 -04:00
Suchi Amalapurapu
c984329d30 Invoke getSystem.updateConfiguration when binding an application to
update config changes in Resources.mSystem
Since Resources is preloaded in the zygote, system resources in Resources
need to be updated with config changes every time an application is started
2009-06-25 11:43:53 -07:00
Android (Google) Code Review
83b8678dd4 Merge change 5319 into donut
* changes:
  Add new APIs to LauncherActivity to be used elsewhere.
2009-06-24 20:29:21 -07:00
Dianne Hackborn
2bacbdfb51 Add new APIs to LauncherActivity to be used elsewhere. 2009-06-24 19:03:15 -07:00
Dianne Hackborn
9c8dd55a9d Fix bug 1829561 ("am profile" with bad filename kills process).
The am command is now the one that takes care of opening the target file,
handling the opened file descriptor to the process that will be profiled.
This allows you to send profile data to anywhere the shell can access, and
avoids any problems coming up from the target process trying to open the
file.
2009-06-24 16:23:14 -07:00
Mike LeBeau
35df87c631 Fix the weird anchoring of the search dropdown when pivoting into an
app for search. (This started when we moved to system process, not sure
why then, but we should be getting the dropdown to update at this point
regardless.)
2009-06-24 13:06:39 -07:00
Mike LeBeau
6f8e592347 Move to a single dropdown background for the search dialog. This one
is full-screen width but has rounded corners on the bottom so it doesn't
look crappy if the list is not full-screen height. This was already
being used for in-app search, so I just got rid of the old global search
background and use the in-app one for everything.

By removing the lines in SearchDialog, I'm causing it to rely on the
value specified for the dropdown background in
frameworks/base/core/res/res/layout/search_bar.xml.
2009-06-24 09:56:16 -07:00
Bjorn Bringert
544450b4ee Fix NPE in SuggestionsAdapter when cursor is null.
Fixes http://b/issue?id=1940013
2009-06-24 15:16:30 +01:00
Bjorn Bringert
5f80605a0b Include user query in search intents
This change adds a new intent extra field USER_QUERY set in intents
launched by the search dialog. It contains the query as typed by
the user, unaffected by query jamming or search suggestions.

Fixes http://b/issue?id=1939592
2009-06-24 12:54:28 +01:00
Bjorn Bringert
b0ae27f4e1 Store correct state in SearchDialog.onSaveInstanceState()
Adds this to the instance state bundle:
- mStoredComponentName
- mStoredAppSearchData
- mPreviousComponents

All the UI selection fields that were previously saved were removed.
It's not necessarily useful to restore the
selection, and it's hard to get right. The old code was buggy
(see http://b/issue?id=1911660) and did not restore the
list selection because that's quite hard.

Fixes http://b/issue?id=1926174
2009-06-23 13:47:31 +01:00
Android (Google) Code Review
54f156c7c4 Merge change 5006 into donut
* changes:
  Pass the originating app's versionCode along with a restore set
2009-06-22 16:47:06 -07:00
Christopher Tate
5cbbf5652a Pass the originating app's versionCode along with a restore set
This change amends the doRestore() / onRestore() interface to backup agents to
provide the integer android:versionCode of the app that stored the backup set.
This should help agents figure out how to handle whatever historical data set
they're handed at restore time.
2009-06-22 16:44:51 -07:00
Satish Sampath
662df0b963 Launch user-entered URLs directly without a web search.
This is to fix bug http://b/issue?id=1931983

Instead of changing the keyboard button from search to carriage return,
I have changed it from search to 'Go' which I find more useful since
it indicates that the user can now go to that URL.
2009-06-22 23:40:10 +01:00
Joe Onorato
06290a4bb9 Helper API cleanup. Allows multiple helpers to function,
because they'll always go in the same order, and this lets
us not have to write headers to keep them paired.
2009-06-22 13:02:24 -07:00
Bjorn Bringert
8d15382378 Make all static methods in SearchManager non-static.
They were only static because of a now removed restriction that
only activity contexts could instantiate SearchManager.
This only changes hidden APIs, but all users of the changed methods
must be updated to use them non-statically before this is submitted.
2009-06-22 13:51:48 +01:00
Bjorn Bringert
97325db856 Add non-static version of SearchManager.getSuggestions(). 2009-06-22 13:51:35 +01:00
Bjorn Bringert
a68ca641e6 Remove checks for Activity Context when creating SearchManager
Since https://android-git.corp.google.com/g/3880
all activities create a SearchManager object, to handle
saving and restoring the search dialog. This broke
ActivityUnitTestCase, since ApplicationContext.getSearchManager()
threw an exception in non-activity contexts.
This change removes the activity context check from
getSearchManager(). Since SearchManager is now just a thin
wrapper for SearchManagerService, there shouldn't be anything
activity-specific in it.

Fixes http://b/issue?id=1926254
2009-06-22 10:05:48 +01:00
Android (Google) Code Review
b4e456bf18 Merge change 4785 into donut
* changes:
  Fix issue #1753079: running instrumentation in shared processes.
2009-06-19 14:24:39 -07:00
Android (Google) Code Review
4d1b5bd148 Merge change 4808 into donut
* changes:
  Fixes #1928566. Prevents runtime restart upon configuration change.
2009-06-19 13:31:14 -07:00
Romain Guy
e35c235145 Fixes #1928566. Prevents runtime restart upon configuration change.
Managed dialogs could cause dispatchOnCreate() to be called twice, which
would cause an exception.
2009-06-19 13:18:12 -07:00
Dianne Hackborn
d97c7adfc2 Fix issue #1753079: running instrumentation in shared processes.
The check for allowing the start of an activity was broken, it was
comparing the process of that activity's application vs. the current
instrumentation target package name.  Okay it was utterly insane.

Now this check is that the target activity will be running in the
same process as the instrumentation, which is really what we want.
2009-06-19 11:37:35 -07:00
Suchi Amalapurapu
bc806f65ed Remove deprecated api. Aptly rename freeStorageWithIntent to freeStorage. 2009-06-19 10:25:37 -07:00
Android (Google) Code Review
63e7155c7d Merge change 4696 into donut
* changes:
  Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.
2009-06-18 19:33:33 -07:00
Dianne Hackborn
5c1e00b14d Fix targetSdkVersion, make resize mode a flag, delayed dexopt, easy ApplicationInfo.
- Fix a bug where targetSdkVersion could not be set if minSdkVersion.  Stupid, stupid.
  Also make sure to fail if minSdkVersion is for a code name.  Really stupid.

- Change the API for resize compatibility mode to be a bit in the flags field, instead
  of a separate boolean.

- Implement delayed dexopting, to avoid the looong full dexopt during boot.  This is
  only enabled for "eng" builds.  When in this mode, the activity manager will make
  sure that a dexopt has been done before loading an .apk into a process, and will
  try to avoid displaying ANRs if they are due to the dexopt causing some operation
  to take longer than it normally would (though I make no guarantees about this
  totally working).

- Add API to Context to get the ApplicationInfo for its package, for easy access to
  things like targetSdkVersion.
2009-06-18 17:10:57 -07:00
Mike LeBeau
cce7dbc31e Re-enable query jamming. 2009-06-18 10:52:31 -07:00
Dianne Hackborn
c14b9ccdf1 Extend Intent/Uri conversion for use by Browser
This introduces a new Uri form of Intent with an "intent:" scheme, and a
corresponding update to the parser to handle these, so that the browser
can use this generic facility for starting activities based on the links
that are clicked and allow for web pages to link to arbitrary intents.

There is also a new "package" field on Intent which allows you to limit
the components it finds to a given package.  This replaces the new method
that was added to PackageManger for doing this when resolving activities,
and implements it for all Intent queries against the package manager.
2009-06-17 21:48:14 -07:00
Joe Onorato
83248c432f backup fixes:
- BackupTestAgent calls the DispatchHelper
- Make BackupAgent.onRestore take a BackupDataInput, not just a
  generic ParcelFileDescriptor.
2009-06-17 17:57:30 -07:00
Romain Guy
764d5331d1 Fixes #1924909. When restoring managed dialogs, do exactly the same thing as when showing a dialog. 2009-06-17 17:04:09 -07:00
Jacek Surazski
f829a78f6c add exception message to ApplicationErrorReport
useful signal for clustering
2009-06-17 21:48:17 +02:00
Suchi Amalapurapu
1ccac75e1f Remove circular dependency in PackageManager. api freeStorage uses PendingIntent from android.app
Create a new public IntentSender class that can be used by PackageManager instead.
This new class uses IIntentSender internally and can only be created by PendingIntent for now.
Provide a new getIntentSender api in PendingIntent to create an instance of this class.
Move IIntentSender and IIntentReceiver from android.app to android.content
Change imports of IIntentSender and IIntentReceiver to reflect the new package name
The PackageManager api has been named as freeStorageWithIntent and will be renamed as freeStorage
once the older api(which has been deprecated) will be removed shortly.
2009-06-17 11:31:26 -07:00
Satish Sampath
bf23fe062a Prepare SearchManager framework for adding Genie logging.
- Instead of passing the suggest provider component name as the field
  EXTRA_DATA, we now pass via the field COMPONENT_NAME
- Kept EXTRA_DATA field as is so we can use it for real extra data.
2009-06-17 13:33:12 +01:00
Android (Google) Code Review
528a29f886 Merge change 4326 into donut
* changes:
  Don't get location in search dialog.
2009-06-17 00:58:19 -07:00
Mitsuru Oshima
d9aef73f72 Squashed commit of the following:
commit 9798cd23605c96c1d6a29202f4d31f5454079b61
Author: Mitsuru Oshima <oshima@google.com>
Date:   Tue Jun 16 13:50:44 2009 -0700

    Made other toShortString in performDestroyActivity safe.

commit 19bf973df81d9d01210effb39c99e5236f2229c1
Author: Mitsuru Oshima <oshima@google.com>
Date:   Fri Jun 12 15:50:03 2009 -0700

    * component can be null after destory?
     This was causing NPE in catch block, which hides the actual exception.

Conflicts:

	core/java/android/app/ActivityThread.java
2009-06-16 20:22:12 -07:00
Android (Google) Code Review
5633034f79 Merge change 4115 into donut
* changes:
  * component can be null after destory?  This was causing NPE in catch block, which hides the actual exception.
2009-06-16 13:14:09 -07:00
Bjorn Bringert
6d3d9892c2 Don't get location in search dialog.
This change removes all location code from the
system search dialog. The code was out of sync with
the EnhancedGoogleSearchprovider, and was possibly
responsible for some network location provider
crashes.

Instead we will try to make EnhancedGoogleSearch persistent, so that
it has a reasonable location most of the time.
2009-06-16 14:50:20 +01:00