diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 9d703c1b92a..fe25a8f9265 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -36,6 +36,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; +import android.support.annotation.VisibleForTesting; import android.support.v14.preference.PreferenceFragment; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; @@ -53,104 +54,18 @@ import android.widget.SearchView; import com.android.internal.util.ArrayUtils; import com.android.settings.Settings.WifiSettingsActivity; -import com.android.settings.accessibility.AccessibilitySettings; -import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard; -import com.android.settings.accessibility.CaptionPropertiesFragment; -import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment; -import com.android.settings.accounts.AccountSettings; -import com.android.settings.accounts.AccountSyncSettings; -import com.android.settings.accounts.ChooseAccountActivity; -import com.android.settings.accounts.ManagedProfileSettings; -import com.android.settings.accounts.UserAndAccountDashboardFragment; -import com.android.settings.applications.AdvancedAppSettings; -import com.android.settings.applications.AppAndNotificationDashboardFragment; -import com.android.settings.applications.DrawOverlayDetails; -import com.android.settings.applications.InstalledAppDetails; -import com.android.settings.applications.ManageApplications; -import com.android.settings.applications.ManageAssist; -import com.android.settings.applications.ManageDomainUrls; -import com.android.settings.applications.NotificationApps; -import com.android.settings.applications.ProcessStatsSummary; -import com.android.settings.applications.ProcessStatsUi; -import com.android.settings.applications.UsageAccessDetails; -import com.android.settings.applications.VrListenerSettings; -import com.android.settings.applications.WriteSettingsDetails; -import com.android.settings.bluetooth.BluetoothSettings; -import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; +import com.android.settings.core.gateway.SettingsGateway; import com.android.settings.core.instrumentation.SharedPreferencesLogger; import com.android.settings.dashboard.DashboardContainerFragment; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardSummary; import com.android.settings.dashboard.SearchResultsSummary; -import com.android.settings.dashboard.SupportFragment; -import com.android.settings.datausage.DataUsageSummary; -import com.android.settings.deletionhelper.AutomaticStorageManagerSettings; -import com.android.settings.deviceinfo.ImeiInformation; -import com.android.settings.deviceinfo.PrivateVolumeForget; -import com.android.settings.deviceinfo.PrivateVolumeSettings; -import com.android.settings.deviceinfo.PublicVolumeSettings; -import com.android.settings.deviceinfo.SimStatus; -import com.android.settings.deviceinfo.Status; -import com.android.settings.deviceinfo.StorageDashboardFragment; -import com.android.settings.deviceinfo.StorageSettings; -import com.android.settings.display.NightDisplaySettings; -import com.android.settings.enterprise.EnterprisePrivacySettings; -import com.android.settings.fuelgauge.BatterySaverSettings; -import com.android.settings.fuelgauge.PowerUsageDetail; -import com.android.settings.fuelgauge.PowerUsageSummary; -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.InputAndGestureSettings; -import com.android.settings.inputmethod.InputMethodAndLanguageSettings; -import com.android.settings.inputmethod.KeyboardLayoutPickerFragment; -import com.android.settings.inputmethod.PhysicalKeyboardFragment; -import com.android.settings.inputmethod.SpellCheckersSettings; -import com.android.settings.inputmethod.UserDictionaryList; -import com.android.settings.language.LanguageAndRegionSettings; -import com.android.settings.localepicker.LocaleListEditor; -import com.android.settings.location.LocationSettings; -import com.android.settings.network.NetworkDashboardFragment; -import com.android.settings.nfc.AndroidBeam; -import com.android.settings.nfc.PaymentSettings; -import com.android.settings.notification.AppNotificationSettings; -import com.android.settings.notification.ConfigureNotificationSettings; -import com.android.settings.notification.NotificationAccessSettings; -import com.android.settings.notification.NotificationStation; -import com.android.settings.notification.OtherSoundSettings; -import com.android.settings.notification.SoundSettings; -import com.android.settings.notification.ZenAccessSettings; -import com.android.settings.notification.ZenModeAutomationSettings; -import com.android.settings.notification.ZenModeEventRuleSettings; -import com.android.settings.notification.ZenModePrioritySettings; -import com.android.settings.notification.ZenModeScheduleRuleSettings; -import com.android.settings.notification.ZenModeSettings; -import com.android.settings.notification.ZenModeVisualInterruptionSettings; import com.android.settings.overlay.FeatureFactory; -import com.android.settings.print.PrintJobSettingsFragment; -import com.android.settings.print.PrintSettingsFragment; import com.android.settings.qstile.DevelopmentTiles; import com.android.settings.search.DynamicIndexableContentMonitor; import com.android.settings.search.Index; import com.android.settings.search2.SearchFeatureProvider; -import com.android.settings.search2.SearchFragment; -import com.android.settings.sim.SimSettings; -import com.android.settings.system.SystemDashboardFragment; -import com.android.settings.tts.TextToSpeechSettings; -import com.android.settings.users.UserSettings; -import com.android.settings.vpn2.VpnSettings; -import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.widget.SwitchBar; -import com.android.settings.wifi.AdvancedWifiSettings; -import com.android.settings.wifi.SavedAccessPointsWifiSettings; -import com.android.settings.wifi.WifiAPITest; -import com.android.settings.wifi.WifiInfo; -import com.android.settings.wifi.WifiSettings; -import com.android.settings.wifi.p2p.WifiP2pSettings; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.SettingsDrawerActivity; import com.android.settingslib.drawer.Tile; @@ -309,120 +224,6 @@ public class SettingsActivity extends SettingsDrawerActivity "com.android.settings.Settings.AboutDeviceDashboardAlias", }; - private static final String[] ENTRY_FRAGMENTS = { - WirelessSettings.class.getName(), - WifiSettings.class.getName(), - AdvancedWifiSettings.class.getName(), - SavedAccessPointsWifiSettings.class.getName(), - BluetoothSettings.class.getName(), - SimSettings.class.getName(), - TetherSettings.class.getName(), - WifiP2pSettings.class.getName(), - VpnSettings.class.getName(), - DateTimeSettings.class.getName(), - LocaleListEditor.class.getName(), - InputMethodAndLanguageSettings.class.getName(), - AvailableVirtualKeyboardFragment.class.getName(), - InputAndGestureSettings.class.getName(), - LanguageAndRegionSettings.class.getName(), - SpellCheckersSettings.class.getName(), - UserDictionaryList.class.getName(), - UserDictionarySettings.class.getName(), - HomeSettings.class.getName(), - DisplaySettings.class.getName(), - DeviceInfoSettings.class.getName(), - ManageApplications.class.getName(), - NotificationApps.class.getName(), - ManageAssist.class.getName(), - ProcessStatsUi.class.getName(), - NotificationStation.class.getName(), - LocationSettings.class.getName(), - SecuritySettings.class.getName(), - UsageAccessDetails.class.getName(), - PrivacySettings.class.getName(), - DeviceAdminSettings.class.getName(), - AccessibilitySettings.class.getName(), - AccessibilitySettingsForSetupWizard.class.getName(), - CaptionPropertiesFragment.class.getName(), - ToggleDaltonizerPreferenceFragment.class.getName(), - TextToSpeechSettings.class.getName(), - StorageSettings.class.getName(), - PrivateVolumeForget.class.getName(), - PrivateVolumeSettings.class.getName(), - PublicVolumeSettings.class.getName(), - DevelopmentSettings.class.getName(), - AndroidBeam.class.getName(), - WifiDisplaySettings.class.getName(), - PowerUsageSummary.class.getName(), - AccountSyncSettings.class.getName(), - AccountSettings.class.getName(), - GestureSettings.class.getName(), - SwipeToNotificationSettings.class.getName(), - DoubleTapPowerSettings.class.getName(), - DoubleTapScreenSettings.class.getName(), - PickupGestureSettings.class.getName(), - DoubleTwistGestureSettings.class.getName(), - CryptKeeperSettings.class.getName(), - DataUsageSummary.class.getName(), - DreamSettings.class.getName(), - UserSettings.class.getName(), - NotificationAccessSettings.class.getName(), - ZenAccessSettings.class.getName(), - PrintSettingsFragment.class.getName(), - PrintJobSettingsFragment.class.getName(), - TrustedCredentialsSettings.class.getName(), - PaymentSettings.class.getName(), - KeyboardLayoutPickerFragment.class.getName(), - PhysicalKeyboardFragment.class.getName(), - ZenModeSettings.class.getName(), - SoundSettings.class.getName(), - ConfigureNotificationSettings.class.getName(), - ChooseLockPassword.ChooseLockPasswordFragment.class.getName(), - ChooseLockPattern.ChooseLockPatternFragment.class.getName(), - InstalledAppDetails.class.getName(), - BatterySaverSettings.class.getName(), - AppNotificationSettings.class.getName(), - OtherSoundSettings.class.getName(), - ApnSettings.class.getName(), - ApnEditor.class.getName(), - WifiCallingSettings.class.getName(), - ZenModePrioritySettings.class.getName(), - ZenModeAutomationSettings.class.getName(), - ZenModeScheduleRuleSettings.class.getName(), - ZenModeEventRuleSettings.class.getName(), - ZenModeVisualInterruptionSettings.class.getName(), - ProcessStatsUi.class.getName(), - PowerUsageDetail.class.getName(), - ProcessStatsSummary.class.getName(), - DrawOverlayDetails.class.getName(), - WriteSettingsDetails.class.getName(), - AdvancedAppSettings.class.getName(), - WallpaperTypeSettings.class.getName(), - VrListenerSettings.class.getName(), - ManagedProfileSettings.class.getName(), - ChooseAccountActivity.class.getName(), - IccLockSettings.class.getName(), - ImeiInformation.class.getName(), - SimStatus.class.getName(), - Status.class.getName(), - TestingSettings.class.getName(), - WifiAPITest.class.getName(), - WifiInfo.class.getName(), - MasterClear.class.getName(), - NightDisplaySettings.class.getName(), - ManageDomainUrls.class.getName(), - AutomaticStorageManagerSettings.class.getName(), - SupportFragment.class.getName(), - StorageDashboardFragment.class.getName(), - SystemDashboardFragment.class.getName(), - NetworkDashboardFragment.class.getName(), - ConnectedDeviceDashboardFragment.class.getName(), - AppAndNotificationDashboardFragment.class.getName(), - UserAndAccountDashboardFragment.class.getName(), - EnterprisePrivacySettings.class.getName(), - }; - - private static final String[] LIKE_SHORTCUT_INTENT_ACTION_ARRAY = { "android.settings.APPLICATION_DETAILS_SETTINGS" }; @@ -457,8 +258,7 @@ public class SettingsActivity extends SettingsDrawerActivity } }; - private final DynamicIndexableContentMonitor mDynamicIndexableContentMonitor = - new DynamicIndexableContentMonitor(); + private DynamicIndexableContentMonitor mDynamicIndexableContentMonitor; private ActionBar mActionBar; private SwitchBar mSwitchBar; @@ -477,14 +277,10 @@ public class SettingsActivity extends SettingsDrawerActivity private MenuItem mSearchMenuItem; private boolean mSearchMenuItemExpanded = false; private SearchResultsSummary mSearchResultsFragment; - private String mSearchQuery; - private SearchFeatureProvider mSearchFeatureProvider; // Categories - private ArrayList mCategories = new ArrayList(); - - private static final String MSG_DATA_FORCE_REFRESH = "msg_data_force_refresh"; + private ArrayList mCategories = new ArrayList<>(); private boolean mNeedToRevertToInitialFragment = false; @@ -492,6 +288,9 @@ public class SettingsActivity extends SettingsDrawerActivity private Intent mResultIntentData; private ComponentName mCurrentSuggestion; + @VisibleForTesting + String mSearchQuery; + public SwitchBar getSwitchBar() { return mSwitchBar; } @@ -907,7 +706,9 @@ public class SettingsActivity extends SettingsDrawerActivity registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_ADDED)); registerReceiver(mUserAddRemoveReceiver, new IntentFilter(Intent.ACTION_USER_REMOVED)); - + if (mDynamicIndexableContentMonitor == null) { + mDynamicIndexableContentMonitor = new DynamicIndexableContentMonitor(); + } mDynamicIndexableContentMonitor.register(this, LOADER_ID_INDEXABLE_CONTENT_MONITOR); if(mDisplaySearch && !TextUtils.isEmpty(mSearchQuery)) { @@ -921,7 +722,9 @@ public class SettingsActivity extends SettingsDrawerActivity super.onPause(); unregisterReceiver(mBatteryInfoReceiver); unregisterReceiver(mUserAddRemoveReceiver); - mDynamicIndexableContentMonitor.unregister(); + if (mDynamicIndexableContentMonitor != null) { + mDynamicIndexableContentMonitor.unregister(); + } } @Override @@ -936,8 +739,8 @@ public class SettingsActivity extends SettingsDrawerActivity protected boolean isValidFragment(String fragmentName) { // Almost all fragments are wrapped in this, // except for a few that have their own activities. - for (int i = 0; i < ENTRY_FRAGMENTS.length; i++) { - if (ENTRY_FRAGMENTS[i].equals(fragmentName)) return true; + for (int i = 0; i < SettingsGateway.ENTRY_FRAGMENTS.length; i++) { + if (SettingsGateway.ENTRY_FRAGMENTS[i].equals(fragmentName)) return true; } return false; } @@ -1305,10 +1108,10 @@ public class SettingsActivity extends SettingsDrawerActivity @Deprecated @Override public boolean onQueryTextChange(String newText) { + mSearchQuery = newText; if (mSearchFeatureProvider.isEnabled() || mSearchResultsFragment == null) { return false; } - mSearchQuery = newText; return mSearchResultsFragment.onQueryTextChange(newText); } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java new file mode 100644 index 00000000000..db7eb5a2b2a --- /dev/null +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -0,0 +1,247 @@ +/* + * Copyright (C) 2016 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.core.gateway; + +import com.android.settings.ApnEditor; +import com.android.settings.ApnSettings; +import com.android.settings.ChooseLockPassword; +import com.android.settings.ChooseLockPattern; +import com.android.settings.CryptKeeperSettings; +import com.android.settings.DateTimeSettings; +import com.android.settings.DevelopmentSettings; +import com.android.settings.DeviceAdminSettings; +import com.android.settings.DeviceInfoSettings; +import com.android.settings.DisplaySettings; +import com.android.settings.DreamSettings; +import com.android.settings.HomeSettings; +import com.android.settings.IccLockSettings; +import com.android.settings.MasterClear; +import com.android.settings.PrivacySettings; +import com.android.settings.SecuritySettings; +import com.android.settings.TestingSettings; +import com.android.settings.TetherSettings; +import com.android.settings.TrustedCredentialsSettings; +import com.android.settings.UserDictionarySettings; +import com.android.settings.WallpaperTypeSettings; +import com.android.settings.WifiCallingSettings; +import com.android.settings.WirelessSettings; +import com.android.settings.accessibility.AccessibilitySettings; +import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard; +import com.android.settings.accessibility.CaptionPropertiesFragment; +import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment; +import com.android.settings.accounts.AccountSettings; +import com.android.settings.accounts.AccountSyncSettings; +import com.android.settings.accounts.ChooseAccountActivity; +import com.android.settings.accounts.ManagedProfileSettings; +import com.android.settings.accounts.UserAndAccountDashboardFragment; +import com.android.settings.applications.AdvancedAppSettings; +import com.android.settings.applications.AppAndNotificationDashboardFragment; +import com.android.settings.applications.DrawOverlayDetails; +import com.android.settings.applications.InstalledAppDetails; +import com.android.settings.applications.ManageApplications; +import com.android.settings.applications.ManageAssist; +import com.android.settings.applications.ManageDomainUrls; +import com.android.settings.applications.NotificationApps; +import com.android.settings.applications.ProcessStatsSummary; +import com.android.settings.applications.ProcessStatsUi; +import com.android.settings.applications.UsageAccessDetails; +import com.android.settings.applications.VrListenerSettings; +import com.android.settings.applications.WriteSettingsDetails; +import com.android.settings.bluetooth.BluetoothSettings; +import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; +import com.android.settings.dashboard.SupportFragment; +import com.android.settings.datausage.DataUsageSummary; +import com.android.settings.deletionhelper.AutomaticStorageManagerSettings; +import com.android.settings.deviceinfo.ImeiInformation; +import com.android.settings.deviceinfo.PrivateVolumeForget; +import com.android.settings.deviceinfo.PrivateVolumeSettings; +import com.android.settings.deviceinfo.PublicVolumeSettings; +import com.android.settings.deviceinfo.SimStatus; +import com.android.settings.deviceinfo.Status; +import com.android.settings.deviceinfo.StorageDashboardFragment; +import com.android.settings.deviceinfo.StorageSettings; +import com.android.settings.display.NightDisplaySettings; +import com.android.settings.enterprise.EnterprisePrivacySettings; +import com.android.settings.fuelgauge.BatterySaverSettings; +import com.android.settings.fuelgauge.PowerUsageDetail; +import com.android.settings.fuelgauge.PowerUsageSummary; +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.InputAndGestureSettings; +import com.android.settings.inputmethod.InputMethodAndLanguageSettings; +import com.android.settings.inputmethod.KeyboardLayoutPickerFragment; +import com.android.settings.inputmethod.PhysicalKeyboardFragment; +import com.android.settings.inputmethod.SpellCheckersSettings; +import com.android.settings.inputmethod.UserDictionaryList; +import com.android.settings.language.LanguageAndRegionSettings; +import com.android.settings.localepicker.LocaleListEditor; +import com.android.settings.location.LocationSettings; +import com.android.settings.network.NetworkDashboardFragment; +import com.android.settings.nfc.AndroidBeam; +import com.android.settings.nfc.PaymentSettings; +import com.android.settings.notification.AppNotificationSettings; +import com.android.settings.notification.ConfigureNotificationSettings; +import com.android.settings.notification.NotificationAccessSettings; +import com.android.settings.notification.NotificationStation; +import com.android.settings.notification.OtherSoundSettings; +import com.android.settings.notification.SoundSettings; +import com.android.settings.notification.ZenAccessSettings; +import com.android.settings.notification.ZenModeAutomationSettings; +import com.android.settings.notification.ZenModeEventRuleSettings; +import com.android.settings.notification.ZenModePrioritySettings; +import com.android.settings.notification.ZenModeScheduleRuleSettings; +import com.android.settings.notification.ZenModeSettings; +import com.android.settings.notification.ZenModeVisualInterruptionSettings; +import com.android.settings.print.PrintJobSettingsFragment; +import com.android.settings.print.PrintSettingsFragment; +import com.android.settings.sim.SimSettings; +import com.android.settings.system.SystemDashboardFragment; +import com.android.settings.tts.TextToSpeechSettings; +import com.android.settings.users.UserSettings; +import com.android.settings.vpn2.VpnSettings; +import com.android.settings.wfd.WifiDisplaySettings; +import com.android.settings.wifi.AdvancedWifiSettings; +import com.android.settings.wifi.SavedAccessPointsWifiSettings; +import com.android.settings.wifi.WifiAPITest; +import com.android.settings.wifi.WifiInfo; +import com.android.settings.wifi.WifiSettings; +import com.android.settings.wifi.p2p.WifiP2pSettings; + +public class SettingsGateway { + + /** + * A list of fragment that can be hosted by SettingsActivity. SettingsActivity will throw a + * security exception if the fragment it needs to display is not in this list. + */ + public static final String[] ENTRY_FRAGMENTS = { + WirelessSettings.class.getName(), + WifiSettings.class.getName(), + AdvancedWifiSettings.class.getName(), + SavedAccessPointsWifiSettings.class.getName(), + BluetoothSettings.class.getName(), + SimSettings.class.getName(), + TetherSettings.class.getName(), + WifiP2pSettings.class.getName(), + VpnSettings.class.getName(), + DateTimeSettings.class.getName(), + LocaleListEditor.class.getName(), + InputMethodAndLanguageSettings.class.getName(), + AvailableVirtualKeyboardFragment.class.getName(), + InputAndGestureSettings.class.getName(), + LanguageAndRegionSettings.class.getName(), + SpellCheckersSettings.class.getName(), + UserDictionaryList.class.getName(), + UserDictionarySettings.class.getName(), + HomeSettings.class.getName(), + DisplaySettings.class.getName(), + DeviceInfoSettings.class.getName(), + ManageApplications.class.getName(), + NotificationApps.class.getName(), + ManageAssist.class.getName(), + ProcessStatsUi.class.getName(), + NotificationStation.class.getName(), + LocationSettings.class.getName(), + SecuritySettings.class.getName(), + UsageAccessDetails.class.getName(), + PrivacySettings.class.getName(), + DeviceAdminSettings.class.getName(), + AccessibilitySettings.class.getName(), + AccessibilitySettingsForSetupWizard.class.getName(), + CaptionPropertiesFragment.class.getName(), + ToggleDaltonizerPreferenceFragment.class.getName(), + TextToSpeechSettings.class.getName(), + StorageSettings.class.getName(), + PrivateVolumeForget.class.getName(), + PrivateVolumeSettings.class.getName(), + PublicVolumeSettings.class.getName(), + DevelopmentSettings.class.getName(), + AndroidBeam.class.getName(), + WifiDisplaySettings.class.getName(), + PowerUsageSummary.class.getName(), + AccountSyncSettings.class.getName(), + AccountSettings.class.getName(), + GestureSettings.class.getName(), + SwipeToNotificationSettings.class.getName(), + DoubleTapPowerSettings.class.getName(), + DoubleTapScreenSettings.class.getName(), + PickupGestureSettings.class.getName(), + DoubleTwistGestureSettings.class.getName(), + CryptKeeperSettings.class.getName(), + DataUsageSummary.class.getName(), + DreamSettings.class.getName(), + UserSettings.class.getName(), + NotificationAccessSettings.class.getName(), + ZenAccessSettings.class.getName(), + PrintSettingsFragment.class.getName(), + PrintJobSettingsFragment.class.getName(), + TrustedCredentialsSettings.class.getName(), + PaymentSettings.class.getName(), + KeyboardLayoutPickerFragment.class.getName(), + PhysicalKeyboardFragment.class.getName(), + ZenModeSettings.class.getName(), + SoundSettings.class.getName(), + ConfigureNotificationSettings.class.getName(), + ChooseLockPassword.ChooseLockPasswordFragment.class.getName(), + ChooseLockPattern.ChooseLockPatternFragment.class.getName(), + InstalledAppDetails.class.getName(), + BatterySaverSettings.class.getName(), + AppNotificationSettings.class.getName(), + OtherSoundSettings.class.getName(), + ApnSettings.class.getName(), + ApnEditor.class.getName(), + WifiCallingSettings.class.getName(), + ZenModePrioritySettings.class.getName(), + ZenModeAutomationSettings.class.getName(), + ZenModeScheduleRuleSettings.class.getName(), + ZenModeEventRuleSettings.class.getName(), + ZenModeVisualInterruptionSettings.class.getName(), + ProcessStatsUi.class.getName(), + PowerUsageDetail.class.getName(), + ProcessStatsSummary.class.getName(), + DrawOverlayDetails.class.getName(), + WriteSettingsDetails.class.getName(), + AdvancedAppSettings.class.getName(), + WallpaperTypeSettings.class.getName(), + VrListenerSettings.class.getName(), + ManagedProfileSettings.class.getName(), + ChooseAccountActivity.class.getName(), + IccLockSettings.class.getName(), + ImeiInformation.class.getName(), + SimStatus.class.getName(), + Status.class.getName(), + TestingSettings.class.getName(), + WifiAPITest.class.getName(), + WifiInfo.class.getName(), + MasterClear.class.getName(), + NightDisplaySettings.class.getName(), + ManageDomainUrls.class.getName(), + AutomaticStorageManagerSettings.class.getName(), + SupportFragment.class.getName(), + StorageDashboardFragment.class.getName(), + SystemDashboardFragment.class.getName(), + NetworkDashboardFragment.class.getName(), + ConnectedDeviceDashboardFragment.class.getName(), + AppAndNotificationDashboardFragment.class.getName(), + UserAndAccountDashboardFragment.class.getName(), + EnterprisePrivacySettings.class.getName(), + }; +} diff --git a/tests/robotests/assets/grandfather_not_implementing_index_provider b/tests/robotests/assets/grandfather_not_implementing_index_provider index dd80440ffd1..554ea3c8291 100644 --- a/tests/robotests/assets/grandfather_not_implementing_index_provider +++ b/tests/robotests/assets/grandfather_not_implementing_index_provider @@ -10,4 +10,5 @@ com.android.settings.gestures.SwipeToNotificationSettings com.android.settings.notification.ZenModePrioritySettings com.android.settings.gestures.DoubleTapPowerSettings com.android.settings.inputmethod.InputAndGestureSettings -com.android.settings.gestures.DoubleTwistGestureSettings \ No newline at end of file +com.android.settings.gestures.DoubleTwistGestureSettings +com.android.settings.accounts.AccountDetailDashboardFragment \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/SettingsActivityTest.java b/tests/robotests/src/com/android/settings/SettingsActivityTest.java new file mode 100644 index 00000000000..1661947a76c --- /dev/null +++ b/tests/robotests/src/com/android/settings/SettingsActivityTest.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2016 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; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.annotation.Config; + +import static com.google.common.truth.Truth.assertThat; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class SettingsActivityTest { + + private SettingsActivity mActivity; + + @Test + public void testQueryTextChange_shouldUpdate() { + final String testQuery = "abc"; + mActivity = new SettingsActivity(); + + assertThat(mActivity.mSearchQuery).isNull(); + try { + mActivity.onQueryTextChange(testQuery); + } catch (NullPointerException e) { + // Expected, because searchFeatureProvider is not wired up. + } + + assertThat(mActivity.mSearchQuery).isEqualTo(testQuery); + } +}