• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.provider.settings.validators;
18 
19 import static android.provider.settings.validators.SettingsValidators.ANY_INTEGER_VALIDATOR;
20 import static android.provider.settings.validators.SettingsValidators.ANY_STRING_VALIDATOR;
21 import static android.provider.settings.validators.SettingsValidators.BOOLEAN_VALIDATOR;
22 import static android.provider.settings.validators.SettingsValidators.COMPONENT_NAME_VALIDATOR;
23 import static android.provider.settings.validators.SettingsValidators.FONT_SCALE_VALIDATOR;
24 import static android.provider.settings.validators.SettingsValidators.LENIENT_IP_ADDRESS_VALIDATOR;
25 import static android.provider.settings.validators.SettingsValidators.NON_NEGATIVE_FLOAT_VALIDATOR;
26 import static android.provider.settings.validators.SettingsValidators.NON_NEGATIVE_INTEGER_VALIDATOR;
27 import static android.provider.settings.validators.SettingsValidators.URI_VALIDATOR;
28 import static android.provider.settings.validators.SettingsValidators.VIBRATION_INTENSITY_VALIDATOR;
29 import static android.view.PointerIcon.DEFAULT_POINTER_SCALE;
30 import static android.view.PointerIcon.LARGE_POINTER_SCALE;
31 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_BEGIN;
32 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_END;
33 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_STROKE_BEGIN;
34 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_STROKE_END;
35 
36 import android.annotation.Nullable;
37 import android.compat.annotation.UnsupportedAppUsage;
38 import android.content.ComponentName;
39 import android.hardware.display.ColorDisplayManager;
40 import android.os.BatteryManager;
41 import android.provider.Settings.System;
42 import android.util.ArrayMap;
43 
44 import java.util.Map;
45 
46 /**
47  * Validators for System settings
48  */
49 public class SystemSettingsValidators {
50     @UnsupportedAppUsage
51     public static final Map<String, Validator> VALIDATORS = new ArrayMap<>();
52 
53     static {
VALIDATORS.put( System.STAY_ON_WHILE_PLUGGED_IN, value -> { try { int val = Integer.parseInt(value); return (val == 0) || (val == BatteryManager.BATTERY_PLUGGED_AC) || (val == BatteryManager.BATTERY_PLUGGED_USB) || (val == BatteryManager.BATTERY_PLUGGED_WIRELESS) || (val == BatteryManager.BATTERY_PLUGGED_DOCK) || (val == (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB)) || (val == (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_WIRELESS)) || (val == (BatteryManager.BATTERY_PLUGGED_USB | BatteryManager.BATTERY_PLUGGED_WIRELESS)) || (val == (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB | BatteryManager.BATTERY_PLUGGED_WIRELESS)) || (val == (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_DOCK)) || (val == (BatteryManager.BATTERY_PLUGGED_USB | BatteryManager.BATTERY_PLUGGED_DOCK)); } catch (NumberFormatException e) { return false; } })54         VALIDATORS.put(
55                 System.STAY_ON_WHILE_PLUGGED_IN,
56                 value -> {
57                     try {
58                         int val = Integer.parseInt(value);
59                         return (val == 0)
60                                 || (val == BatteryManager.BATTERY_PLUGGED_AC)
61                                 || (val == BatteryManager.BATTERY_PLUGGED_USB)
62                                 || (val == BatteryManager.BATTERY_PLUGGED_WIRELESS)
63                                 || (val == BatteryManager.BATTERY_PLUGGED_DOCK)
64                                 || (val
65                                         == (BatteryManager.BATTERY_PLUGGED_AC
66                                                 | BatteryManager.BATTERY_PLUGGED_USB))
67                                 || (val
68                                         == (BatteryManager.BATTERY_PLUGGED_AC
69                                                 | BatteryManager.BATTERY_PLUGGED_WIRELESS))
70                                 || (val
71                                         == (BatteryManager.BATTERY_PLUGGED_USB
72                                                 | BatteryManager.BATTERY_PLUGGED_WIRELESS))
73                                 || (val
74                                         == (BatteryManager.BATTERY_PLUGGED_AC
75                                                 | BatteryManager.BATTERY_PLUGGED_USB
76                                                 | BatteryManager.BATTERY_PLUGGED_WIRELESS))
77                                 || (val
78                                         == (BatteryManager.BATTERY_PLUGGED_AC
79                                                 | BatteryManager.BATTERY_PLUGGED_DOCK))
80                                 || (val
81                                         == (BatteryManager.BATTERY_PLUGGED_USB
82                                                 | BatteryManager.BATTERY_PLUGGED_DOCK));
83                     } catch (NumberFormatException e) {
84                         return false;
85                     }
86                 });
VALIDATORS.put(System.END_BUTTON_BEHAVIOR, new InclusiveIntegerRangeValidator(0, 3))87         VALIDATORS.put(System.END_BUTTON_BEHAVIOR, new InclusiveIntegerRangeValidator(0, 3));
VALIDATORS.put(System.WIFI_USE_STATIC_IP, BOOLEAN_VALIDATOR)88         VALIDATORS.put(System.WIFI_USE_STATIC_IP, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.BLUETOOTH_DISCOVERABILITY, new InclusiveIntegerRangeValidator(0, 2))89         VALIDATORS.put(System.BLUETOOTH_DISCOVERABILITY, new InclusiveIntegerRangeValidator(0, 2));
VALIDATORS.put(System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, NON_NEGATIVE_INTEGER_VALIDATOR)90         VALIDATORS.put(System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, NON_NEGATIVE_INTEGER_VALIDATOR);
VALIDATORS.put( System.NEXT_ALARM_FORMATTED, new Validator() { private static final int MAX_LENGTH = 1000; @Override public boolean validate(String value) { return value == null || value.length() < MAX_LENGTH; } })91         VALIDATORS.put(
92                 System.NEXT_ALARM_FORMATTED,
93                 new Validator() {
94                     private static final int MAX_LENGTH = 1000;
95 
96                     @Override
97                     public boolean validate(String value) {
98                         // TODO: No idea what the correct format is.
99                         return value == null || value.length() < MAX_LENGTH;
100                     }
101                 });
VALIDATORS.put(System.DEFAULT_DEVICE_FONT_SCALE, FONT_SCALE_VALIDATOR)102         VALIDATORS.put(System.DEFAULT_DEVICE_FONT_SCALE, FONT_SCALE_VALIDATOR);
VALIDATORS.put(System.FONT_SCALE, FONT_SCALE_VALIDATOR)103         VALIDATORS.put(System.FONT_SCALE, FONT_SCALE_VALIDATOR);
VALIDATORS.put(System.DIM_SCREEN, BOOLEAN_VALIDATOR)104         VALIDATORS.put(System.DIM_SCREEN, BOOLEAN_VALIDATOR);
VALIDATORS.put( System.DISPLAY_COLOR_MODE, new Validator() { @Override public boolean validate(@Nullable String value) { try { final int setting = Integer.parseInt(value); final boolean isInFrameworkRange = setting >= ColorDisplayManager.COLOR_MODE_NATURAL && setting <= ColorDisplayManager.COLOR_MODE_AUTOMATIC; final boolean isInVendorRange = setting >= ColorDisplayManager.VENDOR_COLOR_MODE_RANGE_MIN && setting <= ColorDisplayManager .VENDOR_COLOR_MODE_RANGE_MAX; return isInFrameworkRange || isInVendorRange; } catch (NumberFormatException | NullPointerException e) { return false; } } })105         VALIDATORS.put(
106                 System.DISPLAY_COLOR_MODE,
107                 new Validator() {
108                     @Override
109                     public boolean validate(@Nullable String value) {
110                         // Assume the actual validation that this device can properly handle this
111                         // kind of
112                         // color mode further down in ColorDisplayManager / ColorDisplayService.
113                         try {
114                             final int setting = Integer.parseInt(value);
115                             final boolean isInFrameworkRange =
116                                     setting >= ColorDisplayManager.COLOR_MODE_NATURAL
117                                             && setting <= ColorDisplayManager.COLOR_MODE_AUTOMATIC;
118                             final boolean isInVendorRange =
119                                     setting >= ColorDisplayManager.VENDOR_COLOR_MODE_RANGE_MIN
120                                             && setting
121                                                     <= ColorDisplayManager
122                                                             .VENDOR_COLOR_MODE_RANGE_MAX;
123                             return isInFrameworkRange || isInVendorRange;
124                         } catch (NumberFormatException | NullPointerException e) {
125                             return false;
126                         }
127                     }
128                 });
VALIDATORS.put(System.DISPLAY_COLOR_MODE_VENDOR_HINT, ANY_STRING_VALIDATOR)129         VALIDATORS.put(System.DISPLAY_COLOR_MODE_VENDOR_HINT, ANY_STRING_VALIDATOR);
VALIDATORS.put(System.SCREEN_OFF_TIMEOUT, NON_NEGATIVE_INTEGER_VALIDATOR)130         VALIDATORS.put(System.SCREEN_OFF_TIMEOUT, NON_NEGATIVE_INTEGER_VALIDATOR);
VALIDATORS.put(System.SCREEN_BRIGHTNESS_MODE, BOOLEAN_VALIDATOR)131         VALIDATORS.put(System.SCREEN_BRIGHTNESS_MODE, BOOLEAN_VALIDATOR);
VALIDATORS.put( System.SCREEN_BRIGHTNESS_FOR_ALS, new InclusiveIntegerRangeValidator( System.SCREEN_BRIGHTNESS_AUTOMATIC_BRIGHT, System.SCREEN_BRIGHTNESS_AUTOMATIC_DIM))132         VALIDATORS.put(
133                 System.SCREEN_BRIGHTNESS_FOR_ALS,
134                 new InclusiveIntegerRangeValidator(
135                         System.SCREEN_BRIGHTNESS_AUTOMATIC_BRIGHT,
136                         System.SCREEN_BRIGHTNESS_AUTOMATIC_DIM));
VALIDATORS.put(System.ADAPTIVE_SLEEP, BOOLEAN_VALIDATOR)137         VALIDATORS.put(System.ADAPTIVE_SLEEP, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MODE_RINGER_STREAMS_AFFECTED, NON_NEGATIVE_INTEGER_VALIDATOR)138         VALIDATORS.put(System.MODE_RINGER_STREAMS_AFFECTED, NON_NEGATIVE_INTEGER_VALIDATOR);
VALIDATORS.put(System.MUTE_STREAMS_AFFECTED, NON_NEGATIVE_INTEGER_VALIDATOR)139         VALIDATORS.put(System.MUTE_STREAMS_AFFECTED, NON_NEGATIVE_INTEGER_VALIDATOR);
VALIDATORS.put(System.VIBRATE_ON, BOOLEAN_VALIDATOR)140         VALIDATORS.put(System.VIBRATE_ON, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.APPLY_RAMPING_RINGER, BOOLEAN_VALIDATOR)141         VALIDATORS.put(System.APPLY_RAMPING_RINGER, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.ALARM_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR)142         VALIDATORS.put(System.ALARM_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR);
VALIDATORS.put(System.MEDIA_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR)143         VALIDATORS.put(System.MEDIA_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR);
VALIDATORS.put(System.NOTIFICATION_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR)144         VALIDATORS.put(System.NOTIFICATION_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR);
VALIDATORS.put(System.RING_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR)145         VALIDATORS.put(System.RING_VIBRATION_INTENSITY, VIBRATION_INTENSITY_VALIDATOR);
VALIDATORS.put(System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_VALIDATOR)146         VALIDATORS.put(System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_VALIDATOR);
VALIDATORS.put(System.HARDWARE_HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_VALIDATOR)147         VALIDATORS.put(System.HARDWARE_HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_VALIDATOR);
VALIDATORS.put(System.KEYBOARD_VIBRATION_ENABLED, BOOLEAN_VALIDATOR)148         VALIDATORS.put(System.KEYBOARD_VIBRATION_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.HAPTIC_FEEDBACK_ENABLED, BOOLEAN_VALIDATOR)149         VALIDATORS.put(System.HAPTIC_FEEDBACK_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.RINGTONE, URI_VALIDATOR)150         VALIDATORS.put(System.RINGTONE, URI_VALIDATOR);
VALIDATORS.put(System.NOTIFICATION_SOUND, URI_VALIDATOR)151         VALIDATORS.put(System.NOTIFICATION_SOUND, URI_VALIDATOR);
VALIDATORS.put(System.FOLD_LOCK_BEHAVIOR, ANY_STRING_VALIDATOR)152         VALIDATORS.put(System.FOLD_LOCK_BEHAVIOR, ANY_STRING_VALIDATOR);
VALIDATORS.put(System.ALARM_ALERT, URI_VALIDATOR)153         VALIDATORS.put(System.ALARM_ALERT, URI_VALIDATOR);
VALIDATORS.put(System.TEXT_AUTO_REPLACE, BOOLEAN_VALIDATOR)154         VALIDATORS.put(System.TEXT_AUTO_REPLACE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TEXT_AUTO_CAPS, BOOLEAN_VALIDATOR)155         VALIDATORS.put(System.TEXT_AUTO_CAPS, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TEXT_AUTO_PUNCTUATE, BOOLEAN_VALIDATOR)156         VALIDATORS.put(System.TEXT_AUTO_PUNCTUATE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TEXT_SHOW_PASSWORD, BOOLEAN_VALIDATOR)157         VALIDATORS.put(System.TEXT_SHOW_PASSWORD, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.AUTO_TIME, BOOLEAN_VALIDATOR)158         VALIDATORS.put(System.AUTO_TIME, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.AUTO_TIME_ZONE, BOOLEAN_VALIDATOR)159         VALIDATORS.put(System.AUTO_TIME_ZONE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SHOW_GTALK_SERVICE_STATUS, BOOLEAN_VALIDATOR)160         VALIDATORS.put(System.SHOW_GTALK_SERVICE_STATUS, BOOLEAN_VALIDATOR);
VALIDATORS.put( System.WALLPAPER_ACTIVITY, new Validator() { private static final int MAX_LENGTH = 1000; @Override public boolean validate(String value) { if (value != null && value.length() > MAX_LENGTH) { return false; } return ComponentName.unflattenFromString(value) != null; } })161         VALIDATORS.put(
162                 System.WALLPAPER_ACTIVITY,
163                 new Validator() {
164                     private static final int MAX_LENGTH = 1000;
165 
166                     @Override
167                     public boolean validate(String value) {
168                         if (value != null && value.length() > MAX_LENGTH) {
169                             return false;
170                         }
171                         return ComponentName.unflattenFromString(value) != null;
172                     }
173                 });
VALIDATORS.put( System.TIME_12_24, new DiscreteValueValidator(new String[] {"12", "24", null}))174         VALIDATORS.put(
175                 System.TIME_12_24, new DiscreteValueValidator(new String[] {"12", "24", null}));
VALIDATORS.put(System.SETUP_WIZARD_HAS_RUN, BOOLEAN_VALIDATOR)176         VALIDATORS.put(System.SETUP_WIZARD_HAS_RUN, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.ACCELEROMETER_ROTATION, BOOLEAN_VALIDATOR)177         VALIDATORS.put(System.ACCELEROMETER_ROTATION, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.USER_ROTATION, new InclusiveIntegerRangeValidator(0, 3))178         VALIDATORS.put(System.USER_ROTATION, new InclusiveIntegerRangeValidator(0, 3));
VALIDATORS.put(System.DTMF_TONE_WHEN_DIALING, BOOLEAN_VALIDATOR)179         VALIDATORS.put(System.DTMF_TONE_WHEN_DIALING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SOUND_EFFECTS_ENABLED, BOOLEAN_VALIDATOR)180         VALIDATORS.put(System.SOUND_EFFECTS_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.HAPTIC_FEEDBACK_ENABLED, BOOLEAN_VALIDATOR)181         VALIDATORS.put(System.HAPTIC_FEEDBACK_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.POWER_SOUNDS_ENABLED, BOOLEAN_VALIDATOR)182         VALIDATORS.put(System.POWER_SOUNDS_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.DOCK_SOUNDS_ENABLED, BOOLEAN_VALIDATOR)183         VALIDATORS.put(System.DOCK_SOUNDS_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SHOW_WEB_SUGGESTIONS, BOOLEAN_VALIDATOR)184         VALIDATORS.put(System.SHOW_WEB_SUGGESTIONS, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.WIFI_USE_STATIC_IP, BOOLEAN_VALIDATOR)185         VALIDATORS.put(System.WIFI_USE_STATIC_IP, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.ADVANCED_SETTINGS, BOOLEAN_VALIDATOR)186         VALIDATORS.put(System.ADVANCED_SETTINGS, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SCREEN_AUTO_BRIGHTNESS_ADJ, new InclusiveFloatRangeValidator(-1, 1))187         VALIDATORS.put(System.SCREEN_AUTO_BRIGHTNESS_ADJ, new InclusiveFloatRangeValidator(-1, 1));
VALIDATORS.put(System.VIBRATE_INPUT_DEVICES, BOOLEAN_VALIDATOR)188         VALIDATORS.put(System.VIBRATE_INPUT_DEVICES, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MASTER_MONO, BOOLEAN_VALIDATOR)189         VALIDATORS.put(System.MASTER_MONO, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MASTER_BALANCE, new InclusiveFloatRangeValidator(-1.f, 1.f))190         VALIDATORS.put(System.MASTER_BALANCE, new InclusiveFloatRangeValidator(-1.f, 1.f));
VALIDATORS.put(System.NOTIFICATIONS_USE_RING_VOLUME, BOOLEAN_VALIDATOR)191         VALIDATORS.put(System.NOTIFICATIONS_USE_RING_VOLUME, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.VIBRATE_IN_SILENT, BOOLEAN_VALIDATOR)192         VALIDATORS.put(System.VIBRATE_IN_SILENT, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MEDIA_BUTTON_RECEIVER, COMPONENT_NAME_VALIDATOR)193         VALIDATORS.put(System.MEDIA_BUTTON_RECEIVER, COMPONENT_NAME_VALIDATOR);
VALIDATORS.put(System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, BOOLEAN_VALIDATOR)194         VALIDATORS.put(System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.VIBRATE_WHEN_RINGING, BOOLEAN_VALIDATOR)195         VALIDATORS.put(System.VIBRATE_WHEN_RINGING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.DTMF_TONE_TYPE_WHEN_DIALING, BOOLEAN_VALIDATOR)196         VALIDATORS.put(System.DTMF_TONE_TYPE_WHEN_DIALING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.HEARING_AID, BOOLEAN_VALIDATOR)197         VALIDATORS.put(System.HEARING_AID, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TTY_MODE, new InclusiveIntegerRangeValidator(0, 3))198         VALIDATORS.put(System.TTY_MODE, new InclusiveIntegerRangeValidator(0, 3));
VALIDATORS.put(System.NOTIFICATION_LIGHT_PULSE, BOOLEAN_VALIDATOR)199         VALIDATORS.put(System.NOTIFICATION_LIGHT_PULSE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.POINTER_LOCATION, BOOLEAN_VALIDATOR)200         VALIDATORS.put(System.POINTER_LOCATION, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SHOW_TOUCHES, BOOLEAN_VALIDATOR)201         VALIDATORS.put(System.SHOW_TOUCHES, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SHOW_KEY_PRESSES, BOOLEAN_VALIDATOR)202         VALIDATORS.put(System.SHOW_KEY_PRESSES, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_VISUALIZER, BOOLEAN_VALIDATOR)203         VALIDATORS.put(System.TOUCHPAD_VISUALIZER, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SHOW_ROTARY_INPUT, BOOLEAN_VALIDATOR)204         VALIDATORS.put(System.SHOW_ROTARY_INPUT, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.WINDOW_ORIENTATION_LISTENER_LOG, BOOLEAN_VALIDATOR)205         VALIDATORS.put(System.WINDOW_ORIENTATION_LISTENER_LOG, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.LOCKSCREEN_SOUNDS_ENABLED, BOOLEAN_VALIDATOR)206         VALIDATORS.put(System.LOCKSCREEN_SOUNDS_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.LOCKSCREEN_DISABLED, BOOLEAN_VALIDATOR)207         VALIDATORS.put(System.LOCKSCREEN_DISABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SIP_RECEIVE_CALLS, BOOLEAN_VALIDATOR)208         VALIDATORS.put(System.SIP_RECEIVE_CALLS, BOOLEAN_VALIDATOR);
VALIDATORS.put( System.SIP_CALL_OPTIONS, new DiscreteValueValidator(new String[] {"SIP_ALWAYS", "SIP_ADDRESS_ONLY"}))209         VALIDATORS.put(
210                 System.SIP_CALL_OPTIONS,
211                 new DiscreteValueValidator(new String[] {"SIP_ALWAYS", "SIP_ADDRESS_ONLY"}));
VALIDATORS.put(System.SIP_ALWAYS, BOOLEAN_VALIDATOR)212         VALIDATORS.put(System.SIP_ALWAYS, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SIP_ADDRESS_ONLY, BOOLEAN_VALIDATOR)213         VALIDATORS.put(System.SIP_ADDRESS_ONLY, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SIP_ASK_ME_EACH_TIME, BOOLEAN_VALIDATOR)214         VALIDATORS.put(System.SIP_ASK_ME_EACH_TIME, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.POINTER_SPEED, new InclusiveFloatRangeValidator(-7, 7))215         VALIDATORS.put(System.POINTER_SPEED, new InclusiveFloatRangeValidator(-7, 7));
VALIDATORS.put(System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, NON_NEGATIVE_INTEGER_VALIDATOR)216         VALIDATORS.put(System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION,
217                 NON_NEGATIVE_INTEGER_VALIDATOR);
VALIDATORS.put(System.POINTER_FILL_STYLE, new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_FILL_BEGIN, POINTER_ICON_VECTOR_STYLE_FILL_END))218         VALIDATORS.put(System.POINTER_FILL_STYLE,
219                 new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_FILL_BEGIN,
220                         POINTER_ICON_VECTOR_STYLE_FILL_END));
VALIDATORS.put(System.POINTER_STROKE_STYLE, new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_STROKE_BEGIN, POINTER_ICON_VECTOR_STYLE_STROKE_END))221         VALIDATORS.put(System.POINTER_STROKE_STYLE,
222                 new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_STROKE_BEGIN,
223                         POINTER_ICON_VECTOR_STYLE_STROKE_END));
VALIDATORS.put(System.POINTER_SCALE, new InclusiveFloatRangeValidator(DEFAULT_POINTER_SCALE, LARGE_POINTER_SCALE))224         VALIDATORS.put(System.POINTER_SCALE,
225                 new InclusiveFloatRangeValidator(DEFAULT_POINTER_SCALE, LARGE_POINTER_SCALE));
VALIDATORS.put(System.MOUSE_REVERSE_VERTICAL_SCROLLING, BOOLEAN_VALIDATOR)226         VALIDATORS.put(System.MOUSE_REVERSE_VERTICAL_SCROLLING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MOUSE_SWAP_PRIMARY_BUTTON, BOOLEAN_VALIDATOR)227         VALIDATORS.put(System.MOUSE_SWAP_PRIMARY_BUTTON, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MOUSE_SCROLLING_ACCELERATION, BOOLEAN_VALIDATOR)228         VALIDATORS.put(System.MOUSE_SCROLLING_ACCELERATION, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MOUSE_POINTER_ACCELERATION_ENABLED, BOOLEAN_VALIDATOR)229         VALIDATORS.put(System.MOUSE_POINTER_ACCELERATION_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.MOUSE_SCROLLING_SPEED, new InclusiveIntegerRangeValidator(-7, 7))230         VALIDATORS.put(System.MOUSE_SCROLLING_SPEED, new InclusiveIntegerRangeValidator(-7, 7));
VALIDATORS.put(System.TOUCHPAD_POINTER_SPEED, new InclusiveIntegerRangeValidator(-7, 7))231         VALIDATORS.put(System.TOUCHPAD_POINTER_SPEED, new InclusiveIntegerRangeValidator(-7, 7));
VALIDATORS.put(System.TOUCHPAD_NATURAL_SCROLLING, BOOLEAN_VALIDATOR)232         VALIDATORS.put(System.TOUCHPAD_NATURAL_SCROLLING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_TAP_TO_CLICK, BOOLEAN_VALIDATOR)233         VALIDATORS.put(System.TOUCHPAD_TAP_TO_CLICK, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_TAP_DRAGGING, BOOLEAN_VALIDATOR)234         VALIDATORS.put(System.TOUCHPAD_TAP_DRAGGING, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_RIGHT_CLICK_ZONE, BOOLEAN_VALIDATOR)235         VALIDATORS.put(System.TOUCHPAD_RIGHT_CLICK_ZONE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_SYSTEM_GESTURES, BOOLEAN_VALIDATOR)236         VALIDATORS.put(System.TOUCHPAD_SYSTEM_GESTURES, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.TOUCHPAD_ACCELERATION_ENABLED, BOOLEAN_VALIDATOR)237         VALIDATORS.put(System.TOUCHPAD_ACCELERATION_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.LOCK_TO_APP_ENABLED, BOOLEAN_VALIDATOR)238         VALIDATORS.put(System.LOCK_TO_APP_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put( System.EGG_MODE, new Validator() { @Override public boolean validate(@Nullable String value) { try { return Long.parseLong(value) >= 0; } catch (NumberFormatException e) { return false; } } })239         VALIDATORS.put(
240                 System.EGG_MODE,
241                 new Validator() {
242                     @Override
243                     public boolean validate(@Nullable String value) {
244                         try {
245                             return Long.parseLong(value) >= 0;
246                         } catch (NumberFormatException e) {
247                             return false;
248                         }
249                     }
250                 });
VALIDATORS.put(System.WIFI_STATIC_IP, LENIENT_IP_ADDRESS_VALIDATOR)251         VALIDATORS.put(System.WIFI_STATIC_IP, LENIENT_IP_ADDRESS_VALIDATOR);
VALIDATORS.put(System.WIFI_STATIC_GATEWAY, LENIENT_IP_ADDRESS_VALIDATOR)252         VALIDATORS.put(System.WIFI_STATIC_GATEWAY, LENIENT_IP_ADDRESS_VALIDATOR);
VALIDATORS.put(System.WIFI_STATIC_NETMASK, LENIENT_IP_ADDRESS_VALIDATOR)253         VALIDATORS.put(System.WIFI_STATIC_NETMASK, LENIENT_IP_ADDRESS_VALIDATOR);
VALIDATORS.put(System.WIFI_STATIC_DNS1, LENIENT_IP_ADDRESS_VALIDATOR)254         VALIDATORS.put(System.WIFI_STATIC_DNS1, LENIENT_IP_ADDRESS_VALIDATOR);
VALIDATORS.put(System.WIFI_STATIC_DNS2, LENIENT_IP_ADDRESS_VALIDATOR)255         VALIDATORS.put(System.WIFI_STATIC_DNS2, LENIENT_IP_ADDRESS_VALIDATOR);
VALIDATORS.put(System.SHOW_BATTERY_PERCENT, BOOLEAN_VALIDATOR)256         VALIDATORS.put(System.SHOW_BATTERY_PERCENT, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.NOTIFICATION_LIGHT_PULSE, BOOLEAN_VALIDATOR)257         VALIDATORS.put(System.NOTIFICATION_LIGHT_PULSE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.WEAR_ACCESSIBILITY_GESTURE_ENABLED, BOOLEAN_VALIDATOR)258         VALIDATORS.put(System.WEAR_ACCESSIBILITY_GESTURE_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE, BOOLEAN_VALIDATOR)259         VALIDATORS.put(System.WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.WEAR_TTS_PREWARM_ENABLED, BOOLEAN_VALIDATOR)260         VALIDATORS.put(System.WEAR_TTS_PREWARM_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.CLOCKWORK_BLUETOOTH_SETTINGS_PREF, BOOLEAN_VALIDATOR)261         VALIDATORS.put(System.CLOCKWORK_BLUETOOTH_SETTINGS_PREF, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.UNREAD_NOTIFICATION_DOT_INDICATOR, BOOLEAN_VALIDATOR)262         VALIDATORS.put(System.UNREAD_NOTIFICATION_DOT_INDICATOR, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.AUTO_LAUNCH_MEDIA_CONTROLS, BOOLEAN_VALIDATOR)263         VALIDATORS.put(System.AUTO_LAUNCH_MEDIA_CONTROLS, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.LOCALE_PREFERENCES, ANY_STRING_VALIDATOR)264         VALIDATORS.put(System.LOCALE_PREFERENCES, ANY_STRING_VALIDATOR);
VALIDATORS.put(System.CAMERA_FLASH_NOTIFICATION, BOOLEAN_VALIDATOR)265         VALIDATORS.put(System.CAMERA_FLASH_NOTIFICATION, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SCREEN_FLASH_NOTIFICATION, BOOLEAN_VALIDATOR)266         VALIDATORS.put(System.SCREEN_FLASH_NOTIFICATION, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.SCREEN_FLASH_NOTIFICATION_COLOR, ANY_INTEGER_VALIDATOR)267         VALIDATORS.put(System.SCREEN_FLASH_NOTIFICATION_COLOR, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(System.PEAK_REFRESH_RATE, NON_NEGATIVE_FLOAT_VALIDATOR)268         VALIDATORS.put(System.PEAK_REFRESH_RATE, NON_NEGATIVE_FLOAT_VALIDATOR);
VALIDATORS.put(System.MIN_REFRESH_RATE, NON_NEGATIVE_FLOAT_VALIDATOR)269         VALIDATORS.put(System.MIN_REFRESH_RATE, NON_NEGATIVE_FLOAT_VALIDATOR);
VALIDATORS.put(System.NOTIFICATION_COOLDOWN_ENABLED, BOOLEAN_VALIDATOR)270         VALIDATORS.put(System.NOTIFICATION_COOLDOWN_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.NOTIFICATION_COOLDOWN_ALL, BOOLEAN_VALIDATOR)271         VALIDATORS.put(System.NOTIFICATION_COOLDOWN_ALL, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.NOTIFICATION_COOLDOWN_VIBRATE_UNLOCKED, BOOLEAN_VALIDATOR)272         VALIDATORS.put(System.NOTIFICATION_COOLDOWN_VIBRATE_UNLOCKED, BOOLEAN_VALIDATOR);
VALIDATORS.put(System.PREFERRED_REGION, ANY_STRING_VALIDATOR)273         VALIDATORS.put(System.PREFERRED_REGION, ANY_STRING_VALIDATOR);
VALIDATORS.put(System.CV_ENABLED, new InclusiveIntegerRangeValidator(0, 1))274         VALIDATORS.put(System.CV_ENABLED,
275                 new InclusiveIntegerRangeValidator(0, 1));
276     }
277 }
278