Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ab7ecd7 authored by Matthew Fritze's avatar Matthew Fritze
Browse files

Prevent crash when rotating screen in Settings Search

Change-Id: If8134a1e96f791aacedf2e907272cee33dfc85fe
Fix: 34690393
Test: make RunSettingsRoboTests
parent a1bae0ad
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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<List<SearchResult>> {
     * @return the cleaned query string
     */
    private static String cleanQuery(String query) {
        if (TextUtils.isEmpty(query)) {
            return null;
        }
        return query.trim();
    }

+26 −0
Original line number Diff line number Diff line
@@ -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<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
    public void queryTextChange_shouldTriggerLoader() {
        final String testQuery = "test";