+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+
+# Some tests use thenThrow from Mockito which require information on
+# checked exceptions.
+-keepattributes Exceptions
+
# Keep all Fragments in this package, which are used by reflection.
--keep class com.android.settings.*Fragment
--keep class com.android.settings.*Picker
--keep class com.android.settings.*Settings
--keep class com.android.settings.wifi.*Settings
--keep class com.android.settings.deviceinfo.*
--keep class com.android.settings.bluetooth.*
--keep class com.android.settings.datausage.*
--keep class com.android.settings.applications.*
--keep class com.android.settings.inputmethod.*
--keep class com.android.settings.ResetNetwork
--keep class com.android.settings.ResetNetworkConfirm
--keep class com.android.settings.MasterClear
--keep class com.android.settings.MasterClearConfirm
--keep class com.android.settings.accounts.*
--keep class com.android.settings.fuelgauge.*
--keep class com.android.settings.users.*
--keep class com.android.settings.nfc.*
--keep class com.android.settings.notification.*
--keep class com.android.settings.overlay.FeatureFactoryImpl
--keep class com.android.settings.accessibility.*FragmentForSetupWizard
--keep class com.android.settings.display.*FragmentForSetupWizard
--keep class com.android.settings.display.NightDisplaySettings
-
-# Keep click responders
--keepclassmembers class com.android.settings.inputmethod.UserDictionaryAddWordActivity {
- *** onClick*(...);
-}
-
--keep public class * extends com.android.setupwizardlib.items.ItemHierarchy {
+-keep public class com.android.settings.** extends androidx.fragment.app.Fragment
+
+# Keep all preference controllers needed by slice and DashboardFragment.
+-keep class * extends com.android.settings.core.BasePreferenceController {
+ *;
+}
+
+-keep class * extends com.android.settings.core.TogglePreferenceController {
+ *;
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+ public void *(android.view.MenuItem);
+}
+
+# Keep setters in Views so that animations can still work.
+-keep public class * extends android.view.View {
+ public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+
+ void set*(***);
+ *** get*();
+}
+
+# Keep classes that may be inflated from XML.
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet);
+}
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int, int);
+}
+
+# Keep annotated classes or class members.
+-keep @androidx.annotation.Keep class *
+-keepclassmembers class * {
+ @androidx.annotation.Keep *;
+}
+
+# Keep specific fields used via reflection.
+-keepclassmembers class * {
+ public static ** SEARCH_INDEX_DATA_PROVIDER;
+ public static ** SUMMARY_PROVIDER_FACTORY;
+}
+-keep class androidx.core.app.CoreComponentFactory
+
+# Keep classes that implements CustomSliceable, which are used by reflection.
+-keepclasseswithmembers class * implements com.android.settings.slices.CustomSliceable {
+ public <init>(android.content.Context);
+}
+
+# Keep classes that extends SliceBackgroundWorker, which are used by reflection.
+-keepclasseswithmembers class * extends com.android.settings.slices.SliceBackgroundWorker {
+ public <init>(android.content.Context, android.net.Uri);
}