From: Fan Zhang Date: Tue, 27 Jun 2017 19:47:06 +0000 (-0700) Subject: Trim search query when initializing installed app searcher. X-Git-Tag: android-x86-8.1-r1~72^2~6^2~137^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fbcf4e6e14d090aaced06d3f8708d6e9df1962ba;p=android-x86%2Fpackages-apps-Settings.git Trim search query when initializing installed app searcher. Change-Id: I502185d4b497b2edac32e4a8368be76d13b68259 Fix: 62885439 Test: make RunSettingsRoboTests --- diff --git a/src/com/android/settings/search/DatabaseResultLoader.java b/src/com/android/settings/search/DatabaseResultLoader.java index 26bfd52716..73b383ba7b 100644 --- a/src/com/android/settings/search/DatabaseResultLoader.java +++ b/src/com/android/settings/search/DatabaseResultLoader.java @@ -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 mBreadcrumb; private SiteMapManager mSiteMapManager; - private final String mQuery; + @VisibleForTesting + final String mQuery; private final UserManager mUserManager; private final PackageManagerWrapper mPackageManager; private final List mHomeActivities = new ArrayList<>(); diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java index 99771db8d5..e3a37e9649 100644 --- a/src/com/android/settings/search/SearchFeatureProviderImpl.java +++ b/src/com/android/settings/search/SearchFeatureProviderImpl.java @@ -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(); + } } diff --git a/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java b/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java index ad89bfea39..90f6e87907 100644 --- a/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java +++ b/tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java @@ -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; @@ -115,14 +115,6 @@ public class DatabaseResultLoaderTest { } @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"); DatabaseResultLoader loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager); diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java index 26d951073b..30ffaf8b3e 100644 --- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java @@ -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()); + } + }