Merge "Add capability for OEMs to supply their own SearchIndexableResources."
This commit is contained in:
committed by
Android (Google) Code Review
commit
7e62030e78
@@ -48,6 +48,11 @@ public interface SearchFeatureProvider {
|
|||||||
|
|
||||||
DatabaseIndexingManager getIndexingManager(Context context);
|
DatabaseIndexingManager getIndexingManager(Context context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a {@link SearchIndexableResources} to be used for indexing search results.
|
||||||
|
*/
|
||||||
|
SearchIndexableResources getSearchIndexableResources();
|
||||||
|
|
||||||
default String getSettingsIntelligencePkgName() {
|
default String getSettingsIntelligencePkgName() {
|
||||||
return "com.android.settings.intelligence";
|
return "com.android.settings.intelligence";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
|||||||
|
|
||||||
private static final String METRICS_ACTION_SETTINGS_INDEX = "search_synchronous_indexing";
|
private static final String METRICS_ACTION_SETTINGS_INDEX = "search_synchronous_indexing";
|
||||||
private DatabaseIndexingManager mDatabaseIndexingManager;
|
private DatabaseIndexingManager mDatabaseIndexingManager;
|
||||||
|
private SearchIndexableResources mSearchIndexableResources;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void verifyLaunchSearchResultPageCaller(Context context, ComponentName caller) {
|
public void verifyLaunchSearchResultPageCaller(Context context, ComponentName caller) {
|
||||||
@@ -72,6 +73,14 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
|||||||
.histogram(context, METRICS_ACTION_SETTINGS_INDEX, indexingTime);
|
.histogram(context, METRICS_ACTION_SETTINGS_INDEX, indexingTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchIndexableResources getSearchIndexableResources() {
|
||||||
|
if (mSearchIndexableResources == null) {
|
||||||
|
mSearchIndexableResources = new SearchIndexableResourcesImpl();
|
||||||
|
}
|
||||||
|
return mSearchIndexableResources;
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean isSignatureWhitelisted(Context context, String callerPackage) {
|
protected boolean isSignatureWhitelisted(Context context, String callerPackage) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2014 The Android Open Source Project
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -16,170 +16,14 @@
|
|||||||
|
|
||||||
package com.android.settings.search;
|
package com.android.settings.search;
|
||||||
|
|
||||||
import android.support.annotation.VisibleForTesting;
|
|
||||||
|
|
||||||
import com.android.settings.DateTimeSettings;
|
|
||||||
import com.android.settings.DisplaySettings;
|
|
||||||
import com.android.settings.LegalSettings;
|
|
||||||
import com.android.settings.accessibility.AccessibilitySettings;
|
|
||||||
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
|
|
||||||
import com.android.settings.accessibility.MagnificationPreferenceFragment;
|
|
||||||
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
|
||||||
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
|
||||||
import com.android.settings.applications.DefaultAppSettings;
|
|
||||||
import com.android.settings.applications.SpecialAccessSettings;
|
|
||||||
import com.android.settings.applications.assist.ManageAssist;
|
|
||||||
import com.android.settings.backup.BackupSettingsActivity;
|
|
||||||
import com.android.settings.backup.BackupSettingsFragment;
|
|
||||||
import com.android.settings.bluetooth.BluetoothSettings;
|
|
||||||
import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
|
|
||||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
|
||||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragmentOld;
|
|
||||||
import com.android.settings.datausage.DataUsageSummary;
|
|
||||||
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
|
|
||||||
import com.android.settings.development.DevelopmentSettingsDashboardFragment;
|
|
||||||
import com.android.settings.deviceinfo.DeviceInfoSettings;
|
|
||||||
import com.android.settings.deviceinfo.StorageDashboardFragment;
|
|
||||||
import com.android.settings.deviceinfo.StorageSettings;
|
|
||||||
import com.android.settings.display.AmbientDisplaySettings;
|
|
||||||
import com.android.settings.display.NightDisplaySettings;
|
|
||||||
import com.android.settings.display.ScreenZoomSettings;
|
|
||||||
import com.android.settings.dream.DreamSettings;
|
|
||||||
import com.android.settings.enterprise.EnterprisePrivacySettings;
|
|
||||||
import com.android.settings.fuelgauge.BatterySaverSettings;
|
|
||||||
import com.android.settings.fuelgauge.PowerUsageAdvanced;
|
|
||||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
|
||||||
import com.android.settings.fuelgauge.SmartBatterySettings;
|
|
||||||
import com.android.settings.gestures.AssistGestureSettings;
|
|
||||||
import com.android.settings.gestures.DoubleTapPowerSettings;
|
|
||||||
import com.android.settings.gestures.DoubleTapScreenSettings;
|
|
||||||
import com.android.settings.gestures.DoubleTwistGestureSettings;
|
|
||||||
import com.android.settings.gestures.GestureSettings;
|
|
||||||
import com.android.settings.gestures.PickupGestureSettings;
|
|
||||||
import com.android.settings.gestures.SwipeToNotificationSettings;
|
|
||||||
import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
|
|
||||||
import com.android.settings.inputmethod.PhysicalKeyboardFragment;
|
|
||||||
import com.android.settings.inputmethod.VirtualKeyboardFragment;
|
|
||||||
import com.android.settings.language.LanguageAndInputSettings;
|
|
||||||
import com.android.settings.location.LocationMode;
|
|
||||||
import com.android.settings.location.LocationSettings;
|
|
||||||
import com.android.settings.location.ScanningSettings;
|
|
||||||
import com.android.settings.network.NetworkDashboardFragment;
|
|
||||||
import com.android.settings.nfc.PaymentSettings;
|
|
||||||
import com.android.settings.notification.ConfigureNotificationSettings;
|
|
||||||
import com.android.settings.notification.SoundSettings;
|
|
||||||
import com.android.settings.notification.ZenModeAutomationSettings;
|
|
||||||
import com.android.settings.notification.ZenModeBehaviorSettings;
|
|
||||||
import com.android.settings.notification.ZenModeSettings;
|
|
||||||
import com.android.settings.print.PrintSettingsFragment;
|
|
||||||
import com.android.settings.security.EncryptionAndCredential;
|
|
||||||
import com.android.settings.security.LockscreenDashboardFragment;
|
|
||||||
import com.android.settings.security.ScreenPinningSettings;
|
|
||||||
import com.android.settings.security.SecuritySettingsV2;
|
|
||||||
import com.android.settings.security.screenlock.ScreenLockSettings;
|
|
||||||
import com.android.settings.sim.SimSettings;
|
|
||||||
import com.android.settings.support.SupportDashboardActivity;
|
|
||||||
import com.android.settings.system.ResetDashboardFragment;
|
|
||||||
import com.android.settings.system.SystemDashboardFragment;
|
|
||||||
import com.android.settings.tts.TextToSpeechSettings;
|
|
||||||
import com.android.settings.tts.TtsEnginePreferenceFragment;
|
|
||||||
import com.android.settings.users.UserSettings;
|
|
||||||
import com.android.settings.wallpaper.WallpaperTypeSettings;
|
|
||||||
import com.android.settings.wfd.WifiDisplaySettings;
|
|
||||||
import com.android.settings.wifi.ConfigureWifiSettings;
|
|
||||||
import com.android.settings.wifi.WifiSettings;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public final class SearchIndexableResources {
|
public interface SearchIndexableResources {
|
||||||
|
|
||||||
@VisibleForTesting
|
/**
|
||||||
static final Set<Class> sProviders = new HashSet<>();
|
* Returns a collection of classes that should be indexed for search.
|
||||||
|
*
|
||||||
@VisibleForTesting
|
* Each class should have the SEARCH_INDEX_DATA_PROVIDER public static member.
|
||||||
static void addIndex(Class indexClass) {
|
*/
|
||||||
sProviders.add(indexClass);
|
Collection<Class> getProviderValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
|
||||||
addIndex(WifiSettings.class);
|
|
||||||
addIndex(NetworkDashboardFragment.class);
|
|
||||||
addIndex(ConfigureWifiSettings.class);
|
|
||||||
addIndex(BluetoothSettings.class);
|
|
||||||
addIndex(SimSettings.class);
|
|
||||||
addIndex(DataUsageSummary.class);
|
|
||||||
addIndex(ScreenZoomSettings.class);
|
|
||||||
addIndex(DisplaySettings.class);
|
|
||||||
addIndex(AmbientDisplaySettings.class);
|
|
||||||
addIndex(WallpaperTypeSettings.class);
|
|
||||||
addIndex(AppAndNotificationDashboardFragment.class);
|
|
||||||
addIndex(SoundSettings.class);
|
|
||||||
addIndex(ZenModeSettings.class);
|
|
||||||
addIndex(StorageSettings.class);
|
|
||||||
addIndex(PowerUsageAdvanced.class);
|
|
||||||
addIndex(DefaultAppSettings.class);
|
|
||||||
addIndex(ManageAssist.class);
|
|
||||||
addIndex(SpecialAccessSettings.class);
|
|
||||||
addIndex(UserSettings.class);
|
|
||||||
addIndex(AssistGestureSettings.class);
|
|
||||||
addIndex(PickupGestureSettings.class);
|
|
||||||
addIndex(DoubleTapScreenSettings.class);
|
|
||||||
addIndex(DoubleTapPowerSettings.class);
|
|
||||||
addIndex(DoubleTwistGestureSettings.class);
|
|
||||||
addIndex(SwipeToNotificationSettings.class);
|
|
||||||
addIndex(GestureSettings.class);
|
|
||||||
addIndex(LanguageAndInputSettings.class);
|
|
||||||
addIndex(LocationSettings.class);
|
|
||||||
addIndex(LocationMode.class);
|
|
||||||
addIndex(ScanningSettings.class);
|
|
||||||
addIndex(SecuritySettingsV2.class);
|
|
||||||
addIndex(ScreenLockSettings.class);
|
|
||||||
addIndex(EncryptionAndCredential.class);
|
|
||||||
addIndex(ScreenPinningSettings.class);
|
|
||||||
addIndex(UserAndAccountDashboardFragment.class);
|
|
||||||
addIndex(VirtualKeyboardFragment.class);
|
|
||||||
addIndex(AvailableVirtualKeyboardFragment.class);
|
|
||||||
addIndex(PhysicalKeyboardFragment.class);
|
|
||||||
addIndex(BackupSettingsActivity.class);
|
|
||||||
addIndex(BackupSettingsFragment.class);
|
|
||||||
addIndex(DateTimeSettings.class);
|
|
||||||
addIndex(AccessibilitySettings.class);
|
|
||||||
addIndex(PrintSettingsFragment.class);
|
|
||||||
addIndex(DevelopmentSettingsDashboardFragment.class);
|
|
||||||
addIndex(DeviceInfoSettings.class);
|
|
||||||
addIndex(LegalSettings.class);
|
|
||||||
addIndex(SystemDashboardFragment.class);
|
|
||||||
addIndex(ResetDashboardFragment.class);
|
|
||||||
addIndex(StorageDashboardFragment.class);
|
|
||||||
addIndex(ConnectedDeviceDashboardFragment.class);
|
|
||||||
addIndex(ConnectedDeviceDashboardFragmentOld.class);
|
|
||||||
addIndex(AdvancedConnectedDeviceDashboardFragment.class);
|
|
||||||
addIndex(EnterprisePrivacySettings.class);
|
|
||||||
addIndex(PaymentSettings.class);
|
|
||||||
addIndex(TextToSpeechSettings.class);
|
|
||||||
addIndex(TtsEnginePreferenceFragment.class);
|
|
||||||
addIndex(MagnificationPreferenceFragment.class);
|
|
||||||
addIndex(AccessibilityShortcutPreferenceFragment.class);
|
|
||||||
addIndex(DreamSettings.class);
|
|
||||||
addIndex(SupportDashboardActivity.class);
|
|
||||||
addIndex(AutomaticStorageManagerSettings.class);
|
|
||||||
addIndex(ConfigureNotificationSettings.class);
|
|
||||||
addIndex(PowerUsageSummary.class);
|
|
||||||
addIndex(BatterySaverSettings.class);
|
|
||||||
addIndex(LockscreenDashboardFragment.class);
|
|
||||||
addIndex(WifiDisplaySettings.class);
|
|
||||||
addIndex(ZenModeBehaviorSettings.class);
|
|
||||||
addIndex(ZenModeAutomationSettings.class);
|
|
||||||
addIndex(NightDisplaySettings.class);
|
|
||||||
addIndex(SmartBatterySettings.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private SearchIndexableResources() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class> providerValues() {
|
|
||||||
return sProviders;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,182 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014 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.search;
|
||||||
|
|
||||||
|
import android.support.annotation.VisibleForTesting;
|
||||||
|
|
||||||
|
import com.android.settings.DateTimeSettings;
|
||||||
|
import com.android.settings.DisplaySettings;
|
||||||
|
import com.android.settings.LegalSettings;
|
||||||
|
import com.android.settings.accessibility.AccessibilitySettings;
|
||||||
|
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
|
||||||
|
import com.android.settings.accessibility.MagnificationPreferenceFragment;
|
||||||
|
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
||||||
|
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
||||||
|
import com.android.settings.applications.DefaultAppSettings;
|
||||||
|
import com.android.settings.applications.SpecialAccessSettings;
|
||||||
|
import com.android.settings.applications.assist.ManageAssist;
|
||||||
|
import com.android.settings.backup.BackupSettingsActivity;
|
||||||
|
import com.android.settings.backup.BackupSettingsFragment;
|
||||||
|
import com.android.settings.bluetooth.BluetoothSettings;
|
||||||
|
import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
|
||||||
|
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||||
|
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragmentOld;
|
||||||
|
import com.android.settings.datausage.DataUsageSummary;
|
||||||
|
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
|
||||||
|
import com.android.settings.development.DevelopmentSettingsDashboardFragment;
|
||||||
|
import com.android.settings.deviceinfo.DeviceInfoSettings;
|
||||||
|
import com.android.settings.deviceinfo.StorageDashboardFragment;
|
||||||
|
import com.android.settings.deviceinfo.StorageSettings;
|
||||||
|
import com.android.settings.display.AmbientDisplaySettings;
|
||||||
|
import com.android.settings.display.NightDisplaySettings;
|
||||||
|
import com.android.settings.display.ScreenZoomSettings;
|
||||||
|
import com.android.settings.dream.DreamSettings;
|
||||||
|
import com.android.settings.enterprise.EnterprisePrivacySettings;
|
||||||
|
import com.android.settings.fuelgauge.BatterySaverSettings;
|
||||||
|
import com.android.settings.fuelgauge.PowerUsageAdvanced;
|
||||||
|
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||||
|
import com.android.settings.fuelgauge.SmartBatterySettings;
|
||||||
|
import com.android.settings.gestures.AssistGestureSettings;
|
||||||
|
import com.android.settings.gestures.DoubleTapPowerSettings;
|
||||||
|
import com.android.settings.gestures.DoubleTapScreenSettings;
|
||||||
|
import com.android.settings.gestures.DoubleTwistGestureSettings;
|
||||||
|
import com.android.settings.gestures.GestureSettings;
|
||||||
|
import com.android.settings.gestures.PickupGestureSettings;
|
||||||
|
import com.android.settings.gestures.SwipeToNotificationSettings;
|
||||||
|
import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
|
||||||
|
import com.android.settings.inputmethod.PhysicalKeyboardFragment;
|
||||||
|
import com.android.settings.inputmethod.VirtualKeyboardFragment;
|
||||||
|
import com.android.settings.language.LanguageAndInputSettings;
|
||||||
|
import com.android.settings.location.LocationMode;
|
||||||
|
import com.android.settings.location.LocationSettings;
|
||||||
|
import com.android.settings.location.ScanningSettings;
|
||||||
|
import com.android.settings.network.NetworkDashboardFragment;
|
||||||
|
import com.android.settings.nfc.PaymentSettings;
|
||||||
|
import com.android.settings.notification.ConfigureNotificationSettings;
|
||||||
|
import com.android.settings.notification.SoundSettings;
|
||||||
|
import com.android.settings.notification.ZenModeAutomationSettings;
|
||||||
|
import com.android.settings.notification.ZenModeBehaviorSettings;
|
||||||
|
import com.android.settings.notification.ZenModeSettings;
|
||||||
|
import com.android.settings.print.PrintSettingsFragment;
|
||||||
|
import com.android.settings.security.EncryptionAndCredential;
|
||||||
|
import com.android.settings.security.LockscreenDashboardFragment;
|
||||||
|
import com.android.settings.security.ScreenPinningSettings;
|
||||||
|
import com.android.settings.security.SecuritySettingsV2;
|
||||||
|
import com.android.settings.security.screenlock.ScreenLockSettings;
|
||||||
|
import com.android.settings.sim.SimSettings;
|
||||||
|
import com.android.settings.support.SupportDashboardActivity;
|
||||||
|
import com.android.settings.system.ResetDashboardFragment;
|
||||||
|
import com.android.settings.system.SystemDashboardFragment;
|
||||||
|
import com.android.settings.tts.TextToSpeechSettings;
|
||||||
|
import com.android.settings.tts.TtsEnginePreferenceFragment;
|
||||||
|
import com.android.settings.users.UserSettings;
|
||||||
|
import com.android.settings.wallpaper.WallpaperTypeSettings;
|
||||||
|
import com.android.settings.wfd.WifiDisplaySettings;
|
||||||
|
import com.android.settings.wifi.ConfigureWifiSettings;
|
||||||
|
import com.android.settings.wifi.WifiSettings;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class SearchIndexableResourcesImpl implements SearchIndexableResources {
|
||||||
|
|
||||||
|
private final Set<Class> sProviders = new HashSet<>();
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void addIndex(Class indexClass) {
|
||||||
|
sProviders.add(indexClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchIndexableResourcesImpl() {
|
||||||
|
addIndex(WifiSettings.class);
|
||||||
|
addIndex(NetworkDashboardFragment.class);
|
||||||
|
addIndex(ConfigureWifiSettings.class);
|
||||||
|
addIndex(BluetoothSettings.class);
|
||||||
|
addIndex(SimSettings.class);
|
||||||
|
addIndex(DataUsageSummary.class);
|
||||||
|
addIndex(ScreenZoomSettings.class);
|
||||||
|
addIndex(DisplaySettings.class);
|
||||||
|
addIndex(AmbientDisplaySettings.class);
|
||||||
|
addIndex(WallpaperTypeSettings.class);
|
||||||
|
addIndex(AppAndNotificationDashboardFragment.class);
|
||||||
|
addIndex(SoundSettings.class);
|
||||||
|
addIndex(ZenModeSettings.class);
|
||||||
|
addIndex(StorageSettings.class);
|
||||||
|
addIndex(PowerUsageAdvanced.class);
|
||||||
|
addIndex(DefaultAppSettings.class);
|
||||||
|
addIndex(ManageAssist.class);
|
||||||
|
addIndex(SpecialAccessSettings.class);
|
||||||
|
addIndex(UserSettings.class);
|
||||||
|
addIndex(AssistGestureSettings.class);
|
||||||
|
addIndex(PickupGestureSettings.class);
|
||||||
|
addIndex(DoubleTapScreenSettings.class);
|
||||||
|
addIndex(DoubleTapPowerSettings.class);
|
||||||
|
addIndex(DoubleTwistGestureSettings.class);
|
||||||
|
addIndex(SwipeToNotificationSettings.class);
|
||||||
|
addIndex(GestureSettings.class);
|
||||||
|
addIndex(LanguageAndInputSettings.class);
|
||||||
|
addIndex(LocationSettings.class);
|
||||||
|
addIndex(LocationMode.class);
|
||||||
|
addIndex(ScanningSettings.class);
|
||||||
|
addIndex(SecuritySettingsV2.class);
|
||||||
|
addIndex(ScreenLockSettings.class);
|
||||||
|
addIndex(EncryptionAndCredential.class);
|
||||||
|
addIndex(ScreenPinningSettings.class);
|
||||||
|
addIndex(UserAndAccountDashboardFragment.class);
|
||||||
|
addIndex(VirtualKeyboardFragment.class);
|
||||||
|
addIndex(AvailableVirtualKeyboardFragment.class);
|
||||||
|
addIndex(PhysicalKeyboardFragment.class);
|
||||||
|
addIndex(BackupSettingsActivity.class);
|
||||||
|
addIndex(BackupSettingsFragment.class);
|
||||||
|
addIndex(DateTimeSettings.class);
|
||||||
|
addIndex(AccessibilitySettings.class);
|
||||||
|
addIndex(PrintSettingsFragment.class);
|
||||||
|
addIndex(DevelopmentSettingsDashboardFragment.class);
|
||||||
|
addIndex(DeviceInfoSettings.class);
|
||||||
|
addIndex(LegalSettings.class);
|
||||||
|
addIndex(SystemDashboardFragment.class);
|
||||||
|
addIndex(ResetDashboardFragment.class);
|
||||||
|
addIndex(StorageDashboardFragment.class);
|
||||||
|
addIndex(ConnectedDeviceDashboardFragment.class);
|
||||||
|
addIndex(ConnectedDeviceDashboardFragmentOld.class);
|
||||||
|
addIndex(AdvancedConnectedDeviceDashboardFragment.class);
|
||||||
|
addIndex(EnterprisePrivacySettings.class);
|
||||||
|
addIndex(PaymentSettings.class);
|
||||||
|
addIndex(TextToSpeechSettings.class);
|
||||||
|
addIndex(TtsEnginePreferenceFragment.class);
|
||||||
|
addIndex(MagnificationPreferenceFragment.class);
|
||||||
|
addIndex(AccessibilityShortcutPreferenceFragment.class);
|
||||||
|
addIndex(DreamSettings.class);
|
||||||
|
addIndex(SupportDashboardActivity.class);
|
||||||
|
addIndex(AutomaticStorageManagerSettings.class);
|
||||||
|
addIndex(ConfigureNotificationSettings.class);
|
||||||
|
addIndex(PowerUsageSummary.class);
|
||||||
|
addIndex(BatterySaverSettings.class);
|
||||||
|
addIndex(LockscreenDashboardFragment.class);
|
||||||
|
addIndex(WifiDisplaySettings.class);
|
||||||
|
addIndex(ZenModeBehaviorSettings.class);
|
||||||
|
addIndex(ZenModeAutomationSettings.class);
|
||||||
|
addIndex(NightDisplaySettings.class);
|
||||||
|
addIndex(SmartBatterySettings.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<Class> getProviderValues() {
|
||||||
|
return sProviders;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -175,7 +175,8 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<String> getNonIndexableKeysFromProvider(Context context) {
|
private List<String> getNonIndexableKeysFromProvider(Context context) {
|
||||||
final Collection<Class> values = SearchIndexableResources.providerValues();
|
final Collection<Class> values = FeatureFactory.getFactory(context)
|
||||||
|
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||||
final List<String> nonIndexableKeys = new ArrayList<>();
|
final List<String> nonIndexableKeys = new ArrayList<>();
|
||||||
|
|
||||||
for (Class<?> clazz : values) {
|
for (Class<?> clazz : values) {
|
||||||
@@ -209,7 +210,8 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<SearchIndexableResource> getSearchIndexableResourcesFromProvider(Context context) {
|
private List<SearchIndexableResource> getSearchIndexableResourcesFromProvider(Context context) {
|
||||||
Collection<Class> values = SearchIndexableResources.providerValues();
|
Collection<Class> values = FeatureFactory.getFactory(context)
|
||||||
|
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||||
List<SearchIndexableResource> resourceList = new ArrayList<>();
|
List<SearchIndexableResource> resourceList = new ArrayList<>();
|
||||||
|
|
||||||
for (Class<?> clazz : values) {
|
for (Class<?> clazz : values) {
|
||||||
@@ -236,7 +238,8 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<SearchIndexableRaw> getSearchIndexableRawFromProvider(Context context) {
|
private List<SearchIndexableRaw> getSearchIndexableRawFromProvider(Context context) {
|
||||||
final Collection<Class> values = SearchIndexableResources.providerValues();
|
final Collection<Class> values = FeatureFactory.getFactory(context)
|
||||||
|
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||||
final List<SearchIndexableRaw> rawList = new ArrayList<>();
|
final List<SearchIndexableRaw> rawList = new ArrayList<>();
|
||||||
|
|
||||||
for (Class<?> clazz : values) {
|
for (Class<?> clazz : values) {
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ import android.util.Log;
|
|||||||
import android.util.Xml;
|
import android.util.Xml;
|
||||||
|
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.DatabaseIndexingUtils;
|
import com.android.settings.search.DatabaseIndexingUtils;
|
||||||
import com.android.settings.search.Indexable.SearchIndexProvider;
|
import com.android.settings.search.Indexable.SearchIndexProvider;
|
||||||
import com.android.settings.search.SearchIndexableResources;
|
|
||||||
import com.android.settings.search.XmlParserUtils;
|
import com.android.settings.search.XmlParserUtils;
|
||||||
|
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
@@ -62,7 +62,8 @@ class SliceDataConverter {
|
|||||||
* @return a list of {@link SliceData} to be indexed and later referenced as a Slice.
|
* @return a list of {@link SliceData} to be indexed and later referenced as a Slice.
|
||||||
*
|
*
|
||||||
* The collection works as follows:
|
* The collection works as follows:
|
||||||
* - Collects a list of Fragments from {@link SearchIndexableResources}.
|
* - Collects a list of Fragments from
|
||||||
|
* {@link FeatureFactory#getSearchFeatureProvider()}.
|
||||||
* - From each fragment, grab a {@link SearchIndexProvider}.
|
* - From each fragment, grab a {@link SearchIndexProvider}.
|
||||||
* - For each provider, collect XML resource layout and a list of
|
* - For each provider, collect XML resource layout and a list of
|
||||||
* {@link com.android.settings.core.BasePreferenceController}.
|
* {@link com.android.settings.core.BasePreferenceController}.
|
||||||
@@ -72,7 +73,8 @@ class SliceDataConverter {
|
|||||||
return mSliceData;
|
return mSliceData;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<Class> indexableClasses = SearchIndexableResources.providerValues();
|
final Collection<Class> indexableClasses = FeatureFactory.getFactory(mContext)
|
||||||
|
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||||
|
|
||||||
for (Class clazz : indexableClasses) {
|
for (Class clazz : indexableClasses) {
|
||||||
final String fragmentName = clazz.getName();
|
final String fragmentName = clazz.getName();
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.android.settings.core;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertWithMessage;
|
import static com.google.common.truth.Truth.assertWithMessage;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.XmlResourceParser;
|
import android.content.res.XmlResourceParser;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
@@ -13,10 +15,12 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.search.DatabaseIndexingUtils;
|
import com.android.settings.search.DatabaseIndexingUtils;
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableResources;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
|
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||||
import com.android.settings.search.XmlParserUtils;
|
import com.android.settings.search.XmlParserUtils;
|
||||||
import com.android.settings.security.SecuritySettings;
|
import com.android.settings.security.SecuritySettings;
|
||||||
import com.android.settings.security.SecuritySettingsV2;
|
import com.android.settings.security.SecuritySettingsV2;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -82,19 +86,21 @@ public class XmlControllerAttributeTest {
|
|||||||
+ "IllegalAccessException. Please fix the following classes:\n";
|
+ "IllegalAccessException. Please fix the following classes:\n";
|
||||||
|
|
||||||
Context mContext;
|
Context mContext;
|
||||||
|
SearchFeatureProvider mSearchProvider;
|
||||||
private Set<Class> mProviderClassesCopy;
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mProviderClassesCopy = new HashSet<>(SearchIndexableResources.providerValues());
|
mSearchProvider = new SearchFeatureProviderImpl();
|
||||||
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mFakeFeatureFactory.searchFeatureProvider = mSearchProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
SearchIndexableResources.providerValues().clear();
|
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||||
SearchIndexableResources.providerValues().addAll(mProviderClassesCopy);
|
SearchFeatureProvider.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -156,7 +162,8 @@ public class XmlControllerAttributeTest {
|
|||||||
private Set<Integer> getIndexableXml() {
|
private Set<Integer> getIndexableXml() {
|
||||||
Set<Integer> xmlResSet = new HashSet();
|
Set<Integer> xmlResSet = new HashSet();
|
||||||
|
|
||||||
Collection<Class> indexableClasses = SearchIndexableResources.providerValues();
|
Collection<Class> indexableClasses =
|
||||||
|
mSearchProvider.getSearchIndexableResources().getProviderValues();
|
||||||
indexableClasses.removeAll(illegalClasses);
|
indexableClasses.removeAll(illegalClasses);
|
||||||
|
|
||||||
for (Class clazz : indexableClasses) {
|
for (Class clazz : indexableClasses) {
|
||||||
|
|||||||
@@ -121,7 +121,8 @@ public class SearchIndexProviderCodeInspector extends CodeInspector {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Must be in SearchProviderRegistry
|
// Must be in SearchProviderRegistry
|
||||||
if (!SearchIndexableResources.providerValues().contains(clazz)) {
|
SearchFeatureProvider provider = new SearchFeatureProviderImpl();
|
||||||
|
if (!provider.getSearchIndexableResources().getProviderValues().contains(clazz)) {
|
||||||
if (!notInSearchIndexableRegistryGrandfatherList.remove(className)) {
|
if (!notInSearchIndexableRegistryGrandfatherList.remove(className)) {
|
||||||
notInSearchProviderRegistry.add(className);
|
notInSearchProviderRegistry.add(className);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,12 +21,14 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
|
|
||||||
import static junit.framework.Assert.fail;
|
import static junit.framework.Assert.fail;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.wifi.WifiSettings;
|
import com.android.settings.wifi.WifiSettings;
|
||||||
|
|
||||||
@@ -36,49 +38,56 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class SearchIndexableResourcesTest {
|
public class SearchIndexableResourcesTest {
|
||||||
|
|
||||||
Set<Class> sProviderClassCopy;
|
SearchFeatureProviderImpl mSearchProvider;
|
||||||
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
sProviderClassCopy = new HashSet<>(SearchIndexableResources.sProviders);
|
mSearchProvider = new SearchFeatureProviderImpl();
|
||||||
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mFakeFeatureFactory.searchFeatureProvider = mSearchProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
SearchIndexableResources.sProviders.clear();
|
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||||
SearchIndexableResources.sProviders.addAll(sProviderClassCopy);
|
SearchFeatureProvider.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddIndex() {
|
public void testAddIndex() {
|
||||||
final Class stringClass = java.lang.String.class;
|
final Class stringClass = java.lang.String.class;
|
||||||
// Confirms that String.class isn't contained in SearchIndexableResources.
|
// Confirms that String.class isn't contained in SearchIndexableResources.
|
||||||
assertThat(SearchIndexableResources.sProviders).doesNotContain(stringClass);
|
assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
|
||||||
final int beforeCount = SearchIndexableResources.providerValues().size();
|
.doesNotContain(stringClass);
|
||||||
|
final int beforeCount =
|
||||||
|
mSearchProvider.getSearchIndexableResources().getProviderValues().size();
|
||||||
|
|
||||||
SearchIndexableResources.addIndex(java.lang.String.class);
|
( (SearchIndexableResourcesImpl) mSearchProvider.getSearchIndexableResources())
|
||||||
|
.addIndex(java.lang.String.class);
|
||||||
|
|
||||||
assertThat(SearchIndexableResources.sProviders).contains(stringClass);
|
assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
|
||||||
final int afterCount = SearchIndexableResources.providerValues().size();
|
.contains(stringClass);
|
||||||
|
final int afterCount =
|
||||||
|
mSearchProvider.getSearchIndexableResources().getProviderValues().size();
|
||||||
assertThat(afterCount).isEqualTo(beforeCount + 1);
|
assertThat(afterCount).isEqualTo(beforeCount + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIndexHasWifiSettings() {
|
public void testIndexHasWifiSettings() {
|
||||||
assertThat(sProviderClassCopy).contains(WifiSettings.class);
|
assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
|
||||||
|
.contains(WifiSettings.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNonIndexableKeys_GetsKeyFromProvider() {
|
public void testNonIndexableKeys_GetsKeyFromProvider() {
|
||||||
SearchIndexableResources.sProviders.clear();
|
mSearchProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||||
SearchIndexableResources.addIndex(FakeIndexProvider.class);
|
( (SearchIndexableResourcesImpl) mSearchProvider.getSearchIndexableResources())
|
||||||
|
.addIndex(FakeIndexProvider.class);
|
||||||
|
|
||||||
SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
|
SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
|
||||||
|
|
||||||
@@ -97,7 +106,7 @@ public class SearchIndexableResourcesTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAllClassNamesHaveProviders() {
|
public void testAllClassNamesHaveProviders() {
|
||||||
for (Class clazz: sProviderClassCopy) {
|
for (Class clazz: mSearchProvider.getSearchIndexableResources().getProviderValues()) {
|
||||||
if(DatabaseIndexingUtils.getSearchIndexProvider(clazz) == null) {
|
if(DatabaseIndexingUtils.getSearchIndexProvider(clazz) == null) {
|
||||||
fail(clazz.getName() + "is not an index provider");
|
fail(clazz.getName() + "is not an index provider");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.android.settings.search;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
@@ -14,6 +15,7 @@ import android.provider.SearchIndexablesContract;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.search.indexing.FakeSettingsFragment;
|
import com.android.settings.search.indexing.FakeSettingsFragment;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -23,9 +25,6 @@ import org.junit.runner.RunWith;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class SettingsSearchIndexablesProviderTest {
|
public class SettingsSearchIndexablesProviderTest {
|
||||||
@@ -33,8 +32,8 @@ public class SettingsSearchIndexablesProviderTest {
|
|||||||
private final String BASE_AUTHORITY = "com.android.settings";
|
private final String BASE_AUTHORITY = "com.android.settings";
|
||||||
|
|
||||||
private SettingsSearchIndexablesProvider mProvider;
|
private SettingsSearchIndexablesProvider mProvider;
|
||||||
|
private SearchFeatureProvider mFeatureProvider;
|
||||||
Set<Class> sProviderClasses;
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
Context mContext;
|
Context mContext;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -49,15 +48,18 @@ public class SettingsSearchIndexablesProviderTest {
|
|||||||
info.readPermission = Manifest.permission.READ_SEARCH_INDEXABLES;
|
info.readPermission = Manifest.permission.READ_SEARCH_INDEXABLES;
|
||||||
mProvider.attachInfo(mContext, info);
|
mProvider.attachInfo(mContext, info);
|
||||||
|
|
||||||
sProviderClasses = new HashSet<>(SearchIndexableResources.sProviders);
|
mFeatureProvider = new SearchFeatureProviderImpl();
|
||||||
SearchIndexableResources.sProviders.clear();
|
mFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||||
SearchIndexableResources.sProviders.add(FakeSettingsFragment.class);
|
mFeatureProvider.getSearchIndexableResources().getProviderValues()
|
||||||
|
.add(FakeSettingsFragment.class);
|
||||||
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mFakeFeatureFactory.searchFeatureProvider = mFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
SearchIndexableResources.sProviders.clear();
|
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||||
SearchIndexableResources.sProviders.addAll(sProviderClasses);
|
SearchFeatureProvider.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ package com.android.settings.slices;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -26,8 +28,9 @@ import android.database.sqlite.SQLiteDatabase;
|
|||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.search.FakeIndexProvider;
|
import com.android.settings.search.FakeIndexProvider;
|
||||||
import com.android.settings.search.SearchIndexableResources;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settings.testutils.DatabaseTestUtils;
|
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -37,9 +40,6 @@ import org.junit.runner.RunWith;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class SliceBroadcastReceiverTest {
|
public class SliceBroadcastReceiverTest {
|
||||||
@@ -54,30 +54,30 @@ public class SliceBroadcastReceiverTest {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private SQLiteDatabase mDb;
|
private SQLiteDatabase mDb;
|
||||||
private SliceBroadcastReceiver mReceiver;
|
private SliceBroadcastReceiver mReceiver;
|
||||||
|
private SearchFeatureProvider mSearchFeatureProvider;
|
||||||
private Set<Class> mProviderClassesCopy;
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mDb = SlicesDatabaseHelper.getInstance(mContext).getWritableDatabase();
|
mDb = SlicesDatabaseHelper.getInstance(mContext).getWritableDatabase();
|
||||||
mReceiver = new SliceBroadcastReceiver();
|
mReceiver = new SliceBroadcastReceiver();
|
||||||
mProviderClassesCopy = new HashSet<>(SearchIndexableResources.providerValues());
|
|
||||||
SlicesDatabaseHelper helper = SlicesDatabaseHelper.getInstance(mContext);
|
SlicesDatabaseHelper helper = SlicesDatabaseHelper.getInstance(mContext);
|
||||||
helper.setIndexedState();
|
helper.setIndexedState();
|
||||||
|
mSearchFeatureProvider = new SearchFeatureProviderImpl();
|
||||||
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mFakeFeatureFactory.searchFeatureProvider = mSearchFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
DatabaseTestUtils.clearDb(mContext);
|
mFakeFeatureFactory.searchFeatureProvider = mock(SearchFeatureProvider.class);
|
||||||
SearchIndexableResources.providerValues().clear();
|
|
||||||
SearchIndexableResources.providerValues().addAll(mProviderClassesCopy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnReceive_toggleChanged() {
|
public void testOnReceive_toggleChanged() {
|
||||||
String key = "key";
|
String key = "key";
|
||||||
SearchIndexableResources.providerValues().clear();
|
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||||
insertSpecialCase(key);
|
insertSpecialCase(key);
|
||||||
// Turn on toggle setting
|
// Turn on toggle setting
|
||||||
FakeToggleController fakeToggleController = new FakeToggleController(mContext, key);
|
FakeToggleController fakeToggleController = new FakeToggleController(mContext, key);
|
||||||
|
|||||||
@@ -18,11 +18,15 @@ package com.android.settings.slices;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.search.FakeIndexProvider;
|
import com.android.settings.search.FakeIndexProvider;
|
||||||
import com.android.settings.search.SearchIndexableResources;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
|
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -32,9 +36,7 @@ import org.junit.runner.RunWith;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
@@ -49,28 +51,31 @@ public class SliceDataConverterTest {
|
|||||||
|
|
||||||
Context mContext;
|
Context mContext;
|
||||||
|
|
||||||
private Set<Class> mProviderClassesCopy;
|
|
||||||
|
|
||||||
SliceDataConverter mSliceDataConverter;
|
SliceDataConverter mSliceDataConverter;
|
||||||
|
SearchFeatureProvider mSearchFeatureProvider;
|
||||||
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mProviderClassesCopy = new HashSet<>(SearchIndexableResources.providerValues());
|
|
||||||
mSliceDataConverter = new SliceDataConverter(mContext);
|
mSliceDataConverter = new SliceDataConverter(mContext);
|
||||||
|
mSearchFeatureProvider = new SearchFeatureProviderImpl();
|
||||||
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mFakeFeatureFactory.searchFeatureProvider = mSearchFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
SearchIndexableResources.providerValues().clear();
|
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||||
SearchIndexableResources.providerValues().addAll(mProviderClassesCopy);
|
SearchFeatureProvider.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Config(qualifiers = "mcc999")
|
@Config(qualifiers = "mcc999")
|
||||||
public void testFakeProvider_convertsFakeData() {
|
public void testFakeProvider_convertsFakeData() {
|
||||||
SearchIndexableResources.providerValues().clear();
|
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||||
SearchIndexableResources.providerValues().add(FakeIndexProvider.class);
|
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues()
|
||||||
|
.add(FakeIndexProvider.class);
|
||||||
|
|
||||||
List<SliceData> sliceDataList = mSliceDataConverter.getSliceData();
|
List<SliceData> sliceDataList = mSliceDataConverter.getSliceData();
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
public final LocaleFeatureProvider localeFeatureProvider;
|
public final LocaleFeatureProvider localeFeatureProvider;
|
||||||
public final ApplicationFeatureProvider applicationFeatureProvider;
|
public final ApplicationFeatureProvider applicationFeatureProvider;
|
||||||
public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider;
|
public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider;
|
||||||
public final SearchFeatureProvider searchFeatureProvider;
|
|
||||||
public final SurveyFeatureProvider surveyFeatureProvider;
|
public final SurveyFeatureProvider surveyFeatureProvider;
|
||||||
public final SecurityFeatureProvider securityFeatureProvider;
|
public final SecurityFeatureProvider securityFeatureProvider;
|
||||||
public final SuggestionFeatureProvider suggestionsFeatureProvider;
|
public final SuggestionFeatureProvider suggestionsFeatureProvider;
|
||||||
@@ -65,6 +64,7 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
public final DataPlanFeatureProvider dataPlanFeatureProvider;
|
public final DataPlanFeatureProvider dataPlanFeatureProvider;
|
||||||
public final SmsMirroringFeatureProvider smsMirroringFeatureProvider;
|
public final SmsMirroringFeatureProvider smsMirroringFeatureProvider;
|
||||||
public final SlicesFeatureProvider slicesFeatureProvider;
|
public final SlicesFeatureProvider slicesFeatureProvider;
|
||||||
|
public SearchFeatureProvider searchFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call this in {@code @Before} method of the test class to use fake factory.
|
* Call this in {@code @Before} method of the test class to use fake factory.
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import android.support.test.filters.MediumTest;
|
|||||||
import android.support.test.runner.AndroidJUnit4;
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
|
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.DatabaseIndexingUtils;
|
import com.android.settings.search.DatabaseIndexingUtils;
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableResources;
|
import com.android.settings.search.SearchIndexableResources;
|
||||||
@@ -54,7 +55,10 @@ public class PreferenceControllerContractTest {
|
|||||||
public void controllersInSearchShouldImplementPreferenceControllerMixin() {
|
public void controllersInSearchShouldImplementPreferenceControllerMixin() {
|
||||||
final Set<String> errorClasses = new ArraySet<>();
|
final Set<String> errorClasses = new ArraySet<>();
|
||||||
|
|
||||||
for (Class clazz : SearchIndexableResources.providerValues()) {
|
final SearchIndexableResources resources =
|
||||||
|
FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
|
||||||
|
.getSearchIndexableResources();
|
||||||
|
for (Class<?> clazz : resources.getProviderValues()) {
|
||||||
|
|
||||||
final Indexable.SearchIndexProvider provider =
|
final Indexable.SearchIndexProvider provider =
|
||||||
DatabaseIndexingUtils.getSearchIndexProvider(clazz);
|
DatabaseIndexingUtils.getSearchIndexProvider(clazz);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import android.util.AttributeSet;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Xml;
|
import android.util.Xml;
|
||||||
|
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.DatabaseIndexingUtils;
|
import com.android.settings.search.DatabaseIndexingUtils;
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableRaw;
|
import com.android.settings.search.SearchIndexableRaw;
|
||||||
@@ -100,7 +101,10 @@ public class UniquePreferenceTest {
|
|||||||
final Set<String> uniqueKeys = new HashSet<>();
|
final Set<String> uniqueKeys = new HashSet<>();
|
||||||
final Set<String> nullKeyClasses = new HashSet<>();
|
final Set<String> nullKeyClasses = new HashSet<>();
|
||||||
final Set<String> duplicatedKeys = new HashSet<>();
|
final Set<String> duplicatedKeys = new HashSet<>();
|
||||||
for (Class<?> clazz : SearchIndexableResources.providerValues()) {
|
final SearchIndexableResources resources =
|
||||||
|
FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
|
||||||
|
.getSearchIndexableResources();
|
||||||
|
for (Class<?> clazz : resources.getProviderValues()) {
|
||||||
verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, clazz);
|
verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import android.util.AttributeSet;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Xml;
|
import android.util.Xml;
|
||||||
|
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.DatabaseIndexingUtils;
|
import com.android.settings.search.DatabaseIndexingUtils;
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableResources;
|
import com.android.settings.search.SearchIndexableResources;
|
||||||
@@ -79,7 +80,10 @@ public class UserRestrictionTest {
|
|||||||
@Test
|
@Test
|
||||||
public void userRestrictionAttributeShouldBeValid()
|
public void userRestrictionAttributeShouldBeValid()
|
||||||
throws IOException, XmlPullParserException, Resources.NotFoundException {
|
throws IOException, XmlPullParserException, Resources.NotFoundException {
|
||||||
for (Class<?> clazz : SearchIndexableResources.providerValues()) {
|
final SearchIndexableResources resources =
|
||||||
|
FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
|
||||||
|
.getSearchIndexableResources();
|
||||||
|
for (Class<?> clazz : resources.getProviderValues()) {
|
||||||
verifyUserRestriction(clazz);
|
verifyUserRestriction(clazz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user