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;
*/
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;
super(context);
mSiteMapManager = mapManager;
mContext = context;
- mQueryText = cleanQuery(queryText);
+ mQueryText = queryText;
mConverter = new CursorToSearchResultConverter(context);
}
}
/**
- * 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
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;
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<>();
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;
@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
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();
+ }
}
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;
}
@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);
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;
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)
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());
+ }
+
}