From b51f6bf869e7efcfc7ca06ab740c91306c1050d8 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Tue, 22 Nov 2016 23:53:36 +0900 Subject: [PATCH] Add initialize helper method to improve readability This CL also reduces SearchIndexableResources class about 1kB. Test: Added Robolectric test. "make RunSettingsRoboTests" passed. Change-Id: Id7f7676e175db4aba0be23c0c1a3fc12dd6acc2e --- .../search/SearchIndexableResources.java | 348 ++++-------------- .../search/SearchIndexableResourcesTest.java | 75 ++++ 2 files changed, 140 insertions(+), 283 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index 7888c0f2aad..7acac9750b7 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -17,6 +17,9 @@ package com.android.settings.search; import android.provider.SearchIndexableResource; +import android.support.annotation.DrawableRes; +import android.support.annotation.VisibleForTesting; +import android.support.annotation.XmlRes; import com.android.settings.DateTimeSettings; import com.android.settings.DevelopmentSettings; import com.android.settings.DeviceInfoSettings; @@ -64,292 +67,71 @@ import java.util.HashMap; public final class SearchIndexableResources { - public static int NO_DATA_RES_ID = 0; + @XmlRes + public static final int NO_DATA_RES_ID = 0; - private static HashMap sResMap = - new HashMap(); + private static final HashMap sResMap = new HashMap<>(); + + @VisibleForTesting + static void addIndex(Class indexClass, @XmlRes int xmlResId, + @DrawableRes int iconResId) { + String className = indexClass.getName(); + int rank = Ranking.getRankForClassName(className); + sResMap.put(className, new SearchIndexableResource(rank, xmlResId, className, iconResId)); + } static { - sResMap.put(WifiSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(WifiSettings.class.getName()), - NO_DATA_RES_ID, - WifiSettings.class.getName(), - R.drawable.ic_settings_wireless)); - - sResMap.put(AdvancedWifiSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(AdvancedWifiSettings.class.getName()), - R.xml.wifi_advanced_settings, - AdvancedWifiSettings.class.getName(), - R.drawable.ic_settings_wireless)); - - sResMap.put(SavedAccessPointsWifiSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(SavedAccessPointsWifiSettings.class.getName()), - R.xml.wifi_display_saved_access_points, - SavedAccessPointsWifiSettings.class.getName(), - R.drawable.ic_settings_wireless)); - - sResMap.put(BluetoothSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(BluetoothSettings.class.getName()), - NO_DATA_RES_ID, - BluetoothSettings.class.getName(), - R.drawable.ic_settings_bluetooth)); - - sResMap.put(SimSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(SimSettings.class.getName()), - NO_DATA_RES_ID, - SimSettings.class.getName(), - R.drawable.ic_sim_sd)); - - sResMap.put(DataUsageSummary.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(DataUsageSummary.class.getName()), - NO_DATA_RES_ID, - DataUsageSummary.class.getName(), - R.drawable.ic_settings_data_usage)); - - sResMap.put(DataUsageMeteredSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(DataUsageMeteredSettings.class.getName()), - NO_DATA_RES_ID, - DataUsageMeteredSettings.class.getName(), - R.drawable.ic_settings_data_usage)); - - sResMap.put(WirelessSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(WirelessSettings.class.getName()), - NO_DATA_RES_ID, - WirelessSettings.class.getName(), - R.drawable.ic_settings_more)); - - sResMap.put(ScreenZoomSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(ScreenZoomSettings.class.getName()), - NO_DATA_RES_ID, - ScreenZoomSettings.class.getName(), - R.drawable.ic_settings_display)); - - sResMap.put(DisplaySettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(DisplaySettings.class.getName()), - NO_DATA_RES_ID, - DisplaySettings.class.getName(), - R.drawable.ic_settings_display)); - - sResMap.put(WallpaperTypeSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(WallpaperTypeSettings.class.getName()), - NO_DATA_RES_ID, - WallpaperTypeSettings.class.getName(), - R.drawable.ic_settings_display)); - - sResMap.put(ConfigureNotificationSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(ConfigureNotificationSettings.class.getName()), - R.xml.configure_notification_settings, - ConfigureNotificationSettings.class.getName(), - R.drawable.ic_settings_notifications)); - - sResMap.put(SoundSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(SoundSettings.class.getName()), - NO_DATA_RES_ID, - SoundSettings.class.getName(), - R.drawable.ic_settings_sound)); - - sResMap.put(OtherSoundSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(OtherSoundSettings.class.getName()), - NO_DATA_RES_ID, - OtherSoundSettings.class.getName(), - R.drawable.ic_settings_sound)); - - sResMap.put(ZenModeSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(ZenModeSettings.class.getName()), - R.xml.zen_mode_settings, - ZenModeSettings.class.getName(), - R.drawable.ic_settings_notifications)); - - sResMap.put(ZenModePrioritySettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(ZenModePrioritySettings.class.getName()), - R.xml.zen_mode_priority_settings, - ZenModePrioritySettings.class.getName(), - R.drawable.ic_settings_notifications)); - - sResMap.put(StorageSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(StorageSettings.class.getName()), - NO_DATA_RES_ID, - StorageSettings.class.getName(), - R.drawable.ic_settings_storage)); - - sResMap.put(PowerUsageSummary.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(PowerUsageSummary.class.getName()), - R.xml.power_usage_summary, - PowerUsageSummary.class.getName(), - R.drawable.ic_settings_battery)); - - sResMap.put(BatterySaverSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(BatterySaverSettings.class.getName()), - R.xml.battery_saver_settings, - BatterySaverSettings.class.getName(), - R.drawable.ic_settings_battery)); - - sResMap.put(AdvancedAppSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(AdvancedAppSettings.class.getName()), - NO_DATA_RES_ID, - AdvancedAppSettings.class.getName(), - R.drawable.ic_settings_applications)); - - sResMap.put(SpecialAccessSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(SpecialAccessSettings.class.getName()), - R.xml.special_access, - SpecialAccessSettings.class.getName(), - R.drawable.ic_settings_applications)); - - sResMap.put(UserSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(UserSettings.class.getName()), - NO_DATA_RES_ID, - UserSettings.class.getName(), - R.drawable.ic_settings_multiuser)); - - sResMap.put(GestureSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(GestureSettings.class.getName()), - NO_DATA_RES_ID, - GestureSettings.class.getName(), - R.drawable.ic_settings_gestures)); - - sResMap.put(LocationSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(LocationSettings.class.getName()), - R.xml.location_settings, - LocationSettings.class.getName(), - R.drawable.ic_settings_location)); - - sResMap.put(ScanningSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(ScanningSettings.class.getName()), - R.xml.location_scanning, - ScanningSettings.class.getName(), - R.drawable.ic_settings_location)); - - sResMap.put(SecuritySettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(SecuritySettings.class.getName()), - NO_DATA_RES_ID, - SecuritySettings.class.getName(), - R.drawable.ic_settings_security)); - - sResMap.put(ScreenPinningSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(ScreenPinningSettings.class.getName()), - NO_DATA_RES_ID, - ScreenPinningSettings.class.getName(), - R.drawable.ic_settings_security)); - - sResMap.put(AccountSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(AccountSettings.class.getName()), - NO_DATA_RES_ID, - AccountSettings.class.getName(), - R.drawable.ic_settings_accounts)); - - sResMap.put(InputMethodAndLanguageSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(InputMethodAndLanguageSettings.class.getName()), - NO_DATA_RES_ID, - InputMethodAndLanguageSettings.class.getName(), - R.drawable.ic_settings_language)); - - sResMap.put(PrivacySettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(PrivacySettings.class.getName()), - NO_DATA_RES_ID, - PrivacySettings.class.getName(), - R.drawable.ic_settings_backup)); - - sResMap.put(DateTimeSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(DateTimeSettings.class.getName()), - NO_DATA_RES_ID, - DateTimeSettings.class.getName(), - R.drawable.ic_settings_date_time)); - - sResMap.put(AccessibilitySettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(AccessibilitySettings.class.getName()), - NO_DATA_RES_ID, - AccessibilitySettings.class.getName(), - R.drawable.ic_settings_accessibility)); - - sResMap.put(PrintSettingsFragment.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(PrintSettingsFragment.class.getName()), - NO_DATA_RES_ID, - PrintSettingsFragment.class.getName(), - R.drawable.ic_settings_print)); - - sResMap.put(DevelopmentSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(DevelopmentSettings.class.getName()), - NO_DATA_RES_ID, - DevelopmentSettings.class.getName(), - R.drawable.ic_settings_development)); - - sResMap.put(DeviceInfoSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(DeviceInfoSettings.class.getName()), - NO_DATA_RES_ID, - DeviceInfoSettings.class.getName(), - R.drawable.ic_settings_about)); - - sResMap.put(LegalSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(LegalSettings.class.getName()), - NO_DATA_RES_ID, - LegalSettings.class.getName(), - R.drawable.ic_settings_about)); - - sResMap.put(ZenModeVisualInterruptionSettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName( - ZenModeVisualInterruptionSettings.class.getName()), - R.xml.zen_mode_visual_interruptions_settings, - ZenModeVisualInterruptionSettings.class.getName(), - R.drawable.ic_settings_notifications)); - - sResMap.put(SystemDashboardFragment.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(SystemDashboardFragment.class.getName()), - NO_DATA_RES_ID, - SystemDashboardFragment.class.getName(), - R.drawable.ic_settings_about)); - - sResMap.put(StorageDashboardFragment.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(StorageDashboardFragment.class.getName()), - NO_DATA_RES_ID, - StorageDashboardFragment.class.getName(), - R.drawable.ic_settings_storage)); - - sResMap.put(EnterprisePrivacySettings.class.getName(), - new SearchIndexableResource( - Ranking.getRankForClassName(EnterprisePrivacySettings.class.getName()), - NO_DATA_RES_ID, - EnterprisePrivacySettings.class.getName(), - R.drawable.ic_settings_about)); + addIndex(WifiSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless); + addIndex(AdvancedWifiSettings.class, + R.xml.wifi_advanced_settings, R.drawable.ic_settings_wireless); + addIndex(SavedAccessPointsWifiSettings.class, + R.xml.wifi_display_saved_access_points, R.drawable.ic_settings_wireless); + addIndex(BluetoothSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_bluetooth); + addIndex(SimSettings.class, NO_DATA_RES_ID, R.drawable.ic_sim_sd); + addIndex(DataUsageSummary.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage); + addIndex(DataUsageMeteredSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage); + addIndex(WirelessSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_more); + addIndex(ScreenZoomSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display); + addIndex(DisplaySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display); + addIndex(WallpaperTypeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display); + addIndex(ConfigureNotificationSettings.class, + R.xml.configure_notification_settings, R.drawable.ic_settings_notifications); + addIndex(SoundSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_sound); + addIndex(OtherSoundSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_sound); + addIndex(ZenModeSettings.class, + R.xml.zen_mode_settings, R.drawable.ic_settings_notifications); + addIndex(ZenModePrioritySettings.class, + R.xml.zen_mode_priority_settings, R.drawable.ic_settings_notifications); + addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage); + addIndex(PowerUsageSummary.class, + R.xml.power_usage_summary, R.drawable.ic_settings_battery); + addIndex(BatterySaverSettings.class, + R.xml.battery_saver_settings, R.drawable.ic_settings_battery); + addIndex(AdvancedAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications); + addIndex(SpecialAccessSettings.class, + R.xml.special_access, R.drawable.ic_settings_applications); + addIndex(UserSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_multiuser); + addIndex(GestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures); + addIndex(LocationSettings.class, R.xml.location_settings, R.drawable.ic_settings_location); + addIndex(ScanningSettings.class, R.xml.location_scanning, R.drawable.ic_settings_location); + addIndex(SecuritySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security); + addIndex(ScreenPinningSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security); + addIndex(AccountSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accounts); + addIndex(InputMethodAndLanguageSettings.class, + NO_DATA_RES_ID, R.drawable.ic_settings_language); + addIndex(PrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup); + addIndex(DateTimeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_date_time); + addIndex(AccessibilitySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accessibility); + addIndex(PrintSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_print); + addIndex(DevelopmentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_development); + addIndex(DeviceInfoSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about); + addIndex(LegalSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about); + addIndex(ZenModeVisualInterruptionSettings.class, + R.xml.zen_mode_visual_interruptions_settings, + R.drawable.ic_settings_notifications); + addIndex(SystemDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_about); + addIndex(StorageDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage); + addIndex(EnterprisePrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about); } private SearchIndexableResources() { diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java new file mode 100644 index 00000000000..efb5cbc3d19 --- /dev/null +++ b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java @@ -0,0 +1,75 @@ +/* + * 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.search; + +import static com.android.settings.search.SearchIndexableResources.NO_DATA_RES_ID; + +import static com.google.common.truth.Truth.assertThat; + +import android.annotation.DrawableRes; +import android.annotation.XmlRes; +import android.provider.SearchIndexableResource; + +import com.android.settings.R; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.wifi.WifiSettings; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.annotation.Config; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class SearchIndexableResourcesTest { + + @XmlRes + private static final int XML_RES_ID = R.xml.physical_keyboard_settings; + @DrawableRes + private static final int ICON_RES_ID = R.drawable.ic_settings_language; + + @Test + public void testAddIndex() { + // Confirms that String.class isn't contained in SearchIndexableResources. + assertThat(SearchIndexableResources.getResourceByName("java.lang.String")).isNull(); + final int beforeCount = SearchIndexableResources.values().size(); + + SearchIndexableResources.addIndex(java.lang.String.class, XML_RES_ID, ICON_RES_ID); + final SearchIndexableResource index = SearchIndexableResources + .getResourceByName("java.lang.String"); + + assertThat(index).isNotNull(); + assertThat(index.className).isEqualTo("java.lang.String"); + assertThat(index.rank).isEqualTo(Ranking.RANK_OTHERS); + assertThat(index.xmlResId).isEqualTo(XML_RES_ID); + assertThat(index.iconResId).isEqualTo(ICON_RES_ID); + final int afterCount = SearchIndexableResources.values().size(); + assertThat(afterCount).isEqualTo(beforeCount + 1); + } + + @Test + public void testIndexHasWifiSettings() { + final SearchIndexableResource index = SearchIndexableResources + .getResourceByName(WifiSettings.class.getName()); + + assertThat(index).isNotNull(); + assertThat(index.className).isEqualTo(WifiSettings.class.getName()); + assertThat(index.rank).isEqualTo(Ranking.RANK_WIFI); + assertThat(index.xmlResId).isEqualTo(NO_DATA_RES_ID); + assertThat(index.iconResId).isEqualTo(R.drawable.ic_settings_wireless); + } +}