OSDN Git Service

Update NetworkScoreService to use SystemService
authorMehdi Alizadeh <mett@google.com>
Thu, 29 Mar 2018 00:34:24 +0000 (17:34 -0700)
committerRoshan Pius <rpius@google.com>
Fri, 6 Apr 2018 17:08:59 +0000 (17:08 +0000)
Bug: 29118511
Test: runtests.sh
Test: Ran integration tests
Test: Verified wifi assistant still works (Uses NetworkScorer).
Change-Id: I50a6bd5ab59fc69fcb331102ad80ec4bb0988c70

services/core/java/com/android/server/NetworkScoreService.java
services/java/com/android/server/SystemServer.java

index 33f7769..80d7ac9 100644 (file)
@@ -128,6 +128,30 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
         }
     };
 
+    public static final class Lifecycle extends SystemService {
+        private final NetworkScoreService mService;
+
+        public Lifecycle(Context context) {
+            super(context);
+            mService = new NetworkScoreService(context);
+        }
+
+        @Override
+        public void onStart() {
+            Log.i(TAG, "Registering " + Context.NETWORK_SCORE_SERVICE);
+            publishBinderService(Context.NETWORK_SCORE_SERVICE, mService);
+        }
+
+        @Override
+        public void onBootPhase(int phase) {
+            if (phase == PHASE_SYSTEM_SERVICES_READY) {
+                mService.systemReady();
+            } else if (phase == PHASE_BOOT_COMPLETED) {
+                mService.systemRunning();
+            }
+        }
+    }
+
     /**
      * Clears scores when the active scorer package is no longer valid and
      * manages the service connection.
index 6f50ee2..5519d22 100644 (file)
@@ -725,7 +725,6 @@ public final class SystemServer {
         NetworkStatsService networkStats = null;
         NetworkPolicyManagerService networkPolicy = null;
         ConnectivityService connectivity = null;
-        NetworkScoreService networkScore = null;
         NsdService serviceDiscovery= null;
         WindowManagerService wm = null;
         SerialService serial = null;
@@ -1090,12 +1089,7 @@ public final class SystemServer {
             }
 
             traceBeginAndSlog("StartNetworkScoreService");
-            try {
-                networkScore = new NetworkScoreService(context);
-                ServiceManager.addService(Context.NETWORK_SCORE_SERVICE, networkScore);
-            } catch (Throwable e) {
-                reportWtf("starting Network Score Service", e);
-            }
+            mSystemServiceManager.startService(NetworkScoreService.Lifecycle.class);
             traceEnd();
 
             traceBeginAndSlog("StartNetworkStatsService");
@@ -1728,7 +1722,6 @@ public final class SystemServer {
         final NetworkStatsService networkStatsF = networkStats;
         final NetworkPolicyManagerService networkPolicyF = networkPolicy;
         final ConnectivityService connectivityF = connectivity;
-        final NetworkScoreService networkScoreF = networkScore;
         final LocationManagerService locationF = location;
         final CountryDetectorService countryDetectorF = countryDetector;
         final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater;
@@ -1789,13 +1782,6 @@ public final class SystemServer {
                 reportWtf("starting System UI", e);
             }
             traceEnd();
-            traceBeginAndSlog("MakeNetworkScoreReady");
-            try {
-                if (networkScoreF != null) networkScoreF.systemReady();
-            } catch (Throwable e) {
-                reportWtf("making Network Score Service ready", e);
-            }
-            traceEnd();
             traceBeginAndSlog("MakeNetworkManagementServiceReady");
             try {
                 if (networkManagementF != null) networkManagementF.systemReady();
@@ -1917,13 +1903,6 @@ public final class SystemServer {
             }
             traceEnd();
 
-            traceBeginAndSlog("MakeNetworkScoreServiceReady");
-            try {
-                if (networkScoreF != null) networkScoreF.systemRunning();
-            } catch (Throwable e) {
-                reportWtf("Notifying NetworkScoreService running", e);
-            }
-            traceEnd();
             traceBeginAndSlog("IncidentDaemonReady");
             try {
                 // TODO: Switch from checkService to getService once it's always