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.