diff --git a/src/com/android/settings/search2/DatabaseResultLoader.java b/src/com/android/settings/search2/DatabaseResultLoader.java index 0bbded29513..8bb1a416302 100644 --- a/src/com/android/settings/search2/DatabaseResultLoader.java +++ b/src/com/android/settings/search2/DatabaseResultLoader.java @@ -20,6 +20,7 @@ import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.text.TextUtils; import com.android.settings.dashboard.SiteMapManager; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.IndexDatabaseHelper; @@ -162,6 +163,9 @@ public class DatabaseResultLoader extends AsyncLoader> { * @return the cleaned query string */ private static String cleanQuery(String query) { + if (TextUtils.isEmpty(query)) { + return null; + } return query.trim(); } diff --git a/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java b/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java index 7a0bb5471f5..2d4ac54d64d 100644 --- a/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java +++ b/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java @@ -17,6 +17,7 @@ package com.android.settings.search2; import android.content.Context; +import android.content.Loader; import android.os.Bundle; import com.android.internal.logging.nano.MetricsProto; @@ -35,6 +36,9 @@ import org.robolectric.Robolectric; import org.robolectric.annotation.Config; import org.robolectric.util.ActivityController; +import java.util.List; + +import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; @@ -96,6 +100,28 @@ public class SearchFragmentTest { .getInstalledAppSearchLoader(any(Context.class), anyString()); } + @Test + public void screenRotateEmptyString_ShouldNotCrash() { + final Bundle bundle = new Bundle(); + ActivityController activityController = + Robolectric.buildActivity(SearchActivity.class); + activityController.setup(); + SearchFragment fragment = (SearchFragment) activityController.get().getFragmentManager() + .findFragmentById(R.id.main_content); + + fragment.mQuery = ""; + + activityController.saveInstanceState(bundle).pause().stop().destroy(); + + activityController = Robolectric.buildActivity(SearchActivity.class); + activityController.setup(bundle); + + verify(mFeatureFactory.searchFeatureProvider) + .getDatabaseSearchLoader(any(Context.class), anyString()); + verify(mFeatureFactory.searchFeatureProvider) + .getInstalledAppSearchLoader(any(Context.class), anyString()); + } + @Test public void queryTextChange_shouldTriggerLoader() { final String testQuery = "test";