From 646ff54fc95229dad5a92b5112ef3324c0db7677 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Mon, 2 Nov 2020 11:53:16 +0800 Subject: [PATCH 1/2] Use local defined constants for notification channels ConnectivityService mainline module cannot call the members inside SystemNotificationChannels.java. So use the local defined constants instead. Bug: 172040168 Test: atest FrameworksNetTests Test: Manual test NO_INTERNET, SIGN_IN, PARTIAL_CONNECTIVITY, VPN_ALWAYS_ON notifications. Change-Id: I223b207c4346e8239dee78e50dd2b0532a3e55b0 --- .../connectivity/NetworkNotificationManager.java | 11 +++++++---- .../java/com/android/server/connectivity/Vpn.java | 4 ++-- .../com/android/server/net/LockdownVpnTracker.java | 5 +++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java index 3d22d6d37c232..26eca19b90d37 100644 --- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java +++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java @@ -41,7 +41,6 @@ import android.widget.Toast; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; -import com.android.internal.notification.SystemNotificationChannels; public class NetworkNotificationManager { @@ -72,7 +71,12 @@ public class NetworkNotificationManager { private static final String TAG = NetworkNotificationManager.class.getSimpleName(); private static final boolean DBG = true; - private static final boolean VDBG = false; + + // Notification channels used by ConnectivityService mainline module, it should be aligned with + // SystemNotificationChannels. + public static final String NOTIFICATION_NETWORK_STATUS = "NETWORK_STATUS"; + public static final String NOTIFICATION_NETWORK_ALERTS = "NETWORK_ALERTS"; + public static final String NOTIFICATION_VPN = "VPN"; // The context is for the current user (system server) private final Context mContext; @@ -255,8 +259,7 @@ public class NetworkNotificationManager { // the tag. final boolean hasPreviousNotification = previousNotifyType != null; final String channelId = (highPriority && !hasPreviousNotification) - ? SystemNotificationChannels.NETWORK_ALERTS - : SystemNotificationChannels.NETWORK_STATUS; + ? NOTIFICATION_NETWORK_ALERTS : NOTIFICATION_NETWORK_STATUS; Notification.Builder builder = new Notification.Builder(mContext, channelId) .setWhen(System.currentTimeMillis()) .setShowWhen(notifyType == NotificationType.NETWORK_SWITCH) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 1a83272f50779..dc4835a9c3ded 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -26,6 +26,7 @@ import static android.net.RouteInfo.RTN_THROW; import static android.net.RouteInfo.RTN_UNREACHABLE; import static com.android.internal.util.Preconditions.checkNotNull; +import static com.android.server.connectivity.NetworkNotificationManager.NOTIFICATION_VPN; import android.Manifest; import android.annotation.NonNull; @@ -110,7 +111,6 @@ import com.android.internal.net.LegacyVpnInfo; import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnInfo; import com.android.internal.net.VpnProfile; -import com.android.internal.notification.SystemNotificationChannels; import com.android.internal.util.ArrayUtils; import com.android.server.ConnectivityService; import com.android.server.DeviceIdleInternal; @@ -1942,7 +1942,7 @@ public class Vpn { final PendingIntent configIntent = mSystemServices.pendingIntentGetActivityAsUser( intent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT, user); final Notification.Builder builder = - new Notification.Builder(mContext, SystemNotificationChannels.VPN) + new Notification.Builder(mContext, NOTIFICATION_VPN) .setSmallIcon(R.drawable.vpn_connected) .setContentTitle(mContext.getString(R.string.vpn_lockdown_disconnected)) .setContentText(mContext.getString(R.string.vpn_lockdown_config)) diff --git a/services/core/java/com/android/server/net/LockdownVpnTracker.java b/services/core/java/com/android/server/net/LockdownVpnTracker.java index 06cebac501e75..661d38df12aef 100644 --- a/services/core/java/com/android/server/net/LockdownVpnTracker.java +++ b/services/core/java/com/android/server/net/LockdownVpnTracker.java @@ -18,6 +18,8 @@ package com.android.server.net; import static android.provider.Settings.ACTION_VPN_SETTINGS; +import static com.android.server.connectivity.NetworkNotificationManager.NOTIFICATION_VPN; + import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; @@ -42,7 +44,6 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnProfile; -import com.android.internal.notification.SystemNotificationChannels; import com.android.server.ConnectivityService; import com.android.server.EventLogTags; import com.android.server.connectivity.Vpn; @@ -256,7 +257,7 @@ public class LockdownVpnTracker { private void showNotification(int titleRes, int iconRes) { final Notification.Builder builder = - new Notification.Builder(mContext, SystemNotificationChannels.VPN) + new Notification.Builder(mContext, NOTIFICATION_VPN) .setWhen(0) .setSmallIcon(iconRes) .setContentTitle(mContext.getString(titleRes)) From 3062e1e869ad33fccf6c5889afa8fbed2ceb8414 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Mon, 2 Nov 2020 16:05:02 +0800 Subject: [PATCH 2/2] Use hasIpv[4|6]DefaultRoute instead of hasIPv[4|6]DefaultRoute ConnectivityService is going to be a mainline module, it can only use formal APIs or @SystemApi. So use @SystemApi hasIpv4DefaultRoute and hasIpv6DefaultRoute instead of hasIPv4DefaultRoute and hasIPv6DefaultRoute. Bug: 172183305 Test: atest FrameworksNetTests Change-Id: I67e5fa234fbb6d0b9739ae3295eb0b0ea108f582 --- .../core/java/com/android/server/ConnectivityService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index da2a3de9f9719..88de82f08e8aa 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -6432,8 +6432,8 @@ public class ConnectivityService extends IConnectivityManager.Stub && !nai.networkAgentConfig.allowBypass && nc.getOwnerUid() != Process.SYSTEM_UID && lp.getInterfaceName() != null - && (lp.hasIPv4DefaultRoute() || lp.hasIpv4UnreachableDefaultRoute()) - && (lp.hasIPv6DefaultRoute() || lp.hasIpv6UnreachableDefaultRoute()); + && (lp.hasIpv4DefaultRoute() || lp.hasIpv4UnreachableDefaultRoute()) + && (lp.hasIpv6DefaultRoute() || lp.hasIpv6UnreachableDefaultRoute()); } private void updateUids(NetworkAgentInfo nai, NetworkCapabilities prevNc,