cmsdk: Add support for more preference constraints

 * Add support for negation- prefix with !
 * Add requiresAction constraint, which checks if an application is
   available to resolve the given action
 * Fix issues with operations order
 * Add flag to remove a preference if it's intent can't be resolved
 * Add helper to allow setting minLines of a preference, since it's
   common for things to get weird with the kinds of behavior we
   are introducing everywhere
 * Add support for nuking *other* preferences. For example with
   Doze, many devices have custom features and a extra_settings
   panel which is redundant with the switch. Now we can trivially
   override the one we don't want.

Change-Id: Ibb14b05add56b403013e908db1105dce9d34faad
diff --git a/api/cm_current.txt b/api/cm_current.txt
index 3d77c1b..3dc18c7 100644
--- a/api/cm_current.txt
+++ b/api/cm_current.txt
@@ -738,6 +738,9 @@
 
   public static final class R.attr {
     ctor public R.attr();
+    field public static final int minSummaryLines = 1057030154; // 0x3f01000a
+    field public static final int replacesKey = 1057030153; // 0x3f010009
+    field public static final int requiresAction = 1057030152; // 0x3f010008
     field public static final int requiresConfig = 1057030148; // 0x3f010004
     field public static final int requiresFeature = 1057030147; // 0x3f010003
     field public static final int requiresOwner = 1057030150; // 0x3f010006
@@ -855,38 +858,41 @@
     method protected boolean persistBoolean(boolean);
   }
 
-  public class ConstraintsHelper {
-    ctor public ConstraintsHelper(android.content.Context, android.util.AttributeSet, Preference);
-    method public void applyConstraints();
-    method public static boolean hasSystemFeature(android.content.Context, java.lang.String);
-    method public static boolean isDozeAvailable(android.content.Context);
-    method public static boolean isPackageInstalled(android.content.Context, java.lang.String, boolean);
-    method public static boolean isVoiceCapable(android.content.Context);
-    method public void setAvailable(boolean);
+  public class SecureSettingSwitchPreference extends cyanogenmod.preference.SelfRemovingSwitchPreference {
+    ctor public SecureSettingSwitchPreference(android.content.Context, android.util.AttributeSet, int);
+    ctor public SecureSettingSwitchPreference(android.content.Context, android.util.AttributeSet);
+    ctor public SecureSettingSwitchPreference(android.content.Context);
+    method protected boolean getPersistedBoolean(boolean);
+    method protected boolean isPersisted();
+    method protected boolean persistBoolean(boolean);
   }
 
   public class SelfRemovingListPreference extends ListPreference {
     ctor public SelfRemovingListPreference(android.content.Context, android.util.AttributeSet, int);
     ctor public SelfRemovingListPreference(android.content.Context, android.util.AttributeSet);
     ctor public SelfRemovingListPreference(android.content.Context);
+    method public boolean isAvailable();
     method public void onBindViewHolder(PreferenceViewHolder);
-    method protected void setAvailable(boolean);
+    method public void setAvailable(boolean);
   }
 
   public class SelfRemovingPreference extends Preference {
+    ctor public SelfRemovingPreference(android.content.Context, android.util.AttributeSet, int, int);
     ctor public SelfRemovingPreference(android.content.Context, android.util.AttributeSet, int);
     ctor public SelfRemovingPreference(android.content.Context, android.util.AttributeSet);
     ctor public SelfRemovingPreference(android.content.Context);
+    method public boolean isAvailable();
     method public void onBindViewHolder(PreferenceViewHolder);
-    method protected void setAvailable(boolean);
+    method public void setAvailable(boolean);
   }
 
   public class SelfRemovingSwitchPreference extends SwitchPreference {
     ctor public SelfRemovingSwitchPreference(android.content.Context, android.util.AttributeSet, int);
     ctor public SelfRemovingSwitchPreference(android.content.Context, android.util.AttributeSet);
     ctor public SelfRemovingSwitchPreference(android.content.Context);
+    method public boolean isAvailable();
     method public void onBindViewHolder(PreferenceViewHolder);
-    method protected void setAvailable(boolean);
+    method public void setAvailable(boolean);
   }
 
   public class SystemSettingSwitchPreference extends cyanogenmod.preference.SelfRemovingSwitchPreference {
@@ -898,15 +904,6 @@
     method protected boolean persistBoolean(boolean);
   }
 
-  public class SecureSettingSwitchPreference extends cyanogenmod.preference.SelfRemovingSwitchPreference {
-    ctor public SecureSettingSwitchPreference(android.content.Context, android.util.AttributeSet, int);
-    ctor public SecureSettingSwitchPreference(android.content.Context, android.util.AttributeSet);
-    ctor public SecureSettingSwitchPreference(android.content.Context);
-    method protected boolean getPersistedBoolean(boolean);
-    method protected boolean isPersisted();
-    method protected boolean persistBoolean(boolean);
-  }
-
 }
 
 package cyanogenmod.profiles {