[MS62.1] Start NetworkStatsService from the module

NetworkStatsService is going to be moved into Connectivity mainlne
module and it will be not visible to SystemServiceResistry after
migration done. Thus:
1. Register service in NetworkStatsServiceInitialalizer, a separate
   initializer is needed because the service needs to be created
   before NetworkPolicyManagerService's initialization.
2. Call SystemReady at PHASE_ACTIVITY_MANAGER_READY phase where
   it needs to be ready before StatsPullAtomService pulls at
   PHASE_THIRD_PARTY_APPS_CAN_START.
3. Register manager in ConnectivityFrameworkInitializerTiramisu
   instead of SystemServiceRegistery.

Test: atest FrameworksNetTests CtsNetTestCases NetworkUsageStatsTest
Bug: 204830222
  (cherry-picked from ag/16688794)
Change-Id: I95020d816ed613ce3480a0720a5b71dcdc7fab72
Merged-In: I95020d816ed613ce3480a0720a5b71dcdc7fab72
This commit is contained in:
Junyu Lai
2022-01-17 17:37:19 +00:00
committed by junyulai
parent 07dee30e0c
commit c3c278779f
3 changed files with 17 additions and 33 deletions

View File

@@ -44,7 +44,6 @@ import android.app.timezonedetector.TimeZoneDetectorImpl;
import android.app.trust.TrustManager; import android.app.trust.TrustManager;
import android.app.usage.IStorageStatsManager; import android.app.usage.IStorageStatsManager;
import android.app.usage.IUsageStatsManager; import android.app.usage.IUsageStatsManager;
import android.app.usage.NetworkStatsManager;
import android.app.usage.StorageStatsManager; import android.app.usage.StorageStatsManager;
import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManager;
import android.apphibernation.AppHibernationManager; import android.apphibernation.AppHibernationManager;
@@ -129,7 +128,6 @@ import android.net.ConnectivityFrameworkInitializerTiramisu;
import android.net.EthernetManager; import android.net.EthernetManager;
import android.net.IEthernetManager; import android.net.IEthernetManager;
import android.net.INetworkPolicyManager; import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService;
import android.net.IPacProxyManager; import android.net.IPacProxyManager;
import android.net.IVpnManager; import android.net.IVpnManager;
import android.net.NetworkPolicyManager; import android.net.NetworkPolicyManager;
@@ -967,17 +965,6 @@ public final class SystemServiceRegistry {
return new UsageStatsManager(ctx.getOuterContext(), service); return new UsageStatsManager(ctx.getOuterContext(), service);
}}); }});
registerService(Context.NETWORK_STATS_SERVICE, NetworkStatsManager.class,
new CachedServiceFetcher<NetworkStatsManager>() {
@Override
public NetworkStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException {
// TODO: Replace with an initializer in the module, see
// {@code ConnectivityFrameworkInitializer}.
final INetworkStatsService service = INetworkStatsService.Stub.asInterface(
ServiceManager.getServiceOrThrow(Context.NETWORK_STATS_SERVICE));
return new NetworkStatsManager(ctx.getOuterContext(), service);
}});
registerService(Context.PERSISTENT_DATA_BLOCK_SERVICE, PersistentDataBlockManager.class, registerService(Context.PERSISTENT_DATA_BLOCK_SERVICE, PersistentDataBlockManager.class,
new StaticServiceFetcher<PersistentDataBlockManager>() { new StaticServiceFetcher<PersistentDataBlockManager>() {
@Override @Override

View File

@@ -18,6 +18,7 @@ package android.net;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.app.SystemServiceRegistry; import android.app.SystemServiceRegistry;
import android.app.usage.NetworkStatsManager;
import android.content.Context; import android.content.Context;
import android.net.nsd.INsdManager; import android.net.nsd.INsdManager;
import android.net.nsd.NsdManager; import android.net.nsd.NsdManager;
@@ -57,5 +58,15 @@ public final class ConnectivityFrameworkInitializerTiramisu {
return new IpSecManager(context, service); return new IpSecManager(context, service);
} }
); );
SystemServiceRegistry.registerContextAwareService(
Context.NETWORK_STATS_SERVICE,
NetworkStatsManager.class,
(context, serviceBinder) -> {
INetworkStatsService service =
INetworkStatsService.Stub.asInterface(serviceBinder);
return new NetworkStatsManager(context, service);
}
);
} }
} }

View File

