Prevent crash when rotating screen in Settings Search
Change-Id: If8134a1e96f791aacedf2e907272cee33dfc85fe Fix: 34690393 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -20,6 +20,7 @@ import android.content.Context;
|
|||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
import com.android.settings.dashboard.SiteMapManager;
|
import com.android.settings.dashboard.SiteMapManager;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.IndexDatabaseHelper;
|
import com.android.settings.search.IndexDatabaseHelper;
|
||||||
@@ -162,6 +163,9 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> {
|
|||||||
* @return the cleaned query string
|
* @return the cleaned query string
|
||||||
*/
|
*/
|
||||||
private static String cleanQuery(String query) {
|
private static String cleanQuery(String query) {
|
||||||
|
if (TextUtils.isEmpty(query)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return query.trim();
|
return query.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.search2;
|
package com.android.settings.search2;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Loader;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
@@ -35,6 +36,9 @@ import org.robolectric.Robolectric;
|
|||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.util.ActivityController;
|
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.any;
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Matchers.eq;
|
import static org.mockito.Matchers.eq;
|
||||||
@@ -96,6 +100,28 @@ public class SearchFragmentTest {
|
|||||||
.getInstalledAppSearchLoader(any(Context.class), anyString());
|
.getInstalledAppSearchLoader(any(Context.class), anyString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void screenRotateEmptyString_ShouldNotCrash() {
|
||||||
|
final Bundle bundle = new Bundle();
|
||||||
|
ActivityController<SearchActivity> 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
|
@Test
|
||||||
public void queryTextChange_shouldTriggerLoader() {
|
public void queryTextChange_shouldTriggerLoader() {
|
||||||
final String testQuery = "test";
|
final String testQuery = "test";
|
||||||
|
Reference in New Issue
Block a user