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

am: a2c3828ede

Change-Id: I169e01d0fbcbe5fa85710daec366e6025e890098
This commit is contained in:
Fan Zhang
2017-06-28 00:31:42 +00:00
committed by android-build-merger
5 changed files with 43 additions and 38 deletions

View File

@@ -20,8 +20,8 @@ package com.android.settings.search;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import com.android.settings.dashboard.SiteMapManager; import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.utils.AsyncLoader; 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}; public static final int[] BASE_RANKS = {1, 3, 7, 9};
private final String mQueryText; @VisibleForTesting
final String mQueryText;
private final Context mContext; private final Context mContext;
private final CursorToSearchResultConverter mConverter; private final CursorToSearchResultConverter mConverter;
private final SiteMapManager mSiteMapManager; private final SiteMapManager mSiteMapManager;
@@ -106,7 +107,7 @@ public class DatabaseResultLoader extends AsyncLoader<Set<? extends SearchResult
super(context); super(context);
mSiteMapManager = mapManager; mSiteMapManager = mapManager;
mContext = context; mContext = context;
mQueryText = cleanQuery(queryText); mQueryText = queryText;
mConverter = new CursorToSearchResultConverter(context); mConverter = new CursorToSearchResultConverter(context);
} }
@@ -136,18 +137,6 @@ public class DatabaseResultLoader extends AsyncLoader<Set<? extends SearchResult
return super.onCancelLoad(); 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. * Creates and executes the query which matches prefixes of the first word of the given columns.
* *

View File

@@ -27,6 +27,7 @@ import android.net.Uri;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
@@ -54,7 +55,8 @@ public class InstalledAppResultLoader extends AsyncLoader<Set<? extends SearchRe
private List<String> mBreadcrumb; private List<String> mBreadcrumb;
private SiteMapManager mSiteMapManager; private SiteMapManager mSiteMapManager;
private final String mQuery; @VisibleForTesting
final String mQuery;
private final UserManager mUserManager; private final UserManager mUserManager;
private final PackageManagerWrapper mPackageManager; private final PackageManagerWrapper mPackageManager;
private final List<ResolveInfo> mHomeActivities = new ArrayList<>(); private final List<ResolveInfo> mHomeActivities = new ArrayList<>();

View File

@@ -17,14 +17,10 @@
package com.android.settings.search; package com.android.settings.search;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.text.TextUtils;
import android.util.Log; 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.applications.PackageManagerWrapperImpl;
import com.android.settings.dashboard.SiteMapManager; import com.android.settings.dashboard.SiteMapManager;
@@ -45,14 +41,14 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
@Override @Override
public DatabaseResultLoader getDatabaseSearchLoader(Context context, String query) { public DatabaseResultLoader getDatabaseSearchLoader(Context context, String query) {
return new DatabaseResultLoader(context, query, getSiteMapManager()); return new DatabaseResultLoader(context, cleanQuery(query), getSiteMapManager());
} }
@Override @Override
public InstalledAppResultLoader getInstalledAppSearchLoader(Context context, String query) { public InstalledAppResultLoader getInstalledAppSearchLoader(Context context, String query) {
return new InstalledAppResultLoader( return new InstalledAppResultLoader(
context, new PackageManagerWrapperImpl(context.getPackageManager()), query, context, new PackageManagerWrapperImpl(context.getPackageManager()),
getSiteMapManager()); cleanQuery(query), getSiteMapManager());
} }
@Override @Override
@@ -88,4 +84,16 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
Log.d(TAG, "IndexDatabase() took " + Log.d(TAG, "IndexDatabase() took " +
(System.currentTimeMillis() - indexStartTime) + " ms"); (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();
}
} }

View File

@@ -22,11 +22,11 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.dashboard.SiteMapManager; import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
@@ -114,14 +114,6 @@ public class DatabaseResultLoaderTest {
assertThat(loader.loadInBackground().size()).isEqualTo(1); 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 @Test
public void testSpecialCaseDash_matchesWordNoDash() { public void testSpecialCaseDash_matchesWordNoDash() {
insertSpecialCase("wi-fi calling"); insertSpecialCase("wi-fi calling");

View File

@@ -20,9 +20,9 @@ package com.android.settings.search;
import android.app.Activity; import android.app.Activity;
import android.view.Menu; import android.view.Menu;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.dashboard.SiteMapManager; import com.android.settings.dashboard.SiteMapManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -33,11 +33,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import static com.google.common.truth.Truth.assertThat; 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) @RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -62,4 +58,22 @@ public class SearchFeatureProviderImplTest {
assertThat(manager1).isSameAs(manager2); 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());
}
} }