Merge "Fix crash when activity not attached after search index finishes." into oc-dev
am: d3e33ebcef
Change-Id: Idc21289911d064e676f86bae72bdc188eb07f260
diff --git a/src/com/android/settings/search2/SearchFragment.java b/src/com/android/settings/search2/SearchFragment.java
index 5ee22b5..2a5c961 100644
--- a/src/com/android/settings/search2/SearchFragment.java
+++ b/src/com/android/settings/search2/SearchFragment.java
@@ -291,6 +291,9 @@
*/
@Override
public void onIndexingFinished() {
+ if (getActivity() == null) {
+ return;
+ }
if (mShowingSavedQuery) {
mSavedQueryController.loadSavedQueries();
} else {
diff --git a/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java b/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java
index 2296370..2e91ec6 100644
--- a/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/search2/SearchFragmentTest.java
@@ -349,4 +349,21 @@
verify(fragment.mSavedQueryController).loadSavedQueries();
}
+
+ @Test
+ public void onIndexingFinished_noActivity_shouldNotCrash() {
+ ActivityController<SearchActivity> activityController =
+ Robolectric.buildActivity(SearchActivity.class);
+ activityController.setup();
+ SearchFragment fragment = (SearchFragment) spy(activityController.get().getFragmentManager()
+ .findFragmentById(R.id.main_content));
+ when(mFeatureFactory.searchFeatureProvider.isIndexingComplete(any(Context.class)))
+ .thenReturn(true);
+ fragment.mQuery = "bright";
+ ReflectionHelpers.setField(fragment, "mLoaderManager", null);
+ ReflectionHelpers.setField(fragment, "mHost", null);
+
+ fragment.onIndexingFinished();
+ // no crash
+ }
}