summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJin Cao <jinyan@google.com>2014-10-06 11:40:16 -0700
committerJin Cao <jinyan@google.com>2014-10-06 13:57:50 -0700
commit39e56eabea3938935fb0e9b8f087d6ba950ddf9d (patch)
treeb51a706e22d3d4f89b117cf00201afd513677c95 /src
parent8dc449cf36bb9c93b0b10f91f58be67dc950fe6b (diff)
downloadandroid_packages_apps_UnifiedEmail-39e56eabea3938935fb0e9b8f087d6ba950ddf9d.tar.gz
android_packages_apps_UnifiedEmail-39e56eabea3938935fb0e9b8f087d6ba950ddf9d.tar.bz2
android_packages_apps_UnifiedEmail-39e56eabea3938935fb0e9b8f087d6ba950ddf9d.zip
Don't assume that we'll close our db after saveRecentQuery
Also check for the case where we try to create a mergecursor with empty array. b/17879155 Change-Id: I0e5339248ba04d1ed6fc1734ab11e129a06e2290
Diffstat (limited to 'src')
-rw-r--r--src/com/android/mail/providers/SuggestionsProvider.java7
-rw-r--r--src/com/android/mail/ui/MaterialSearchViewController.java15
2 files changed, 14 insertions, 8 deletions
diff --git a/src/com/android/mail/providers/SuggestionsProvider.java b/src/com/android/mail/providers/SuggestionsProvider.java
index 519082200..4492daa7a 100644
--- a/src/com/android/mail/providers/SuggestionsProvider.java
+++ b/src/com/android/mail/providers/SuggestionsProvider.java
@@ -64,7 +64,7 @@ public class SuggestionsProvider extends SearchRecentSuggestionsProvider {
@Override
public Cursor query(String query) {
- MergeCursor mergeCursor = null;
+ Cursor mergeCursor = null;
synchronized (mTermsLock) {
mFullQueryTerms = null;
@@ -101,7 +101,10 @@ public class SuggestionsProvider extends SearchRecentSuggestionsProvider {
if (query.length() >= MIN_QUERY_LENGTH_FOR_CONTACTS) {
cursors.add(new ContactsCursor().query(query));
}
- mergeCursor = new MergeCursor(cursors.toArray(new Cursor[cursors.size()]));
+
+ if (cursors.size() > 0) {
+ mergeCursor = new MergeCursor(cursors.toArray(new Cursor[cursors.size()]));
+ }
}
return mergeCursor;
}
diff --git a/src/com/android/mail/ui/MaterialSearchViewController.java b/src/com/android/mail/ui/MaterialSearchViewController.java
index 0dd6a7aff..ca54d242e 100644
--- a/src/com/android/mail/ui/MaterialSearchViewController.java
+++ b/src/com/android/mail/ui/MaterialSearchViewController.java
@@ -62,7 +62,8 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener
private int mControllerState;
private int mEndXCoordForTabletLandscape;
- private boolean mWaitToDestroyProvider;
+ private boolean mSavePending;
+ private boolean mDestroyProvider;
public MaterialSearchViewController(MailActivity activity, ActivityController controller,
Intent intent, Bundle savedInstanceState) {
@@ -93,7 +94,8 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener
* This controller should not be used after this is called.
*/
public void onDestroy() {
- if (!mWaitToDestroyProvider) {
+ mDestroyProvider = mSavePending;
+ if (!mSavePending) {
mSuggestionsProvider.cleanup();
}
mActivity.getViewMode().removeListener(this);
@@ -232,11 +234,11 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener
}
// static asynctask to save the query in the background.
- class SaveRecentQueryTask extends AsyncTask<String, Void, Void> {
+ private class SaveRecentQueryTask extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
- mWaitToDestroyProvider = true;
+ mSavePending = true;
}
@Override
@@ -247,10 +249,11 @@ public class MaterialSearchViewController implements ViewMode.ModeChangeListener
@Override
protected void onPostExecute(Void aVoid) {
- if (mWaitToDestroyProvider) {
+ if (mDestroyProvider) {
mSuggestionsProvider.cleanup();
- mWaitToDestroyProvider = false;
+ mDestroyProvider = false;
}
+ mSavePending = false;
}
}
}