Fix the reporting of NO_CONNECTIVITY.

A refactoring of handleDisconnect instroduced a bug - we were reporting
NO_CONNECTIVITY after any non-primary network (supl, mms, hipri) was lost.

bug:2395006

Change-Id: Ifa9e008872ec646981a35f2c316120cb9685a6a4
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 45eb672..3d7025d 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -811,12 +811,15 @@
                     info.getExtraInfo());
         }
 
-        NetworkStateTracker newNet = tryFailover(prevNetType);
-        if (newNet != null) {
-            NetworkInfo switchTo = newNet.getNetworkInfo();
-            intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
-        } else {
-            intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
+        NetworkStateTracker newNet = null;
+        if (mNetAttributes[prevNetType].isDefault()) {
+            newNet = tryFailover(prevNetType);
+            if (newNet != null) {
+                NetworkInfo switchTo = newNet.getNetworkInfo();
+                intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
+            } else {
+                intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
+            }
         }
         // do this before we broadcast the change
         handleConnectivityChange();
@@ -831,7 +834,7 @@
         }
     }
 
-    // returns -1 if no failover available
+    // returns null if no failover available
     private NetworkStateTracker tryFailover(int prevNetType) {
         /*
          * If this is a default network, check if other defaults are available
@@ -953,13 +956,17 @@
             info.setFailover(false);
         }
 
-        NetworkStateTracker newNet = tryFailover(info.getType());
-        if (newNet != null) {
-            NetworkInfo switchTo = newNet.getNetworkInfo();
-            intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
-        } else {
-            intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
+        NetworkStateTracker newNet = null;
+        if (mNetAttributes[info.getType()].isDefault()) {
+            newNet = tryFailover(info.getType());
+            if (newNet != null) {
+                NetworkInfo switchTo = newNet.getNetworkInfo();
+                intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
+            } else {
+                intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
+            }
         }
+
         // do this before we broadcast the change
         handleConnectivityChange();