Merge "Trim search query when initializing installed app searcher." into oc-dr1-dev
am: a2c3828ede
Change-Id: I169e01d0fbcbe5fa85710daec366e6025e890098
This commit is contained in:
@@ -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.
|
||||||
*
|
*
|
||||||
|
@@ -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<>();
|
||||||
|
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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");
|
||||||
|
@@ -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());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user