Add flags to retrieve values from phenotype for DynamicShortcuts.

Add getInteger to Flags class.

bug:30189449
Change-Id: Ie74ae57cd8b0010f7ec6bb8a916fbf42cee8ab40
diff --git a/src-bind/com/android/contactsbind/experiments/Flags.java b/src-bind/com/android/contactsbind/experiments/Flags.java
index 5bf47e8..e2bfb5c 100644
--- a/src-bind/com/android/contactsbind/experiments/Flags.java
+++ b/src-bind/com/android/contactsbind/experiments/Flags.java
@@ -30,7 +30,7 @@
 
     private static Flags sInstance;
 
-    private Map<String,Boolean> mMap;
+    private Map<String, Object> mMap;
 
     public static Flags getInstance(Context context) {
         if (sInstance == null) {
@@ -44,6 +44,10 @@
     }
 
     public boolean getBoolean(String flagName) {
-        return mMap.containsKey(flagName) ? mMap.get(flagName) : false;
+        return mMap.containsKey(flagName) ? (boolean) mMap.get(flagName) : false;
+    }
+
+    public int getInteger(String flagName) {
+        return mMap.containsKey(flagName) ? ((Integer) mMap.get(flagName)).intValue() : 0;
     }
 }
diff --git a/src/com/android/contacts/DynamicShortcuts.java b/src/com/android/contacts/DynamicShortcuts.java
index 2e873d8..72e5fec 100644
--- a/src/com/android/contacts/DynamicShortcuts.java
+++ b/src/com/android/contacts/DynamicShortcuts.java
@@ -78,23 +78,6 @@
     private static final int LONG_LABEL_MAX_LENGTH = 30;
     private static final int MAX_SHORTCUTS = 3;
 
-    /**
-     * How long  to wait after a change to the contacts content uri before updating the shortcuts
-     * This increases the likelihood that multiple updates will be coalesced in the case that
-     * the updates are happening rapidly
-     *
-     * TODO: this should probably be externally configurable to make it easier to manually test the
-     * behavior
-     */
-    private static final int CONTENT_CHANGE_MIN_UPDATE_DELAY_MILLIS = 10000; // 10 seconds
-    /**
-     * The maximum time to wait before updating the shortcuts that may have changed.
-     *
-     * TODO: this should probably be externally configurable to make it easier to manually test the
-     * behavior
-     */
-    private static final int CONTENT_CHANGE_MAX_UPDATE_DELAY_MILLIS = 24*60*60*1000; // 1 day
-
     // The spec specifies that it should be 44dp @ xxxhdpi
     // Note that ShortcutManager.getIconMaxWidth and ShortcutManager.getMaxHeight return different
     // (larger) values.
@@ -110,6 +93,8 @@
     private final ShortcutManager mShortcutManager;
     private int mShortLabelMaxLength = SHORT_LABEL_MAX_LENGTH;
     private int mLongLabelMaxLength = LONG_LABEL_MAX_LENGTH;
+    private final int mContentChangeMinUpdateDelay;
+    private final int mContentChangeMaxUpdateDelay;
 
     public DynamicShortcuts(Context context) {
         this(context, context.getContentResolver(), (ShortcutManager)
@@ -121,6 +106,10 @@
         mContext = context;
         mContentResolver = contentResolver;
         mShortcutManager = shortcutManager;
+        mContentChangeMinUpdateDelay = Flags.getInstance(mContext)
+                .getInteger(Experiments.DYNAMIC_MIN_CONTENT_CHANGE_UPDATE_DELAY_MILLIS);
+        mContentChangeMaxUpdateDelay = Flags.getInstance(mContext)
+                .getInteger(Experiments.DYNAMIC_MAX_CONTENT_CHANGE_UPDATE_DELAY_MILLIS);
     }
 
     @VisibleForTesting
@@ -365,8 +354,8 @@
                 // that complexity.
                 .addTriggerContentUri(new JobInfo.TriggerContentUri(ContactsContract.AUTHORITY_URI,
                         JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
-                .setTriggerContentUpdateDelay(CONTENT_CHANGE_MIN_UPDATE_DELAY_MILLIS)
-                .setTriggerContentMaxDelay(CONTENT_CHANGE_MAX_UPDATE_DELAY_MILLIS).build();
+                .setTriggerContentUpdateDelay(mContentChangeMinUpdateDelay)
+                .setTriggerContentMaxDelay(mContentChangeMaxUpdateDelay).build();
         final JobScheduler scheduler = (JobScheduler)
                 mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
         scheduler.schedule(job);
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
index 7d318af..2e3b6d2 100644
--- a/src/com/android/contacts/common/Experiments.java
+++ b/src/com/android/contacts/common/Experiments.java
@@ -25,6 +25,19 @@
      */
     public static final String DYNAMIC_SHORTCUTS = "Shortcuts__dynamic_shortcuts";
 
+    /**
+     * Flags for minimum content update time
+     */
+    public static final String DYNAMIC_MIN_CONTENT_CHANGE_UPDATE_DELAY_MILLIS =
+            "Shortcuts__dynamic_min_content_change_update_delay_millis";
+
+    /**
+     * Flags for maximum content update time
+     */
+    public static final String DYNAMIC_MAX_CONTENT_CHANGE_UPDATE_DELAY_MILLIS =
+            "Shortcuts__dynamic_max_content_change_update_delay_millis";
+
+
     private Experiments() {
     }
 }