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

Commit a2c3828e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Trim search query when initializing installed app searcher." into oc-dr1-dev

parents 1b44a879 fbcf4e6e
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ package com.android.settings.search;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.VisibleForTesting;

import android.text.TextUtils;
import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.utils.AsyncLoader;

@@ -97,7 +97,8 @@ public class DatabaseResultLoader extends AsyncLoader<Set<? extends SearchResult
     */
    public static final int[] BASE_RANKS = {1, 3, 7, 9};

    private final String mQueryText;
    @VisibleForTesting
    final String mQueryText;
    private final Context mContext;
    private final CursorToSearchResultConverter mConverter;
    private final SiteMapManager mSiteMapManager;
@@ -106,7 +107,7 @@ public class DatabaseResultLoader extends AsyncLoader<Set<? extends SearchResult
        super(context);
        mSiteMapManager = mapManager;
        mContext = context;
        mQueryText = cleanQuery(queryText);
        mQueryText = queryText;
        mConverter = new CursorToSearchResultConverter(context);
    }

@@ -136,18 +137,6 @@ public class DatabaseResultLoader extends AsyncLoader<Set<? extends SearchResult
        return super.onCancelLoad();
    }

    /**
     * A generic method to make the query suitable for searching the database.
     *
     * @return the cleaned query string
     */
    private static String cleanQuery(String query) {
        if (TextUtils.isEmpty(query)) {
            return null;
        }
        return query.trim();
    }

    /**
     * Creates and executes the query which matches prefixes of the first word of the given columns.
     *
+3 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.net.Uri;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;

import com.android.internal.logging.nano.MetricsProto;
@@ -54,7 +55,8 @@ public class InstalledAppResultLoader extends AsyncLoader<Set<? extends SearchRe

    private List<String> mBreadcrumb;
    private SiteMapManager mSiteMapManager;
    private final String mQuery;
    @VisibleForTesting
    final String mQuery;
    private final UserManager mUserManager;
    private final PackageManagerWrapper mPackageManager;
    private final List<ResolveInfo> mHomeActivities = new ArrayList<>();
+16 −8
Original line number Diff line number Diff line
@@ -17,14 +17,10 @@

package com.android.settings.search;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.android.settings.R;
import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.dashboard.SiteMapManager;

@@ -45,14 +41,14 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {

    @Override
    public DatabaseResultLoader getDatabaseSearchLoader(Context context, String query) {
        return new DatabaseResultLoader(context, query, getSiteMapManager());
        return new DatabaseResultLoader(context, cleanQuery(query), getSiteMapManager());
    }

    @Override
    public InstalledAppResultLoader getInstalledAppSearchLoader(Context context, String query) {
        return new InstalledAppResultLoader(
                context, new PackageManagerWrapperImpl(context.getPackageManager()), query,
                getSiteMapManager());
                context, new PackageManagerWrapperImpl(context.getPackageManager()),
                cleanQuery(query), getSiteMapManager());
    }

    @Override
@@ -88,4 +84,16 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
        Log.d(TAG, "IndexDatabase() took " +
                (System.currentTimeMillis() - indexStartTime) + " ms");
    }

    /**
     * A generic method to make the query suitable for searching the database.
     *
     * @return the cleaned query string
     */
    private String cleanQuery(String query) {
        if (TextUtils.isEmpty(query)) {
            return null;
        }
        return query.trim();
    }
}
+1 −9
Original line number Diff line number Diff line
@@ -22,11 +22,11 @@ import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;

import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.After;
import org.junit.Before;
@@ -114,14 +114,6 @@ public class DatabaseResultLoaderTest {
        assertThat(loader.loadInBackground().size()).isEqualTo(1);
    }

    @Test
    public void testSpecialCaseSpace_matches() {
        insertSpecialCase("space");
        DatabaseResultLoader loader = new DatabaseResultLoader(mContext, " space ",
                mSiteMapManager);
        assertThat(loader.loadInBackground().size()).isEqualTo(1);
    }

    @Test
    public void testSpecialCaseDash_matchesWordNoDash() {
        insertSpecialCase("wi-fi calling");
+19 −5
Original line number Diff line number Diff line
@@ -20,9 +20,9 @@ package com.android.settings.search;
import android.app.Activity;
import android.view.Menu;

import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.Before;
import org.junit.Test;
@@ -33,11 +33,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;


import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.verify;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -62,4 +58,22 @@ public class SearchFeatureProviderImplTest {

        assertThat(manager1).isSameAs(manager2);
    }

    @Test
    public void getDatabaseSearchLoader_shouldCleanupQuery() {
        final String query = "  space ";
        final DatabaseResultLoader loader = mProvider.getDatabaseSearchLoader(mActivity, query);

        assertThat(loader.mQueryText).isEqualTo(query.trim());
    }

    @Test
    public void getInstalledAppSearchLoader_shouldCleanupQuery() {
        final String query = "  space ";
        final InstalledAppResultLoader loader =
                mProvider.getInstalledAppSearchLoader(mActivity, query);

        assertThat(loader.mQuery).isEqualTo(query.trim());
    }

}