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
This commit is contained in:
Tadashi G. Takaoka
2016-11-22 23:53:36 +09:00
parent 10dd465969
commit b51f6bf869
2 changed files with 140 additions and 283 deletions

View File

@@ -17,6 +17,9 @@
package com.android.settings.search; package com.android.settings.search;
import android.provider.SearchIndexableResource; 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.DateTimeSettings;
import com.android.settings.DevelopmentSettings; import com.android.settings.DevelopmentSettings;
import com.android.settings.DeviceInfoSettings; import com.android.settings.DeviceInfoSettings;
@@ -64,292 +67,71 @@ import java.util.HashMap;
public final class SearchIndexableResources { 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<String, SearchIndexableResource> sResMap = private static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
new HashMap<String, SearchIndexableResource>();
@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 { static {
sResMap.put(WifiSettings.class.getName(), addIndex(WifiSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
new SearchIndexableResource( addIndex(AdvancedWifiSettings.class,
Ranking.getRankForClassName(WifiSettings.class.getName()), R.xml.wifi_advanced_settings, R.drawable.ic_settings_wireless);
NO_DATA_RES_ID, addIndex(SavedAccessPointsWifiSettings.class,
WifiSettings.class.getName(), R.xml.wifi_display_saved_access_points, R.drawable.ic_settings_wireless);
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);
sResMap.put(AdvancedWifiSettings.class.getName(), addIndex(DataUsageSummary.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
new SearchIndexableResource( addIndex(DataUsageMeteredSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
Ranking.getRankForClassName(AdvancedWifiSettings.class.getName()), addIndex(WirelessSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_more);
R.xml.wifi_advanced_settings, addIndex(ScreenZoomSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
AdvancedWifiSettings.class.getName(), addIndex(DisplaySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
R.drawable.ic_settings_wireless)); addIndex(WallpaperTypeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
addIndex(ConfigureNotificationSettings.class,
sResMap.put(SavedAccessPointsWifiSettings.class.getName(), R.xml.configure_notification_settings, R.drawable.ic_settings_notifications);
new SearchIndexableResource( addIndex(SoundSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_sound);
Ranking.getRankForClassName(SavedAccessPointsWifiSettings.class.getName()), addIndex(OtherSoundSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_sound);
R.xml.wifi_display_saved_access_points, addIndex(ZenModeSettings.class,
SavedAccessPointsWifiSettings.class.getName(), R.xml.zen_mode_settings, R.drawable.ic_settings_notifications);
R.drawable.ic_settings_wireless)); addIndex(ZenModePrioritySettings.class,
R.xml.zen_mode_priority_settings, R.drawable.ic_settings_notifications);
sResMap.put(BluetoothSettings.class.getName(), addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
new SearchIndexableResource( addIndex(PowerUsageSummary.class,
Ranking.getRankForClassName(BluetoothSettings.class.getName()), R.xml.power_usage_summary, R.drawable.ic_settings_battery);
NO_DATA_RES_ID, addIndex(BatterySaverSettings.class,
BluetoothSettings.class.getName(), R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
R.drawable.ic_settings_bluetooth)); addIndex(AdvancedAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
addIndex(SpecialAccessSettings.class,
sResMap.put(SimSettings.class.getName(), R.xml.special_access, R.drawable.ic_settings_applications);
new SearchIndexableResource( addIndex(UserSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_multiuser);
Ranking.getRankForClassName(SimSettings.class.getName()), addIndex(GestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
NO_DATA_RES_ID, addIndex(LocationSettings.class, R.xml.location_settings, R.drawable.ic_settings_location);
SimSettings.class.getName(), addIndex(ScanningSettings.class, R.xml.location_scanning, R.drawable.ic_settings_location);
R.drawable.ic_sim_sd)); addIndex(SecuritySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
addIndex(ScreenPinningSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
sResMap.put(DataUsageSummary.class.getName(), addIndex(AccountSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accounts);
new SearchIndexableResource( addIndex(InputMethodAndLanguageSettings.class,
Ranking.getRankForClassName(DataUsageSummary.class.getName()), NO_DATA_RES_ID, R.drawable.ic_settings_language);
NO_DATA_RES_ID, addIndex(PrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup);
DataUsageSummary.class.getName(), addIndex(DateTimeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_date_time);
R.drawable.ic_settings_data_usage)); addIndex(AccessibilitySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accessibility);
addIndex(PrintSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_print);
sResMap.put(DataUsageMeteredSettings.class.getName(), addIndex(DevelopmentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_development);
new SearchIndexableResource( addIndex(DeviceInfoSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
Ranking.getRankForClassName(DataUsageMeteredSettings.class.getName()), addIndex(LegalSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
NO_DATA_RES_ID, addIndex(ZenModeVisualInterruptionSettings.class,
DataUsageMeteredSettings.class.getName(), R.xml.zen_mode_visual_interruptions_settings,
R.drawable.ic_settings_data_usage)); R.drawable.ic_settings_notifications);
addIndex(SystemDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
sResMap.put(WirelessSettings.class.getName(), addIndex(StorageDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
new SearchIndexableResource( addIndex(EnterprisePrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
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));
} }
private SearchIndexableResources() { private SearchIndexableResources() {

View File

@@ -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);
}
}