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

Commit b4e68740 authored by Fan Zhang's avatar Fan Zhang Committed by android-build-merger
Browse files

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

am: a2c3828e

Change-Id: I169e01d0fbcbe5fa85710daec366e6025e890098
parents cdcceec0 a2c3828e
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());
    }

}