OSDN Git Service

Trim search query when initializing installed app searcher.
authorFan Zhang <zhfan@google.com>
Tue, 27 Jun 2017 19:47:06 +0000 (12:47 -0700)
committerFan Zhang <zhfan@google.com>
Tue, 27 Jun 2017 19:48:54 +0000 (19:48 +0000)
Change-Id: I502185d4b497b2edac32e4a8368be76d13b68259
Fix: 62885439
Test: make RunSettingsRoboTests

src/com/android/settings/search/DatabaseResultLoader.java
src/com/android/settings/search/InstalledAppResultLoader.java
src/com/android/settings/search/SearchFeatureProviderImpl.java
tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java
tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java

index 26bfd52..73b383b 100644 (file)
@@ -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);
     }
 
@@ -137,18 +138,6 @@ public class DatabaseResultLoader extends AsyncLoader<Set<? extends SearchResult
     }
 
     /**
-     * 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.
      *
      * @param matchColumns The columns to match on
index 70a39ee..6340a61 100644 (file)
@@ -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<>();
index 99771db..e3a37e9 100644 (file)
 
 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();
+    }
 }
index ad89bfe..90f6e87 100644 (file)
@@ -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);
index 26d9510..30ffaf8 100644 (file)
@@ -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());
+    }
+
 }