Network Switching Notifications: add unit tests

BUG: 31132499
Change-Id: I9c50a59fe48efdcb51d2517f0a756691700c3ebe
diff --git a/services/core/java/com/android/server/connectivity/LingerMonitor.java b/services/core/java/com/android/server/connectivity/LingerMonitor.java
index 064a904..1ffccdd 100644
--- a/services/core/java/com/android/server/connectivity/LingerMonitor.java
+++ b/services/core/java/com/android/server/connectivity/LingerMonitor.java
@@ -17,14 +17,11 @@
 package com.android.server.connectivity;
 
 import android.app.PendingIntent;
-import android.net.ConnectivityManager;
 import android.net.NetworkCapabilities;
-import android.net.Uri;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.os.UserHandle;
-import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseArray;
@@ -33,6 +30,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.MessageUtils;
 import com.android.server.connectivity.NetworkNotificationManager;
 import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
@@ -52,13 +50,15 @@
     private static final boolean VDBG = false;
     private static final String TAG = LingerMonitor.class.getSimpleName();
 
-    private static final HashMap<String, Integer> sTransportNames = makeTransportToNameMap();
-    private static final Intent CELLULAR_SETTINGS = new Intent().setComponent(new ComponentName(
+    private static final HashMap<String, Integer> TRANSPORT_NAMES = makeTransportToNameMap();
+    @VisibleForTesting
+    public static final Intent CELLULAR_SETTINGS = new Intent().setComponent(new ComponentName(
             "com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
 
-    private static final int NOTIFY_TYPE_NONE = 0;
-    private static final int NOTIFY_TYPE_NOTIFICATION = 1;
-    private static final int NOTIFY_TYPE_TOAST = 2;
+    @VisibleForTesting
+    public static final int NOTIFY_TYPE_NONE         = 0;
+    public static final int NOTIFY_TYPE_NOTIFICATION = 1;
+    public static final int NOTIFY_TYPE_TOAST        = 2;
 
     private static SparseArray<String> sNotifyTypeNames = MessageUtils.findMessageNames(
             new Class[] { LingerMonitor.class }, new String[]{ "NOTIFY_TYPE_" });
@@ -106,7 +106,8 @@
         return mEverNotified.get(nai.network.netId, false);
     }
 
-    private boolean isNotificationEnabled(NetworkAgentInfo fromNai, NetworkAgentInfo toNai) {
+    @VisibleForTesting
+    public boolean isNotificationEnabled(NetworkAgentInfo fromNai, NetworkAgentInfo toNai) {
         // TODO: Evaluate moving to CarrierConfigManager.
         String[] notifySwitches = mContext.getResources().getStringArray(
                 com.android.internal.R.array.config_networkNotifySwitches);
@@ -122,8 +123,8 @@
                 Log.e(TAG, "Invalid network switch notification configuration: " + notifySwitch);
                 continue;
             }
-            int fromTransport = sTransportNames.get("TRANSPORT_" + transports[0]);
-            int toTransport = sTransportNames.get("TRANSPORT_" + transports[1]);
+            int fromTransport = TRANSPORT_NAMES.get("TRANSPORT_" + transports[0]);
+            int toTransport = TRANSPORT_NAMES.get("TRANSPORT_" + transports[1]);
             if (hasTransport(fromNai, fromTransport) && hasTransport(toNai, toTransport)) {
                 return true;
             }
@@ -133,12 +134,14 @@
     }
 
     private void showNotification(NetworkAgentInfo fromNai, NetworkAgentInfo toNai) {
-        PendingIntent pendingIntent = PendingIntent.getActivityAsUser(
-                mContext, 0, CELLULAR_SETTINGS, PendingIntent.FLAG_CANCEL_CURRENT, null,
-                UserHandle.CURRENT);
-
         mNotifier.showNotification(fromNai.network.netId, NotificationType.NETWORK_SWITCH,
-                fromNai, toNai, pendingIntent, true);
+                fromNai, toNai, createNotificationIntent(), true);
+    }
+
+    @VisibleForTesting
+    protected PendingIntent createNotificationIntent() {
+        return PendingIntent.getActivityAsUser(mContext, 0, CELLULAR_SETTINGS,
+                PendingIntent.FLAG_CANCEL_CURRENT, null, UserHandle.CURRENT);
     }
 
     // Removes any notification that was put up as a result of switching to nai.