From 74706b6ed1ba82f992478852f63c8aa8bca4c47a Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 18 Jan 2018 13:07:49 -0800 Subject: [PATCH] Remove more things from search v1 Test: robotests Change-Id: Ide54d1cec69ae3a6782a979d3eeb7f3fc44f09b3 --- .../settings/dashboard/SiteMapManager.java | 205 ------------------ .../search/CursorToSearchResultConverter.java | 28 +-- .../search/DatabaseIndexingManager.java | 62 +----- .../settings/search/IndexingCallback.java | 12 - .../search/SearchFeatureProvider.java | 18 -- .../search/SearchFeatureProviderImpl.java | 25 --- .../CursorToSearchResultConverterTest.java | 113 +++------- .../search/DatabaseIndexingManagerTest.java | 55 ----- .../search/SearchFeatureProviderImplTest.java | 9 - 9 files changed, 39 insertions(+), 488 deletions(-) delete mode 100644 src/com/android/settings/dashboard/SiteMapManager.java delete mode 100644 src/com/android/settings/search/IndexingCallback.java diff --git a/src/com/android/settings/dashboard/SiteMapManager.java b/src/com/android/settings/dashboard/SiteMapManager.java deleted file mode 100644 index b54e06114b0..00000000000 --- a/src/com/android/settings/dashboard/SiteMapManager.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.dashboard; - -import static android.provider.SearchIndexablesContract.SITE_MAP_COLUMNS; -import static com.android.settings.dashboard.DashboardFragmentRegistry.CATEGORY_KEY_TO_PARENT_MAP; - -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.provider.SearchIndexablesContract.SiteMapColumns; -import android.support.annotation.VisibleForTesting; -import android.support.annotation.WorkerThread; -import android.support.v4.util.ArrayMap; -import android.text.TextUtils; -import android.util.Log; - -import com.android.settings.SettingsActivity; -import com.android.settings.overlay.FeatureFactory; -import com.android.settings.search.IndexDatabaseHelper; -import com.android.settings.search.IndexDatabaseHelper.IndexColumns; -import com.android.settingslib.drawer.DashboardCategory; -import com.android.settingslib.drawer.Tile; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * A manager class that maintains a "site map" and look up breadcrumb for a certain page on demand. - *

