summaryrefslogtreecommitdiff
path: root/service-t/src/com/android/server/NetworkStatsServiceInitializer.java
diff options
context:
space:
mode:
authorJunyu Lai <junyulai@google.com>2022-01-26 18:46:46 +0000
committerRemi NGUYEN VAN <reminv@google.com>2022-02-07 10:11:40 +0900
commitab76aab4d3cc54737037418d5653b4afae92b550 (patch)
treebd0703c49e7627fa1516b5d3c9fcec2c48e58f73 /service-t/src/com/android/server/NetworkStatsServiceInitializer.java
parent2ef865e0fdf39c5ae9301ff73e5bb3be99f19b61 (diff)
[MS62.2] Add NetworkStatsService into service initializer
NetworkStatsService is going to be moved into Connectivity mainlne module and it will be not visible to SystemServiceResistry after migration done. Thus, register service in NetworkStatsServiceInitialalizer and register manager in ConnectivityFrameworkInitializerTiramisu instead. Ignore-AOSP-First: Avoiding conflicts; cherry-pick will follow Test: FrameworksNetTests CtsNetTestCases Bug: 204830222 Change-Id: I03d947cc54dd995f6b5b4544ee3bf03cf029d143
Diffstat (limited to 'service-t/src/com/android/server/NetworkStatsServiceInitializer.java')
-rw-r--r--service-t/src/com/android/server/NetworkStatsServiceInitializer.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/service-t/src/com/android/server/NetworkStatsServiceInitializer.java b/service-t/src/com/android/server/NetworkStatsServiceInitializer.java
new file mode 100644
index 0000000000..0ea126a487
--- /dev/null
+++ b/service-t/src/com/android/server/NetworkStatsServiceInitializer.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server;
+
+import android.content.Context;
+import android.net.TrafficStats;
+import android.util.Log;
+
+import com.android.modules.utils.build.SdkLevel;
+import com.android.server.net.NetworkStatsService;
+
+/**
+ * NetworkStats service initializer for core networking. This is called by system server to create
+ * a new instance of NetworkStatsService.
+ */
+public final class NetworkStatsServiceInitializer extends SystemService {
+ private static final String TAG = NetworkStatsServiceInitializer.class.getSimpleName();
+ private final NetworkStatsService mStatsService;
+
+ public NetworkStatsServiceInitializer(Context context) {
+ super(context);
+ // Load JNI libraries used by NetworkStatsService and its dependencies
+ System.loadLibrary("service-connectivity");
+ mStatsService = maybeCreateNetworkStatsService(context);
+ }
+
+ @Override
+ public void onStart() {
+ if (mStatsService != null) {
+ Log.i(TAG, "Registering " + Context.NETWORK_STATS_SERVICE);
+ publishBinderService(Context.NETWORK_STATS_SERVICE, mStatsService,
+ /* allowIsolated= */ false);
+ TrafficStats.init(getContext());
+ }
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ // This has to be run before StatsPullAtomService query usage at
+ // PHASE_THIRD_PARTY_APPS_CAN_START.
+ if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY && mStatsService != null) {
+ mStatsService.systemReady();
+ }
+ }
+
+ /**
+ * Return NetworkStatsService instance, or null if current SDK is lower than T.
+ */
+ private NetworkStatsService maybeCreateNetworkStatsService(final Context context) {
+ if (!SdkLevel.isAtLeastT()) return null;
+
+ return NetworkStatsService.create(context);
+ }
+}