Reserve full indexing for SearchFragment
Full Index should only be accessible from Search Fragment, and when only full index should declare a locale to be indexed. Test: make RunSettingsRoboTests Fixes: 36656637 Change-Id: Ie673067118ac6b184570e116ea24a169be027053
This commit is contained in:
@@ -362,7 +362,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
|
|||||||
// smarter in the future.
|
// smarter in the future.
|
||||||
final Activity activity = getActivity();
|
final Activity activity = getActivity();
|
||||||
FeatureFactory.getFactory(activity).getSearchFeatureProvider().getIndexingManager(activity)
|
FeatureFactory.getFactory(activity).getSearchFeatureProvider().getIndexingManager(activity)
|
||||||
.updateFromClassNameResource(SecuritySettings.class.getName(), true, true);
|
.updateFromClassNameResource(SecuritySettings.class.getName(),
|
||||||
|
true /* includeInSearchResults */);
|
||||||
|
|
||||||
PreferenceGroup securityStatusPreferenceGroup =
|
PreferenceGroup securityStatusPreferenceGroup =
|
||||||
(PreferenceGroup) root.findPreference(KEY_SECURITY_STATUS);
|
(PreferenceGroup) root.findPreference(KEY_SECURITY_STATUS);
|
||||||
|
@@ -30,7 +30,6 @@ import android.content.SharedPreferences;
|
|||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.content.res.Configuration;
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
@@ -86,7 +85,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
// Constants for state save/restore
|
// Constants for state save/restore
|
||||||
private static final String SAVE_KEY_CATEGORIES = ":settings:categories";
|
private static final String SAVE_KEY_CATEGORIES = ":settings:categories";
|
||||||
private static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
|
private static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
|
||||||
private static final String SAVE_KEY_SHOW_SEARCH = ":settings:show_search";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When starting this activity, the invoking Intent can contain this extra
|
* When starting this activity, the invoking Intent can contain this extra
|
||||||
@@ -188,19 +186,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final BroadcastReceiver mUserAddRemoveReceiver = new BroadcastReceiver() {
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
if (mSearchFeatureProvider != null && !mSearchFeatureProvider.isEnabled(context)) {
|
|
||||||
String action = intent.getAction();
|
|
||||||
if (action.equals(Intent.ACTION_USER_ADDED)
|
|
||||||
|| action.equals(Intent.ACTION_USER_REMOVED)) {
|
|
||||||
mSearchFeatureProvider.updateIndex(getApplicationContext());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private DynamicIndexableContentMonitor mDynamicIndexableContentMonitor;
|
private DynamicIndexableContentMonitor mDynamicIndexableContentMonitor;
|
||||||
|
|
||||||
private ActionBar mActionBar;
|
private ActionBar mActionBar;
|
||||||
@@ -241,14 +226,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
|
||||||
super.onConfigurationChanged(newConfig);
|
|
||||||
if (!mSearchFeatureProvider.isEnabled(this)) {
|
|
||||||
mSearchFeatureProvider.updateIndex(getApplicationContext());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
if (!mDisplaySearch) {
|
if (!mDisplaySearch) {
|
||||||
@@ -346,15 +323,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
|
|
||||||
getFragmentManager().addOnBackStackChangedListener(this);
|
getFragmentManager().addOnBackStackChangedListener(this);
|
||||||
|
|
||||||
if (mIsShowingDashboard && !mSearchFeatureProvider.isEnabled(this)) {
|
|
||||||
// Run the Index update only if we have some space
|
|
||||||
if (!Utils.isLowStorage(this)) {
|
|
||||||
mSearchFeatureProvider.updateIndex(getApplicationContext());
|
|
||||||
} else {
|
|
||||||
Log.w(LOG_TAG, "Cannot update the Indexer as we are running low on storage space!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (savedState != null) {
|
if (savedState != null) {
|
||||||
// We are restarting from a previous saved state; used that to initialize, instead
|
// We are restarting from a previous saved state; used that to initialize, instead
|
||||||
// of starting fresh.
|
// of starting fresh.
|
||||||
@@ -568,10 +536,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
mDevelopmentPreferencesListener);
|
mDevelopmentPreferencesListener);
|
||||||
|
|
||||||
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
if (!mSearchFeatureProvider.isEnabled(this)) {
|
|
||||||
registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_ADDED));
|
|
||||||
registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_REMOVED));
|
|
||||||
}
|
|
||||||
if (mDynamicIndexableContentMonitor == null) {
|
if (mDynamicIndexableContentMonitor == null) {
|
||||||
mDynamicIndexableContentMonitor = new DynamicIndexableContentMonitor();
|
mDynamicIndexableContentMonitor = new DynamicIndexableContentMonitor();
|
||||||
}
|
}
|
||||||
@@ -587,9 +551,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
mDevelopmentPreferencesListener);
|
mDevelopmentPreferencesListener);
|
||||||
mDevelopmentPreferencesListener = null;
|
mDevelopmentPreferencesListener = null;
|
||||||
unregisterReceiver(mBatteryInfoReceiver);
|
unregisterReceiver(mBatteryInfoReceiver);
|
||||||
if (!mSearchFeatureProvider.isEnabled(this)) {
|
|
||||||
unregisterReceiver(mUserAddRemoveReceiver);
|
|
||||||
}
|
|
||||||
if (mDynamicIndexableContentMonitor != null) {
|
if (mDynamicIndexableContentMonitor != null) {
|
||||||
mDynamicIndexableContentMonitor.unregister(this, LOADER_ID_INDEXABLE_CONTENT_MONITOR);
|
mDynamicIndexableContentMonitor.unregister(this, LOADER_ID_INDEXABLE_CONTENT_MONITOR);
|
||||||
}
|
}
|
||||||
|
@@ -318,7 +318,7 @@ public class AccountPreferenceController extends PreferenceController
|
|||||||
}
|
}
|
||||||
mProfiles.put(userInfo.id, profileData);
|
mProfiles.put(userInfo.id, profileData);
|
||||||
new SearchFeatureProviderImpl().getIndexingManager(mContext).updateFromClassNameResource(
|
new SearchFeatureProviderImpl().getIndexingManager(mContext).updateFromClassNameResource(
|
||||||
UserAndAccountDashboardFragment.class.getName(), true, true);
|
UserAndAccountDashboardFragment.class.getName(), true /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
|
|
||||||
private DimmableIconPreference newAddAccountPreference(Context context) {
|
private DimmableIconPreference newAddAccountPreference(Context context) {
|
||||||
|
@@ -221,6 +221,7 @@ public class BuildNumberPreferenceController extends PreferenceController
|
|||||||
mDevHitToast.show();
|
mDevHitToast.show();
|
||||||
// This is good time to index the Developer Options
|
// This is good time to index the Developer Options
|
||||||
FeatureFactory.getFactory(mContext).getSearchFeatureProvider().getIndexingManager(mContext)
|
FeatureFactory.getFactory(mContext).getSearchFeatureProvider().getIndexingManager(mContext)
|
||||||
.updateFromClassNameResource(DevelopmentSettings.class.getName(), true, true);
|
.updateFromClassNameResource(DevelopmentSettings.class.getName(),
|
||||||
|
true /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -176,7 +176,7 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader,
|
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader,
|
||||||
List<PrintServiceInfo> services) {
|
List<PrintServiceInfo> services) {
|
||||||
mIndexManager.updateFromClassNameResource(PrintSettingsFragment.class.getName(),
|
mIndexManager.updateFromClassNameResource(PrintSettingsFragment.class.getName(),
|
||||||
false /* rebuild */, true /* includeInSearchResult */);
|
true /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -213,30 +213,30 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
if (mIndexManager != null) return;
|
if (mIndexManager != null) return;
|
||||||
mIndexManager = indexManager;
|
mIndexManager = indexManager;
|
||||||
mInputManager = (InputManager) context.getSystemService(Context.INPUT_SERVICE);
|
mInputManager = (InputManager) context.getSystemService(Context.INPUT_SERVICE);
|
||||||
buildIndex(true /* rebuild */);
|
buildIndex();
|
||||||
|
|
||||||
// Watch for input device changes.
|
// Watch for input device changes.
|
||||||
mInputManager.registerInputDeviceListener(this /* listener */, null /* handler */);
|
mInputManager.registerInputDeviceListener(this /* listener */, null /* handler */);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildIndex(boolean rebuild) {
|
private void buildIndex() {
|
||||||
mIndexManager.updateFromClassNameResource(PhysicalKeyboardFragment.class.getName(),
|
mIndexManager.updateFromClassNameResource(PhysicalKeyboardFragment.class.getName(),
|
||||||
rebuild, true /* includeInSearchResult */);
|
true /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceAdded(int deviceId) {
|
public void onInputDeviceAdded(int deviceId) {
|
||||||
buildIndex(false /* rebuild */);
|
buildIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceRemoved(int deviceId) {
|
public void onInputDeviceRemoved(int deviceId) {
|
||||||
buildIndex(true /* rebuild */);
|
buildIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputDeviceChanged(int deviceId) {
|
public void onInputDeviceChanged(int deviceId) {
|
||||||
buildIndex(true /* rebuild */);
|
buildIndex();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,7 +344,7 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
mIndexManager = index;
|
mIndexManager = index;
|
||||||
mPackageManager = context.getPackageManager();
|
mPackageManager = context.getPackageManager();
|
||||||
mAccessibilityServices.clear();
|
mAccessibilityServices.clear();
|
||||||
buildIndex(true /* rebuild */);
|
buildIndex();
|
||||||
|
|
||||||
// Cache accessibility service packages to know when they go away.
|
// Cache accessibility service packages to know when they go away.
|
||||||
AccessibilityManager accessibilityManager = (AccessibilityManager) context
|
AccessibilityManager accessibilityManager = (AccessibilityManager) context
|
||||||
@@ -358,9 +358,9 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildIndex(boolean rebuild) {
|
private void buildIndex() {
|
||||||
mIndexManager.updateFromClassNameResource(AccessibilitySettings.class.getName(),
|
mIndexManager.updateFromClassNameResource(AccessibilitySettings.class.getName(),
|
||||||
rebuild, true /* includeInSearchResult */);
|
true /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void onPackageAvailable(String packageName) {
|
synchronized void onPackageAvailable(String packageName) {
|
||||||
@@ -372,13 +372,13 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
.queryIntentServices(intent, 0 /* flags */);
|
.queryIntentServices(intent, 0 /* flags */);
|
||||||
if (services == null || services.isEmpty()) return;
|
if (services == null || services.isEmpty()) return;
|
||||||
mAccessibilityServices.add(packageName);
|
mAccessibilityServices.add(packageName);
|
||||||
buildIndex(false /* rebuild */);
|
buildIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void onPackageUnavailable(String packageName) {
|
synchronized void onPackageUnavailable(String packageName) {
|
||||||
if (mIndexManager == null) return;
|
if (mIndexManager == null) return;
|
||||||
if (!mAccessibilityServices.remove(packageName)) return;
|
if (!mAccessibilityServices.remove(packageName)) return;
|
||||||
buildIndex(true /* rebuild */);
|
buildIndex();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,10 +428,10 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
mContentResolver = context.getContentResolver();
|
mContentResolver = context.getContentResolver();
|
||||||
mInputMethodServices.clear();
|
mInputMethodServices.clear();
|
||||||
// Build index of {@link UserDictionary}.
|
// Build index of {@link UserDictionary}.
|
||||||
buildIndex(LanguageAndInputSettings.class, true /* rebuild */);
|
buildIndex(LanguageAndInputSettings.class);
|
||||||
// Build index of IMEs.
|
// Build index of IMEs.
|
||||||
buildIndex(VirtualKeyboardFragment.class, true /* rebuild */);
|
buildIndex(VirtualKeyboardFragment.class);
|
||||||
buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */);
|
buildIndex(AvailableVirtualKeyboardFragment.class);
|
||||||
|
|
||||||
// Cache IME service packages to know when they go away.
|
// Cache IME service packages to know when they go away.
|
||||||
final InputMethodManager inputMethodManager = (InputMethodManager) context
|
final InputMethodManager inputMethodManager = (InputMethodManager) context
|
||||||
@@ -452,9 +452,9 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
false /* notifyForDescendants */, this /* observer */);
|
false /* notifyForDescendants */, this /* observer */);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildIndex(Class<?> indexClass, boolean rebuild) {
|
private void buildIndex(Class<?> indexClass) {
|
||||||
mIndexManager.updateFromClassNameResource(indexClass.getName(), rebuild,
|
mIndexManager.updateFromClassNameResource(indexClass.getName(),
|
||||||
true /* includeInSearchResult */);
|
true /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void onPackageAvailable(String packageName) {
|
synchronized void onPackageAvailable(String packageName) {
|
||||||
@@ -466,24 +466,24 @@ public final class DynamicIndexableContentMonitor implements
|
|||||||
.queryIntentServices(intent, 0 /* flags */);
|
.queryIntentServices(intent, 0 /* flags */);
|
||||||
if (services == null || services.isEmpty()) return;
|
if (services == null || services.isEmpty()) return;
|
||||||
mInputMethodServices.add(packageName);
|
mInputMethodServices.add(packageName);
|
||||||
buildIndex(VirtualKeyboardFragment.class, false /* rebuild */);
|
buildIndex(VirtualKeyboardFragment.class);
|
||||||
buildIndex(AvailableVirtualKeyboardFragment.class, false /* rebuild */);
|
buildIndex(AvailableVirtualKeyboardFragment.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void onPackageUnavailable(String packageName) {
|
synchronized void onPackageUnavailable(String packageName) {
|
||||||
if (mIndexManager == null) return;
|
if (mIndexManager == null) return;
|
||||||
if (!mInputMethodServices.remove(packageName)) return;
|
if (!mInputMethodServices.remove(packageName)) return;
|
||||||
buildIndex(VirtualKeyboardFragment.class, true /* rebuild */);
|
buildIndex(VirtualKeyboardFragment.class);
|
||||||
buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */);
|
buildIndex(AvailableVirtualKeyboardFragment.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange, Uri uri) {
|
public void onChange(boolean selfChange, Uri uri) {
|
||||||
if (ENABLED_INPUT_METHODS_CONTENT_URI.equals(uri)) {
|
if (ENABLED_INPUT_METHODS_CONTENT_URI.equals(uri)) {
|
||||||
buildIndex(VirtualKeyboardFragment.class, true /* rebuild */);
|
buildIndex(VirtualKeyboardFragment.class);
|
||||||
buildIndex(AvailableVirtualKeyboardFragment.class, true /* rebuild */);
|
buildIndex(AvailableVirtualKeyboardFragment.class);
|
||||||
} else if (UserDictionary.Words.CONTENT_URI.equals(uri)) {
|
} else if (UserDictionary.Words.CONTENT_URI.equals(uri)) {
|
||||||
buildIndex(LanguageAndInputSettings.class, true /* rebuild */);
|
buildIndex(LanguageAndInputSettings.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -187,6 +187,8 @@ public class DatabaseIndexingManager {
|
|||||||
|
|
||||||
final String localeStr = Locale.getDefault().toString();
|
final String localeStr = Locale.getDefault().toString();
|
||||||
updateDatabase(isLocaleIndexed, localeStr);
|
updateDatabase(isLocaleIndexed, localeStr);
|
||||||
|
|
||||||
|
IndexDatabaseHelper.setLocaleIndexed(mContext, localeStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -242,8 +244,6 @@ public class DatabaseIndexingManager {
|
|||||||
} finally {
|
} finally {
|
||||||
database.endTransaction();
|
database.endTransaction();
|
||||||
}
|
}
|
||||||
// TODO Refactor: move the locale out of the helper class
|
|
||||||
IndexDatabaseHelper.setLocaleIndexed(mContext, localeStr);
|
|
||||||
|
|
||||||
mIsAvailable.set(true);
|
mIsAvailable.set(true);
|
||||||
}
|
}
|
||||||
@@ -432,12 +432,10 @@ public class DatabaseIndexingManager {
|
|||||||
* Update the Index for a specific class name resources
|
* Update the Index for a specific class name resources
|
||||||
*
|
*
|
||||||
* @param className the class name (typically a fragment name).
|
* @param className the class name (typically a fragment name).
|
||||||
* @param rebuild true means that you want to delete the data from the Index first.
|
|
||||||
* @param includeInSearchResults true means that you want the bit "enabled" set so that the
|
* @param includeInSearchResults true means that you want the bit "enabled" set so that the
|
||||||
* data will be seen included into the search results
|
* data will be seen included into the search results
|
||||||
*/
|
*/
|
||||||
public void updateFromClassNameResource(String className, final boolean rebuild,
|
public void updateFromClassNameResource(String className, boolean includeInSearchResults) {
|
||||||
boolean includeInSearchResults) {
|
|
||||||
if (className == null) {
|
if (className == null) {
|
||||||
throw new IllegalArgumentException("class name cannot be null!");
|
throw new IllegalArgumentException("class name cannot be null!");
|
||||||
}
|
}
|
||||||
@@ -452,26 +450,12 @@ public class DatabaseIndexingManager {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
addIndexableData(res);
|
addIndexableData(res);
|
||||||
performIndexing();
|
updateDatabase(false, Locale.getDefault().toString());
|
||||||
res.enabled = false;
|
res.enabled = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateFromSearchIndexableData(final SearchIndexableData data) {
|
|
||||||
AsyncTask.execute(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
addIndexableData(data);
|
|
||||||
performIndexing();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private SQLiteDatabase getReadableDatabase() {
|
|
||||||
return IndexDatabaseHelper.getInstance(mContext).getReadableDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
private SQLiteDatabase getWritableDatabase() {
|
private SQLiteDatabase getWritableDatabase() {
|
||||||
try {
|
try {
|
||||||
return IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
|
return IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
|
||||||
|
@@ -63,6 +63,7 @@ import com.android.settings.inputmethod.VirtualKeyboardFragment;
|
|||||||
import com.android.settings.language.LanguageAndInputSettings;
|
import com.android.settings.language.LanguageAndInputSettings;
|
||||||
import com.android.settings.print.PrintSettingsFragment;
|
import com.android.settings.print.PrintSettingsFragment;
|
||||||
import com.android.settings.search2.DatabaseIndexingManager;
|
import com.android.settings.search2.DatabaseIndexingManager;
|
||||||
|
import com.android.settings.testutils.DatabaseTestUtils;
|
||||||
import com.android.settings.testutils.shadow.ShadowActivityWithLoadManager;
|
import com.android.settings.testutils.shadow.ShadowActivityWithLoadManager;
|
||||||
import com.android.settings.testutils.shadow.ShadowContextImplWithRegisterReceiver;
|
import com.android.settings.testutils.shadow.ShadowContextImplWithRegisterReceiver;
|
||||||
import com.android.settings.testutils.shadow.ShadowInputManager;
|
import com.android.settings.testutils.shadow.ShadowInputManager;
|
||||||
@@ -162,6 +163,8 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
DynamicIndexableContentMonitor.resetForTesting();
|
DynamicIndexableContentMonitor.resetForTesting();
|
||||||
mRobolectricPackageManager.reset();
|
mRobolectricPackageManager.reset();
|
||||||
|
|
||||||
|
DatabaseTestUtils.clearDb();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -173,7 +176,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
anyInt(), any(Bundle.class), any(LoaderManager.LoaderCallbacks.class));
|
anyInt(), any(Bundle.class), any(LoaderManager.LoaderCallbacks.class));
|
||||||
// No indexing happens.
|
// No indexing happens.
|
||||||
verify(mIndexManager, never()).updateFromClassNameResource(
|
verify(mIndexManager, never()).updateFromClassNameResource(
|
||||||
anyString(), anyBoolean(), anyBoolean());
|
anyString(), anyBoolean());
|
||||||
|
|
||||||
mMonitor.unregister(mActivity, LOADER_ID);
|
mMonitor.unregister(mActivity, LOADER_ID);
|
||||||
|
|
||||||
@@ -226,7 +229,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
mMonitor.register(mActivity, LOADER_ID, mIndexManager, true /* isUserUnlocked */);
|
mMonitor.register(mActivity, LOADER_ID, mIndexManager, true /* isUserUnlocked */);
|
||||||
|
|
||||||
// Rebuild indexing should happen.
|
// Rebuild indexing should happen.
|
||||||
verifyRebuildIndexing(PhysicalKeyboardFragment.class);
|
verifyIncrementalIndexing(PhysicalKeyboardFragment.class);
|
||||||
// Input monitor should be registered to InputManager.
|
// Input monitor should be registered to InputManager.
|
||||||
final InputManager.InputDeviceListener listener = extactInputDeviceListener();
|
final InputManager.InputDeviceListener listener = extactInputDeviceListener();
|
||||||
assertThat(listener).isNotNull();
|
assertThat(listener).isNotNull();
|
||||||
@@ -258,7 +261,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
listener.onInputDeviceRemoved(2 /* deviceId */);
|
listener.onInputDeviceRemoved(2 /* deviceId */);
|
||||||
|
|
||||||
verifyRebuildIndexing(PhysicalKeyboardFragment.class);
|
verifyIncrementalIndexing(PhysicalKeyboardFragment.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A device is changed.
|
* A device is changed.
|
||||||
@@ -267,14 +270,14 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
listener.onInputDeviceChanged(3 /* deviceId */);
|
listener.onInputDeviceChanged(3 /* deviceId */);
|
||||||
|
|
||||||
verifyRebuildIndexing(PhysicalKeyboardFragment.class);
|
verifyIncrementalIndexing(PhysicalKeyboardFragment.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAccessibilityServicesMonitor() throws Exception {
|
public void testAccessibilityServicesMonitor() throws Exception {
|
||||||
mMonitor.register(mActivity, LOADER_ID, mIndexManager, true /* isUserUnlocked */);
|
mMonitor.register(mActivity, LOADER_ID, mIndexManager, true /* isUserUnlocked */);
|
||||||
|
|
||||||
verifyRebuildIndexing(AccessibilitySettings.class);
|
verifyIncrementalIndexing(AccessibilitySettings.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When an accessibility service package is installed, incremental indexing happen.
|
* When an accessibility service package is installed, incremental indexing happen.
|
||||||
@@ -301,7 +304,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
disableInstalledPackage(A11Y_PACKAGE_1);
|
disableInstalledPackage(A11Y_PACKAGE_1);
|
||||||
|
|
||||||
verifyRebuildIndexing(AccessibilitySettings.class);
|
verifyIncrementalIndexing(AccessibilitySettings.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When an accessibility service is enabled, incremental indexing happens.
|
* When an accessibility service is enabled, incremental indexing happens.
|
||||||
@@ -319,7 +322,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
uninstallAccessibilityService(A11Y_PACKAGE_1);
|
uninstallAccessibilityService(A11Y_PACKAGE_1);
|
||||||
|
|
||||||
verifyRebuildIndexing(AccessibilitySettings.class);
|
verifyIncrementalIndexing(AccessibilitySettings.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When an input method service package is installed, nothing happens.
|
* When an input method service package is installed, nothing happens.
|
||||||
@@ -335,8 +338,8 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
public void testInputMethodServicesMonitor() throws Exception {
|
public void testInputMethodServicesMonitor() throws Exception {
|
||||||
mMonitor.register(mActivity, LOADER_ID, mIndexManager, true /* isUserUnlocked */);
|
mMonitor.register(mActivity, LOADER_ID, mIndexManager, true /* isUserUnlocked */);
|
||||||
|
|
||||||
verifyRebuildIndexing(VirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(VirtualKeyboardFragment.class);
|
||||||
verifyRebuildIndexing(AvailableVirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(AvailableVirtualKeyboardFragment.class);
|
||||||
|
|
||||||
final Uri enabledInputMethodsContentUri = Settings.Secure.getUriFor(
|
final Uri enabledInputMethodsContentUri = Settings.Secure.getUriFor(
|
||||||
Settings.Secure.ENABLED_INPUT_METHODS);
|
Settings.Secure.ENABLED_INPUT_METHODS);
|
||||||
@@ -371,8 +374,8 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
disableInstalledPackage(IME_PACKAGE_1);
|
disableInstalledPackage(IME_PACKAGE_1);
|
||||||
|
|
||||||
verifyRebuildIndexing(VirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(VirtualKeyboardFragment.class);
|
||||||
verifyRebuildIndexing(AvailableVirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(AvailableVirtualKeyboardFragment.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When an input method service is enabled, incremental indexing happens.
|
* When an input method service is enabled, incremental indexing happens.
|
||||||
@@ -391,8 +394,8 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
uninstallInputMethodService(IME_PACKAGE_1);
|
uninstallInputMethodService(IME_PACKAGE_1);
|
||||||
|
|
||||||
verifyRebuildIndexing(VirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(VirtualKeyboardFragment.class);
|
||||||
verifyRebuildIndexing(AvailableVirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(AvailableVirtualKeyboardFragment.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When an accessibility service package is installed, nothing happens.
|
* When an accessibility service package is installed, nothing happens.
|
||||||
@@ -411,8 +414,8 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
observer.onChange(false /* selfChange */, enabledInputMethodsContentUri);
|
observer.onChange(false /* selfChange */, enabledInputMethodsContentUri);
|
||||||
|
|
||||||
verifyRebuildIndexing(VirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(VirtualKeyboardFragment.class);
|
||||||
verifyRebuildIndexing(AvailableVirtualKeyboardFragment.class);
|
verifyIncrementalIndexing(AvailableVirtualKeyboardFragment.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -423,7 +426,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
final ContentObserver observer = extractContentObserver(UserDictionary.Words.CONTENT_URI);
|
final ContentObserver observer = extractContentObserver(UserDictionary.Words.CONTENT_URI);
|
||||||
assertThat(observer).isNotNull();
|
assertThat(observer).isNotNull();
|
||||||
|
|
||||||
verifyRebuildIndexing(LanguageAndInputSettings.class);
|
verifyIncrementalIndexing(LanguageAndInputSettings.class);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When user dictionary content is changed, rebuild indexing happens.
|
* When user dictionary content is changed, rebuild indexing happens.
|
||||||
@@ -432,7 +435,7 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
observer.onChange(false /* selfChange */, UserDictionary.Words.CONTENT_URI);
|
observer.onChange(false /* selfChange */, UserDictionary.Words.CONTENT_URI);
|
||||||
|
|
||||||
verifyRebuildIndexing(LanguageAndInputSettings.class);
|
verifyIncrementalIndexing(LanguageAndInputSettings.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -441,21 +444,14 @@ public class DynamicIndexableContentMonitorTest {
|
|||||||
|
|
||||||
private void verifyNoIndexing(Class<?> indexingClass) {
|
private void verifyNoIndexing(Class<?> indexingClass) {
|
||||||
verify(mIndexManager, never()).updateFromClassNameResource(eq(indexingClass.getName()),
|
verify(mIndexManager, never()).updateFromClassNameResource(eq(indexingClass.getName()),
|
||||||
anyBoolean(), anyBoolean());
|
anyBoolean());
|
||||||
}
|
|
||||||
|
|
||||||
private void verifyRebuildIndexing(Class<?> indexingClass) {
|
|
||||||
verify(mIndexManager, times(1)).updateFromClassNameResource(indexingClass.getName(),
|
|
||||||
true /* rebuild */, true /* includeInSearchResults */);
|
|
||||||
verify(mIndexManager, never()).updateFromClassNameResource(indexingClass.getName(),
|
|
||||||
false /* rebuild */, true /* includeInSearchResults */);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void verifyIncrementalIndexing(Class<?> indexingClass) {
|
private void verifyIncrementalIndexing(Class<?> indexingClass) {
|
||||||
verify(mIndexManager, times(1)).updateFromClassNameResource(indexingClass.getName(),
|
verify(mIndexManager, times(1)).updateFromClassNameResource(indexingClass.getName(),
|
||||||
false /* rebuild */, true /* includeInSearchResults */);
|
true /* includeInSearchResults */);
|
||||||
verify(mIndexManager, never()).updateFromClassNameResource(indexingClass.getName(),
|
verify(mIndexManager, never()).updateFromClassNameResource(indexingClass.getName(),
|
||||||
true /* rebuild */, true /* includeInSearchResults */);
|
false /* includeInSearchResults */);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -741,8 +741,15 @@ public class DatabaseIndexingManagerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLocaleUpdated_afterIndexing_localeAdded() {
|
public void testLocaleUpdated_afterIndexing_localeNotAdded() {
|
||||||
mManager.updateDatabase(false, localeStr);
|
mManager.updateDatabase(false, localeStr);
|
||||||
|
assertThat(IndexDatabaseHelper.getInstance(mContext)
|
||||||
|
.isLocaleAlreadyIndexed(mContext, localeStr)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLocaleUpdated_afterFullIndexing_localeAdded() {
|
||||||
|
mManager.performIndexing();
|
||||||
assertThat(IndexDatabaseHelper.getInstance(mContext)
|
assertThat(IndexDatabaseHelper.getInstance(mContext)
|
||||||
.isLocaleAlreadyIndexed(mContext, localeStr)).isTrue();
|
.isLocaleAlreadyIndexed(mContext, localeStr)).isTrue();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user