- * The methods on this class can only be called on a background thread. - */ -public class SiteMapManager { - - private static final String TAG = "SiteMapManager"; - private static final boolean DEBUG_TIMING = false; - - private static final String[] CLASS_TO_SCREEN_TITLE_COLUMNS = { - IndexColumns.CLASS_NAME, - IndexColumns.SCREEN_TITLE, - }; - - private final List mPairs = new ArrayList<>(); - - private boolean mInitialized; - - /** - * Given a fragment class name and its screen title, build a breadcrumb from Settings root to - * this screen. - *

- * Not all screens have a full breadcrumb path leading up to root, it's because either some - * page in the breadcrumb path is not indexed, or it's only reachable via search. - */ - @WorkerThread - public synchronized List buildBreadCrumb(Context context, String clazz, - String screenTitle) { - init(context); - final long startTime = System.currentTimeMillis(); - final List breadcrumbs = new ArrayList<>(); - if (!mInitialized) { - Log.w(TAG, "SiteMap is not initialized yet, skipping"); - return breadcrumbs; - } - breadcrumbs.add(screenTitle); - String currentClass = clazz; - String currentTitle = screenTitle; - // Look up current page's parent, if found add it to breadcrumb string list, and repeat. - while (true) { - final SiteMapPair pair = lookUpParent(currentClass, currentTitle); - if (pair == null) { - if (DEBUG_TIMING) { - Log.d(TAG, "BreadCrumb timing: " + (System.currentTimeMillis() - startTime)); - } - return breadcrumbs; - } - breadcrumbs.add(0, pair.parentTitle); - currentClass = pair.parentClass; - currentTitle = pair.parentTitle; - } - } - - /** - * Initialize a list of {@link SiteMapPair}s. Each pair knows about a single parent-child - * page relationship. - * - * We get the knowledge of such mPairs from 2 sources: - * 1. Static indexing time: we know which page(s) a parent can open by parsing its pref xml. - * 2. IA: We know from {@link DashboardFeatureProvider} which page can be dynamically - * injected to where. - */ - @VisibleForTesting - @WorkerThread - synchronized void init(Context context) { - if (mInitialized) { - // Make sure only init once. - return; - } - final long startTime = System.currentTimeMillis(); - // First load site map from static index table. - final Context appContext = context.getApplicationContext(); - final SQLiteDatabase db = IndexDatabaseHelper.getInstance(appContext).getReadableDatabase(); - Cursor sitemap = db.query(IndexDatabaseHelper.Tables.TABLE_SITE_MAP, SITE_MAP_COLUMNS, null, - null, null, null, null); - while (sitemap.moveToNext()) { - final SiteMapPair pair = new SiteMapPair( - sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.PARENT_CLASS)), - sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.PARENT_TITLE)), - sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.CHILD_CLASS)), - sitemap.getString(sitemap.getColumnIndex(SiteMapColumns.CHILD_TITLE))); - mPairs.add(pair); - } - sitemap.close(); - - // Then prepare a local map that contains class name -> screen title mapping. This is needed - // to figure out the display name for any fragment if it's injected dynamically through IA. - final Map classToTitleMap = new ArrayMap<>(); - final Cursor titleQuery = db.query(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, - CLASS_TO_SCREEN_TITLE_COLUMNS, null, null, null, null, null); - while (titleQuery.moveToNext()) { - classToTitleMap.put( - titleQuery.getString(titleQuery.getColumnIndex(IndexColumns.CLASS_NAME)), - titleQuery.getString(titleQuery.getColumnIndex(IndexColumns.SCREEN_TITLE))); - } - titleQuery.close(); - - // Loop through all IA categories and pages and build additional SiteMapPairs - List categories = FeatureFactory.getFactory(context) - .getDashboardFeatureProvider(context).getAllCategories(); - - for (DashboardCategory category : categories) { - // Find the category key first. - final String parentClass = CATEGORY_KEY_TO_PARENT_MAP.get(category.key); - if (parentClass == null) { - continue; - } - // Use the key to look up parent (which page hosts this key) - final String parentName = classToTitleMap.get(parentClass); - if (parentName == null) { - continue; - } - // Build parent-child mPairs for all children listed under this key. - for (Tile tile : category.getTiles()) { - final String childTitle = tile.title.toString(); - String childClass = null; - if (tile.metaData != null) { - childClass = tile.metaData.getString( - SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS); - } - if (childClass == null) { - continue; - } - mPairs.add(new SiteMapPair(parentClass, parentName, childClass, childTitle)); - } - } - // Done. - mInitialized = true; - if (DEBUG_TIMING) { - Log.d(TAG, "Init timing: " + (System.currentTimeMillis() - startTime)); - } - } - - @WorkerThread - private SiteMapPair lookUpParent(String clazz, String title) { - for (SiteMapPair pair : mPairs) { - if (TextUtils.equals(pair.childClass, clazz) - && TextUtils.equals(title, pair.childTitle)) { - return pair; - } - } - return null; - } - - /** - * Data model for a parent-child page pair. - */ - private static class SiteMapPair { - public final String parentClass; - public final String parentTitle; - public final String childClass; - public final String childTitle; - - public SiteMapPair(String parentClass, String parentTitle, String childClass, - String childTitle) { - this.parentClass = parentClass; - this.parentTitle = parentTitle; - this.childClass = childClass; - this.childTitle = childTitle; - } - } -} diff --git a/src/com/android/settings/search/CursorToSearchResultConverter.java b/src/com/android/settings/search/CursorToSearchResultConverter.java index 8528c56539e..8e5577d3235 100644 --- a/src/com/android/settings/search/CursorToSearchResultConverter.java +++ b/src/com/android/settings/search/CursorToSearchResultConverter.java @@ -17,6 +17,9 @@ package com.android.settings.search; +import static com.android.settings.search.DatabaseResultLoader.BASE_RANKS; +import static com.android.settings.search.SearchResult.TOP_RANK; + import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; @@ -26,18 +29,12 @@ import android.os.BadParcelableException; import android.text.TextUtils; import android.util.Log; -import com.android.settings.dashboard.SiteMapManager; - import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; -import static com.android.settings.search.DatabaseResultLoader.BASE_RANKS; -import static com.android.settings.search.SearchResult.TOP_RANK; - /** * Controller to Build search results from {@link Cursor} Objects. * @@ -94,8 +91,7 @@ public class CursorToSearchResultConverter { mContext = context; } - public Set convertCursor(SiteMapManager sitemapManager, - Cursor cursorResults, int baseRank) { + public Set convertCursor(Cursor cursorResults, int baseRank) { if (cursorResults == null) { return null; } @@ -103,8 +99,8 @@ public class CursorToSearchResultConverter { final Set results = new HashSet<>(); while (cursorResults.moveToNext()) { - SearchResult result = buildSingleSearchResultFromCursor(sitemapManager, - contextMap, cursorResults, baseRank); + SearchResult result = buildSingleSearchResultFromCursor(contextMap, cursorResults, + baseRank); if (result != null) { results.add(result); } @@ -132,8 +128,8 @@ public class CursorToSearchResultConverter { return null; } - private SearchResult buildSingleSearchResultFromCursor(SiteMapManager sitemapManager, - Map contextMap, Cursor cursor, int baseRank) { + private SearchResult buildSingleSearchResultFromCursor(Map contextMap, + Cursor cursor, int baseRank) { final int docId = cursor.getInt(COLUMN_INDEX_ID); final String pkgName = cursor.getString(COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE); final String title = cursor.getString(COLUMN_INDEX_TITLE); @@ -145,14 +141,12 @@ public class CursorToSearchResultConverter { final byte[] marshalledPayload = cursor.getBlob(COLUMN_INDEX_PAYLOAD); final ResultPayload payload = getUnmarshalledPayload(marshalledPayload, payloadType); - final List breadcrumbs = getBreadcrumbs(sitemapManager, cursor); final int rank = getRank(title, baseRank, key); final SearchResult.Builder builder = new SearchResult.Builder() .setStableId(docId) .setTitle(title) .setSummary(summaryOn) - .addBreadcrumbs(breadcrumbs) .setRank(rank) .setIcon(getIconForPackage(contextMap, pkgName, className, iconResStr)) .setPayload(payload); @@ -191,12 +185,6 @@ public class CursorToSearchResultConverter { return icon; } - private List getBreadcrumbs(SiteMapManager siteMapManager, Cursor cursor) { - final String screenTitle = cursor.getString(COLUMN_INDEX_SCREEN_TITLE); - final String screenClass = cursor.getString(COLUMN_INDEX_CLASS_NAME); - return siteMapManager == null ? null : siteMapManager.buildBreadCrumb(mContext, screenClass, - screenTitle); - } /** Uses the breadcrumbs to determine the offset to the base rank. * There are three checks diff --git a/src/com/android/settings/search/DatabaseIndexingManager.java b/src/com/android/settings/search/DatabaseIndexingManager.java index 0aeda6625d7..7b9a6356612 100644 --- a/src/com/android/settings/search/DatabaseIndexingManager.java +++ b/src/com/android/settings/search/DatabaseIndexingManager.java @@ -19,7 +19,8 @@ package com.android.settings.search; import static com.android.settings.search.CursorToSearchResultConverter.COLUMN_INDEX_ID; -import static com.android.settings.search.CursorToSearchResultConverter.COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE; +import static com.android.settings.search.CursorToSearchResultConverter + .COLUMN_INDEX_INTENT_ACTION_TARGET_PACKAGE; import static com.android.settings.search.CursorToSearchResultConverter.COLUMN_INDEX_KEY; import static com.android.settings.search.DatabaseResultLoader.SELECT_COLUMNS; import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.CLASS_NAME; @@ -27,7 +28,8 @@ import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_ import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS; import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_KEY_REF; import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON; -import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED; +import static com.android.settings.search.IndexDatabaseHelper.IndexColumns + .DATA_SUMMARY_ON_NORMALIZED; import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_TITLE; import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED; import static com.android.settings.search.IndexDatabaseHelper.IndexColumns.DOCID; @@ -50,7 +52,6 @@ import android.content.pm.ResolveInfo; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; -import android.os.AsyncTask; import android.os.Build; import android.provider.SearchIndexablesContract; import android.provider.SearchIndexablesContract.SiteMapColumns; @@ -58,7 +59,6 @@ import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; -import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.indexing.IndexData; import com.android.settings.search.indexing.IndexDataConverter; import com.android.settings.search.indexing.PreIndexData; @@ -68,7 +68,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; /** * Consumes the SearchIndexableProvider content providers. @@ -80,15 +79,6 @@ public class DatabaseIndexingManager { private static final String LOG_TAG = "DatabaseIndexingManager"; - private static final String METRICS_ACTION_SETTINGS_ASYNC_INDEX = - "search_asynchronous_indexing"; - - public static final String FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER = - "SEARCH_INDEX_DATA_PROVIDER"; - - @VisibleForTesting - final AtomicBoolean mIsIndexingComplete = new AtomicBoolean(false); - private PreIndexDataCollector mCollector; private IndexDataConverter mConverter; @@ -98,15 +88,6 @@ public class DatabaseIndexingManager { mContext = context; } - public boolean isIndexingComplete() { - return mIsIndexingComplete.get(); - } - - public void indexDatabase(IndexingCallback callback) { - IndexingTask task = new IndexingTask(callback); - task.execute(); - } - /** * Accumulate all data and non-indexable keys from each of the content-providers. * Only the first indexing for the default language gets static search results - subsequent @@ -363,39 +344,4 @@ public class DatabaseIndexingManager { return null; } } - - public class IndexingTask extends AsyncTask { - - @VisibleForTesting - IndexingCallback mCallback; - private long mIndexStartTime; - - public IndexingTask(IndexingCallback callback) { - mCallback = callback; - } - - @Override - protected void onPreExecute() { - mIndexStartTime = System.currentTimeMillis(); - mIsIndexingComplete.set(false); - } - - @Override - protected Void doInBackground(Void... voids) { - performIndexing(); - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - int indexingTime = (int) (System.currentTimeMillis() - mIndexStartTime); - FeatureFactory.getFactory(mContext).getMetricsFeatureProvider() - .histogram(mContext, METRICS_ACTION_SETTINGS_ASYNC_INDEX, indexingTime); - - mIsIndexingComplete.set(true); - if (mCallback != null) { - mCallback.onIndexingFinished(); - } - } - } } \ No newline at end of file diff --git a/src/com/android/settings/search/IndexingCallback.java b/src/com/android/settings/search/IndexingCallback.java deleted file mode 100644 index b4b6eabb393..00000000000 --- a/src/com/android/settings/search/IndexingCallback.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.android.settings.search; - -/** - * Callback for Settings search indexing. - */ -public interface IndexingCallback { - - /** - * Called when Indexing is finished. - */ - void onIndexingFinished(); -} diff --git a/src/com/android/settings/search/SearchFeatureProvider.java b/src/com/android/settings/search/SearchFeatureProvider.java index 76da18e4d73..878bbfd0c73 100644 --- a/src/com/android/settings/search/SearchFeatureProvider.java +++ b/src/com/android/settings/search/SearchFeatureProvider.java @@ -23,11 +23,8 @@ import android.content.Context; import android.content.Intent; import android.widget.Toolbar; -import com.android.settings.dashboard.SiteMapManager; import com.android.settings.overlay.FeatureFactory; -import java.util.concurrent.ExecutorService; - /** * FeatureProvider for Settings Search */ @@ -44,11 +41,6 @@ public interface SearchFeatureProvider { void verifyLaunchSearchResultPageCaller(Context context, @NonNull ComponentName caller) throws SecurityException, IllegalArgumentException; - /** - * Returns the manager for looking up breadcrumbs. - */ - SiteMapManager getSiteMapManager(); - /** * Synchronously updates the Settings database. */ @@ -56,16 +48,6 @@ public interface SearchFeatureProvider { DatabaseIndexingManager getIndexingManager(Context context); - /** - * @returns true when indexing is complete. - */ - boolean isIndexingComplete(Context context); - - /** - * @return a {@link ExecutorService} to be shared between search tasks. - */ - ExecutorService getExecutorService(); - default String getSettingsIntelligencePkgName() { return "com.android.settings.intelligence"; } diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java index d17c033e8b8..ccd4ff1f388 100644 --- a/src/com/android/settings/search/SearchFeatureProviderImpl.java +++ b/src/com/android/settings/search/SearchFeatureProviderImpl.java @@ -22,13 +22,10 @@ import android.content.Context; import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; -import com.android.settings.dashboard.SiteMapManager; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.indexing.IndexData; import java.util.Locale; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; /** * FeatureProvider for the refactored search code. @@ -39,8 +36,6 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider { private static final String METRICS_ACTION_SETTINGS_INDEX = "search_synchronous_indexing"; private DatabaseIndexingManager mDatabaseIndexingManager; - private SiteMapManager mSiteMapManager; - private ExecutorService mExecutorService; @Override public void verifyLaunchSearchResultPageCaller(Context context, ComponentName caller) { @@ -68,18 +63,6 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider { return mDatabaseIndexingManager; } - @Override - public boolean isIndexingComplete(Context context) { - return getIndexingManager(context).isIndexingComplete(); - } - - public SiteMapManager getSiteMapManager() { - if (mSiteMapManager == null) { - mSiteMapManager = new SiteMapManager(); - } - return mSiteMapManager; - } - @Override public void updateIndex(Context context) { long indexStartTime = System.currentTimeMillis(); @@ -89,14 +72,6 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider { .histogram(context, METRICS_ACTION_SETTINGS_INDEX, indexingTime); } - @Override - public ExecutorService getExecutorService() { - if (mExecutorService == null) { - mExecutorService = Executors.newCachedThreadPool(); - } - return mExecutorService; - } - protected boolean isSignatureWhitelisted(Context context, String callerPackage) { return false; } diff --git a/tests/robotests/src/com/android/settings/search/CursorToSearchResultConverterTest.java b/tests/robotests/src/com/android/settings/search/CursorToSearchResultConverterTest.java index cd62c15340f..a1cafc5db43 100644 --- a/tests/robotests/src/com/android/settings/search/CursorToSearchResultConverterTest.java +++ b/tests/robotests/src/com/android/settings/search/CursorToSearchResultConverterTest.java @@ -29,7 +29,6 @@ import android.graphics.drawable.Drawable; import com.android.settings.DisplaySettings; import com.android.settings.R; import com.android.settings.TestConfig; -import com.android.settings.dashboard.SiteMapManager; import com.android.settings.gestures.SwipeToNotificationSettings; import com.android.settings.search.ResultPayload.Availability; import com.android.settings.search.ResultPayload.PayloadType; @@ -40,8 +39,6 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; @@ -69,8 +66,6 @@ public class CursorToSearchResultConverterTest { sIntent = new Intent("com.android.settings"); } - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private SiteMapManager mSiteMapManager; private Drawable mDrawable; private CursorToSearchResultConverter mConverter; @@ -82,53 +77,12 @@ public class CursorToSearchResultConverterTest { mConverter = new CursorToSearchResultConverter(context); } - @Test - public void testParseNullResults_ReturnsNull() { - final Set results = mConverter.convertCursor( - mSiteMapManager, null, BASE_RANK); - assertThat(results).isNull(); - } - - @Test - public void testParseCursor_NotNull() { - final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor(), BASE_RANK); - assertThat(results).isNotNull(); - } - - @Test - public void testParseCursor_MatchesRank() { - final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor(), BASE_RANK); - for (SearchResult result : results) { - assertThat(result.rank).isEqualTo(BASE_RANK); - } - } - - @Test - public void testParseCursor_MatchesTitle() { - final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor(), BASE_RANK); - for (SearchResult result : results) { - assertThat(TITLES).contains(result.title); - } - } - - @Test - public void testParseCursor_MatchesSummary() { - final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor(), BASE_RANK); - for (SearchResult result : results) { - assertThat(result.summary).isEqualTo(SUMMARY); - } - } - @Test public void testParseCursor_MatchesIcon() { final MatrixCursor cursor = new MatrixCursor(DatabaseResultLoader.SELECT_COLUMNS); final byte[] payload = ResultPayloadUtils.marshall(new ResultPayload(sIntent)); final String BLANK = ""; - cursor.addRow(new Object[]{ + cursor.addRow(new Object[] { KEY.hashCode(), // Doc ID "Longer than 20 characters", // Title SUMMARY, // Summary on @@ -144,8 +98,7 @@ public class CursorToSearchResultConverterTest { payload // Payload }); - final Set results = mConverter.convertCursor( - mSiteMapManager, cursor, BASE_RANK); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { Drawable resultDrawable = result.icon; @@ -157,7 +110,7 @@ public class CursorToSearchResultConverterTest { @Test public void testParseCursor_NoIcon() { final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor("noIcon" /* key */, "" /* className */), BASE_RANK); + getDummyCursor("noIcon" /* key */, "" /* className */), BASE_RANK); for (SearchResult result : results) { assertThat(result.icon).isNull(); } @@ -165,8 +118,7 @@ public class CursorToSearchResultConverterTest { @Test public void testParseCursor_MatchesPayloadType() { - final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor(), BASE_RANK); + final Set results = mConverter.convertCursor(getDummyCursor(), BASE_RANK); ResultPayload payload; for (SearchResult result : results) { payload = result.payload; @@ -179,7 +131,7 @@ public class CursorToSearchResultConverterTest { final MatrixCursor cursor = new MatrixCursor(DatabaseResultLoader.SELECT_COLUMNS); final byte[] payload = ResultPayloadUtils.marshall(new ResultPayload(sIntent)); final String BLANK = ""; - cursor.addRow(new Object[]{ + cursor.addRow(new Object[] { KEY.hashCode(), // Doc ID "Longer than 20 characters", // Title SUMMARY, // Summary on @@ -194,8 +146,7 @@ public class CursorToSearchResultConverterTest { PayloadType.INTENT, // Payload Type payload // Payload }); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(BASE_RANK + 1); } @@ -203,8 +154,7 @@ public class CursorToSearchResultConverterTest { @Test public void testParseCursor_MatchesResultPayload() { - final Set results = mConverter.convertCursor( - mSiteMapManager, getDummyCursor(), BASE_RANK); + final Set results = mConverter.convertCursor(getDummyCursor(), BASE_RANK); ResultPayload payload; for (SearchResult result : results) { payload = result.payload; @@ -228,7 +178,7 @@ public class CursorToSearchResultConverterTest { final InlineSwitchPayload payload = new InlineSwitchPayload(uri, source, 1 /* onValue */, intent, true /* isDeviceSupported */, 0 /* defautValue */); - cursor.addRow(new Object[]{ + cursor.addRow(new Object[] { KEY.hashCode(), // Doc ID TITLES.get(0), // Title SUMMARY, // Summary on @@ -243,8 +193,7 @@ public class CursorToSearchResultConverterTest { type, // Payload Type ResultPayloadUtils.marshall(payload) // Payload }); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { final InlineSwitchPayload newPayload = (InlineSwitchPayload) result.payload; @@ -264,9 +213,8 @@ public class CursorToSearchResultConverterTest { @Test public void testWifiKey_PrioritizedResult() { final String key = "main_toggle_wifi"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); @@ -276,9 +224,8 @@ public class CursorToSearchResultConverterTest { @Test public void testBluetoothKey_PrioritizedResult() { final String key = "main_toggle_bluetooth"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); @@ -288,8 +235,8 @@ public class CursorToSearchResultConverterTest { @Test public void testAirplaneKey_PrioritizedResult() { final String key = "toggle_airplane"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - Set results = mConverter.convertCursor(mSiteMapManager, cursor, BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); } @@ -298,9 +245,8 @@ public class CursorToSearchResultConverterTest { @Test public void testHotspotKey_PrioritizedResult() { final String key = "tether_settings"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); @@ -310,9 +256,8 @@ public class CursorToSearchResultConverterTest { @Test public void testBatterySaverKey_PrioritizedResult() { final String key = "battery_saver"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); @@ -322,9 +267,8 @@ public class CursorToSearchResultConverterTest { @Test public void testNFCKey_PrioritizedResult() { final String key = "toggle_nfc"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); @@ -334,9 +278,8 @@ public class CursorToSearchResultConverterTest { @Test public void testDataSaverKey_PrioritizedResult() { final String key = "restrict_background"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); @@ -346,9 +289,8 @@ public class CursorToSearchResultConverterTest { @Test public void testDataUsageKey_PrioritizedResult() { final String key = "data_usage_enable"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); } @@ -357,9 +299,8 @@ public class CursorToSearchResultConverterTest { @Test public void testRoamingKey_PrioritizedResult() { final String key = "button_roaming_key"; - final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); - final Set results = mConverter.convertCursor(mSiteMapManager, cursor, - BASE_RANK); + final Cursor cursor = getDummyCursor(key, WifiSettings.class.getName()); + final Set results = mConverter.convertCursor(cursor, BASE_RANK); for (SearchResult result : results) { assertThat(result.rank).isEqualTo(SearchResult.TOP_RANK); diff --git a/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java index 464e9d3080f..2687041ff69 100644 --- a/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java +++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java @@ -23,9 +23,7 @@ import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyList; import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -55,7 +53,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -166,33 +163,6 @@ public class DatabaseIndexingManagerTest { assertThat(columnNames).containsAllIn(expColumnNames); } - // Tests for the flow: IndexOneRaw -> UpdateOneRowWithFilteredData -> UpdateOneRow - - @Test - public void testAddResource_withChildFragment_shouldUpdateSiteMapDb() { - // FIXME: This test was failing. (count = 6 at the end) - -// SearchIndexableResource resource = getFakeResource(R.xml.network_and_internet); -// mManager.indexOneSearchIndexableData(mDb, localeStr, resource, -// new HashMap<>()); -// Cursor query = mDb.query(IndexDatabaseHelper.Tables.TABLE_SITE_MAP, SITE_MAP_COLUMNS, -// null, null, null, null, null); -// query.moveToPosition(-1); -// int count = 0; -// while (query.moveToNext()) { -// count++; -// assertThat(query.getString(query.getColumnIndex(SiteMapColumns.PARENT_CLASS))) -// .isEqualTo(className); -// assertThat(query.getString(query.getColumnIndex(SiteMapColumns.PARENT_TITLE))) -// .isEqualTo(mContext.getString(R.string.network_dashboard_title)); -// assertThat(query.getString(query.getColumnIndex(SiteMapColumns.CHILD_CLASS))) -// .isNotEmpty(); -// assertThat(query.getString(query.getColumnIndex(SiteMapColumns.CHILD_TITLE))) -// .isNotEmpty(); -// } -// assertThat(count).isEqualTo(5); - } - // Test new public indexing flow @Test @@ -363,31 +333,6 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getString(2)).isEqualTo(TITLE_ONE); } - @Test - public void testUpdateAsyncTask_onPostExecute_performsCallback() { - IndexingCallback callback = mock(IndexingCallback.class); - - DatabaseIndexingManager.IndexingTask task = mManager.new IndexingTask(callback); - task.execute(); - - Robolectric.flushForegroundThreadScheduler(); - - verify(callback).onIndexingFinished(); - } - - @Test - public void testUpdateAsyncTask_onPostExecute_setsIndexingComplete() { - SearchFeatureProviderImpl provider = new SearchFeatureProviderImpl(); - DatabaseIndexingManager manager = spy(provider.getIndexingManager(mContext)); - DatabaseIndexingManager.IndexingTask task = manager.new IndexingTask(null); - doNothing().when(manager).performIndexing(); - - task.execute(); - Robolectric.flushForegroundThreadScheduler(); - - assertThat(provider.isIndexingComplete(mContext)).isTrue(); - } - // Util functions private SearchIndexableRaw getFakeRaw() { diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java index 9584e42a33e..aa35f9fb450 100644 --- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java @@ -27,7 +27,6 @@ import android.content.Intent; import android.widget.Toolbar; import com.android.settings.TestConfig; -import com.android.settings.dashboard.SiteMapManager; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowSystemProperties; @@ -60,14 +59,6 @@ public class SearchFeatureProviderImplTest { SettingsShadowSystemProperties.clear(); } - @Test - public void getSiteMapManager_shouldCacheInstance() { - final SiteMapManager manager1 = mProvider.getSiteMapManager(); - final SiteMapManager manager2 = mProvider.getSiteMapManager(); - - assertThat(manager1).isSameAs(manager2); - } - @Test public void initSearchToolbar_shouldInitWithOnClickListener() { mProvider.initSearchToolbar(mActivity, null);