@@ -54,7 +54,6 @@ import android.hardware.display.DisplayManagerInternal;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.ConnectivityModuleConnector; import android.net.ConnectivityModuleConnector;
import android.net.NetworkStackClient; import android.net.NetworkStackClient;
import android.net.TrafficStats;
import android.os.BaseBundle; import android.os.BaseBundle;
import android.os.Binder; import android.os.Binder;
import android.os.Build; import android.os.Build;
@@ -141,7 +140,6 @@ import com.android.server.media.MediaRouterService;
import com.android.server.media.metrics.MediaMetricsManagerService; import com.android.server.media.metrics.MediaMetricsManagerService;
import com.android.server.media.projection.MediaProjectionManagerService; import com.android.server.media.projection.MediaProjectionManagerService;
import com.android.server.net.NetworkPolicyManagerService; import com.android.server.net.NetworkPolicyManagerService;
import com.android.server.net.NetworkStatsService;
import com.android.server.net.watchlist.NetworkWatchlistService; import com.android.server.net.watchlist.NetworkWatchlistService;
import com.android.server.notification.NotificationManagerService; import com.android.server.notification.NotificationManagerService;
import com.android.server.oemlock.OemLockService; import com.android.server.oemlock.OemLockService;
@@ -379,6 +377,8 @@ public final class SystemServer implements Dumpable {
"com.android.server.media.MediaResourceMonitorService"; "com.android.server.media.MediaResourceMonitorService";
private static final String CONNECTIVITY_SERVICE_INITIALIZER_CLASS = private static final String CONNECTIVITY_SERVICE_INITIALIZER_CLASS =
"com.android.server.ConnectivityServiceInitializer"; "com.android.server.ConnectivityServiceInitializer";
private static final String NETWORK_STATS_SERVICE_INITIALIZER_CLASS =
"com.android.server.NetworkStatsServiceInitializer";
private static final String IP_CONNECTIVITY_METRICS_CLASS = private static final String IP_CONNECTIVITY_METRICS_CLASS =
"com.android.server.connectivity.IpConnectivityMetrics"; "com.android.server.connectivity.IpConnectivityMetrics";
private static final String MEDIA_COMMUNICATION_SERVICE_CLASS = private static final String MEDIA_COMMUNICATION_SERVICE_CLASS =
@@ -1336,7 +1336,6 @@ public final class SystemServer implements Dumpable {
NetworkManagementService networkManagement = null; NetworkManagementService networkManagement = null;
VpnManagerService vpnManager = null; VpnManagerService vpnManager = null;
VcnManagementService vcnManagement = null; VcnManagementService vcnManagement = null;
NetworkStatsService networkStats = null;
NetworkPolicyManagerService networkPolicy = null; NetworkPolicyManagerService networkPolicy = null;
WindowManagerService wm = null; WindowManagerService wm = null;
SerialService serial = null; SerialService serial = null;
@@ -1825,13 +1824,10 @@ public final class SystemServer implements Dumpable {
t.traceEnd(); t.traceEnd();
t.traceBegin("StartNetworkStatsService"); t.traceBegin("StartNetworkStatsService");
try { // This has to be called before NetworkPolicyManager because NetworkPolicyManager
networkStats = NetworkStatsService.create(context); // needs to take NetworkStatsService to initialize.
ServiceManager.addService(Context.NETWORK_STATS_SERVICE, networkStats); mSystemServiceManager.startServiceFromJar(NETWORK_STATS_SERVICE_INITIALIZER_CLASS,
TrafficStats.init(context); CONNECTIVITY_SERVICE_APEX_PATH);
} catch (Throwable e) {
reportWtf("starting NetworkStats Service", e);
}
t.traceEnd(); t.traceEnd();
t.traceBegin("StartNetworkPolicyManagerService"); t.traceBegin("StartNetworkPolicyManagerService");
@@ -2648,7 +2644,6 @@ public final class SystemServer implements Dumpable {
// These are needed to propagate to the runnable below. // These are needed to propagate to the runnable below.
final NetworkManagementService networkManagementF = networkManagement; final NetworkManagementService networkManagementF = networkManagement;
final NetworkStatsService networkStatsF = networkStats;
final NetworkPolicyManagerService networkPolicyF = networkPolicy; final NetworkPolicyManagerService networkPolicyF = networkPolicy;
final CountryDetectorService countryDetectorF = countryDetector; final CountryDetectorService countryDetectorF = countryDetector;
final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater; final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater;
@@ -2745,15 +2740,6 @@ public final class SystemServer implements Dumpable {
.networkScoreAndNetworkManagementServiceReady(); .networkScoreAndNetworkManagementServiceReady();
} }
t.traceEnd(); t.traceEnd();
t.traceBegin("MakeNetworkStatsServiceReady");
try {
if (networkStatsF != null) {
networkStatsF.systemReady();
}
} catch (Throwable e) {
reportWtf("making Network Stats Service ready", e);
}
t.traceEnd();
t.traceBegin("MakeConnectivityServiceReady"); t.traceBegin("MakeConnectivityServiceReady");
try { try {
if (connectivityF != null) { if (connectivityF != null) {