diff options
Diffstat (limited to 'services/java/com/android/server/SystemServer.java')
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 4552bc678802..cc8c75194031 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -47,7 +47,9 @@ import android.database.sqlite.SQLiteCompatibilityWalFlags; import android.database.sqlite.SQLiteGlobal; import android.graphics.GraphicsStatsService; import android.hardware.display.DisplayManagerInternal; +import android.net.ConnectivityManager; import android.net.ConnectivityModuleConnector; +import android.net.IConnectivityManager; import android.net.NetworkStackClient; import android.os.BaseBundle; import android.os.Binder; @@ -103,7 +105,6 @@ import com.android.server.camera.CameraServiceProxy; import com.android.server.clipboard.ClipboardService; import com.android.server.compat.PlatformCompat; import com.android.server.compat.PlatformCompatNative; -import com.android.server.connectivity.IpConnectivityMetrics; import com.android.server.contentcapture.ContentCaptureManagerInternal; import com.android.server.coverage.CoverageService; import com.android.server.devicepolicy.DevicePolicyManagerService; @@ -302,6 +303,10 @@ public final class SystemServer { "com.android.server.blob.BlobStoreManagerService"; private static final String ROLLBACK_MANAGER_SERVICE_CLASS = "com.android.server.rollback.RollbackManagerService"; + private static final String CONNECTIVITY_SERVICE_INITIALIZER_CLASS = + "com.android.server.ConnectivityServiceInitializer"; + private static final String IP_CONNECTIVITY_METRICS_CLASS = + "com.android.server.connectivity.IpConnectivityMetrics"; private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector"; @@ -1015,7 +1020,7 @@ public final class SystemServer { IpSecService ipSecService = null; NetworkStatsService networkStats = null; NetworkPolicyManagerService networkPolicy = null; - ConnectivityService connectivity = null; + IConnectivityManager connectivity = null; NsdService serviceDiscovery = null; WindowManagerService wm = null; SerialService serial = null; @@ -1205,7 +1210,7 @@ public final class SystemServer { } t.traceBegin("IpConnectivityMetrics"); - mSystemServiceManager.startService(IpConnectivityMetrics.class); + mSystemServiceManager.startService(IP_CONNECTIVITY_METRICS_CLASS); t.traceEnd(); t.traceBegin("NetworkWatchlistService"); @@ -1531,16 +1536,15 @@ public final class SystemServer { } t.traceBegin("StartConnectivityService"); - try { - connectivity = new ConnectivityService( - context, networkManagement, networkStats, networkPolicy); - ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity, - /* allowIsolated= */ false, - DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL); - networkPolicy.bindConnectivityManager(connectivity); - } catch (Throwable e) { - reportWtf("starting Connectivity Service", e); - } + // This has to be called after NetworkManagementService, NetworkStatsService + // and NetworkPolicyManager because ConnectivityService needs to take these + // services to initialize. + // TODO: Dynamically load service-connectivity.jar by using startServiceFromJar. + mSystemServiceManager.startService(CONNECTIVITY_SERVICE_INITIALIZER_CLASS); + connectivity = IConnectivityManager.Stub.asInterface( + ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); + // TODO: Use ConnectivityManager instead of ConnectivityService. + networkPolicy.bindConnectivityManager(connectivity); t.traceEnd(); t.traceBegin("StartNsdService"); @@ -2217,7 +2221,6 @@ public final class SystemServer { final NetworkManagementService networkManagementF = networkManagement; final NetworkStatsService networkStatsF = networkStats; final NetworkPolicyManagerService networkPolicyF = networkPolicy; - final ConnectivityService connectivityF = connectivity; final CountryDetectorService countryDetectorF = countryDetector; final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater; final InputManagerService inputManagerF = inputManager; @@ -2226,6 +2229,8 @@ public final class SystemServer { final MmsServiceBroker mmsServiceF = mmsService; final IpSecService ipSecServiceF = ipSecService; final WindowManagerService windowManagerF = wm; + final ConnectivityManager connectivityF = (ConnectivityManager) + context.getSystemService(Context.CONNECTIVITY_SERVICE); // We now tell the activity manager it is okay to run third party // code. It will call back into us once it has gotten to the state |