Make the NTP Cache max-age gservices-settable

Trying to make Throttle polling more energy efficient.

bug:2708119
Change-Id: I2b75639e202dcbcee11047c43407a22de04ce350
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index e8c09b0..9f19f11 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3332,6 +3332,14 @@
          */
         public static final String THROTTLE_HELP_URI = "throttle_help_uri";
 
+        /**
+         * The length of time in Sec that we allow our notion of NTP time
+         * to be cached before we refresh it
+         * @hide
+         */
+        public static final String THROTTLE_MAX_NTP_CACHE_AGE_SEC =
+                "throttle_max_ntp_cache_age_sec";
+
 
         /**
          * @hide
diff --git a/services/java/com/android/server/ThrottleService.java b/services/java/com/android/server/ThrottleService.java
index 23c1adc..f0b2210 100644
--- a/services/java/com/android/server/ThrottleService.java
+++ b/services/java/com/android/server/ThrottleService.java
@@ -197,6 +197,8 @@
                     Settings.Secure.THROTTLE_NOTIFICATION_TYPE), false, this);
             resolver.registerContentObserver(Settings.Secure.getUriFor(
                     Settings.Secure.THROTTLE_HELP_URI), false, this);
+            resolver.registerContentObserver(Settings.Secure.getUriFor(
+                    Settings.Secure.THROTTLE_MAX_NTP_CACHE_AGE_SEC), false, this);
         }
 
         @Override
@@ -432,10 +434,13 @@
             mPolicyNotificationsAllowedMask = Settings.Secure.getInt(mContext.getContentResolver(),
                     Settings.Secure.THROTTLE_NOTIFICATION_TYPE, defaultNotificationType);
 
+            mMaxNtpCacheAgeSec = Settings.Secure.getInt(mContext.getContentResolver(),
+                    Settings.Secure.THROTTLE_MAX_NTP_CACHE_AGE_SEC, MAX_NTP_CACHE_AGE_SEC);
+
             Slog.d(TAG, "onPolicyChanged testing=" + testing +", period=" + mPolicyPollPeriodSec +
                     ", threshold=" + mPolicyThreshold + ", value=" + mPolicyThrottleValue +
                     ", resetDay=" + mPolicyResetDay + ", noteType=" +
-                    mPolicyNotificationsAllowedMask);
+                    mPolicyNotificationsAllowedMask + ", maxNtpCacheAge=" + mMaxNtpCacheAgeSec);
 
             // force updates
             mThrottleIndex = THROTTLE_INDEX_UNINITIALIZED;
@@ -715,8 +720,9 @@
         getBestTime();
     }
 
-    private static final int MAX_NTP_CACHE_AGE = 30 * 1000;
+    private static final int MAX_NTP_CACHE_AGE_SEC = 60 * 60 * 24; // 1 day
     private static final int MAX_NTP_FETCH_WAIT = 10 * 1000;
+    private int mMaxNtpCacheAgeSec = MAX_NTP_CACHE_AGE_SEC;
     private long cachedNtp;
     private long cachedNtpTimestamp;
 
@@ -724,7 +730,7 @@
         if (mNtpServer != null) {
             if (mNtpActive) {
                 long ntpAge = SystemClock.elapsedRealtime() - cachedNtpTimestamp;
-                if (ntpAge < MAX_NTP_CACHE_AGE) {
+                if (ntpAge < mMaxNtpCacheAgeSec * 1000) {
                     if (VDBG) Slog.v(TAG, "using cached time");
                     return cachedNtp + ntpAge;
                 }
@@ -1091,6 +1097,7 @@
                 " seconds.");
         pw.println("Polling every " + mPolicyPollPeriodSec + " seconds");
         pw.println("Current Throttle Index is " + mThrottleIndex);
+        pw.println("Max NTP Cache Age is " + mMaxNtpCacheAgeSec);
 
         for (int i = 0; i < mRecorder.getPeriodCount(); i++) {
             pw.println(" Period[" + i + "] - read:" + mRecorder.getPeriodRx(i) + ", written:" +