OSDN Git Service

Removing over-active NTP & XTRA assistance downloads
authorWyatt Riley <wyattriley@google.com>
Wed, 5 Oct 2016 19:03:03 +0000 (12:03 -0700)
committerWyatt Riley <wyattriley@google.com>
Thu, 6 Oct 2016 15:35:55 +0000 (15:35 +0000)
Restoring pre-Connectivity-Manager intended behavior of only
pending-network NTP & XTRA downloads restarting when
network connectivity returns

Bug: 31864876
Fixes: 31864876

Change-Id: I5b967e75c610277988e8e9cfa1e938c999333edb

services/core/java/com/android/server/location/GnssLocationProvider.java

index 7580cf4..ae98077 100644 (file)
@@ -452,8 +452,12 @@ public class GnssLocationProvider implements LocationProviderInterface {
             new ConnectivityManager.NetworkCallback() {
         @Override
         public void onAvailable(Network network) {
-            requestUtcTime();
-            xtraDownloadRequest();
+            if (mInjectNtpTimePending == STATE_PENDING_NETWORK) {
+                requestUtcTime();
+            }
+            if (mDownloadXtraDataPending == STATE_PENDING_NETWORK) {
+                xtraDownloadRequest();
+            }
         }
     };
 
@@ -1002,6 +1006,11 @@ public class GnssLocationProvider implements LocationProviderInterface {
     }
 
     private void handleDownloadXtraData() {
+        if (!mSupportsXtra) {
+            // native code reports xtra not supported, don't try
+            Log.d(TAG, "handleDownloadXtraData() called when Xtra not supported");
+            return;
+        }
         if (mDownloadXtraDataPending == STATE_DOWNLOADING) {
             // already downloading data
             return;
@@ -2125,9 +2134,7 @@ public class GnssLocationProvider implements LocationProviderInterface {
                     handleInjectNtpTime();
                     break;
                 case DOWNLOAD_XTRA_DATA:
-                    if (mSupportsXtra) {
-                        handleDownloadXtraData();
-                    }
+                    handleDownloadXtraData();
                     break;
                 case INJECT_NTP_TIME_FINISHED:
                     mInjectNtpTimePending = STATE_IDLE;