From ae536d810d0ae2205a6c8405326cb16116cd0191 Mon Sep 17 00:00:00 2001 From: Chiachang Wang Date: Thu, 25 Feb 2021 16:58:40 +0800 Subject: Have the DataConnectionStat started from BSS ConnectivityService is going to becoming a mainline module. The DataConnectionStat is used to listen the telephony status change and report to BSS. This does not really relate to connectivity. DataConnectionStat was created in ConnectivityService and use some hidden APIs which is not allowed for a mainline module. Thus, move the creation and monitor to BSS directly which is more appropriate place from its functional perspective. Also, move the DataConnectionStat out from module scope since it does have too much relationship with connectivity module. Bug: 171183530 Test: m ; verify the behavior with cellular state change Change-Id: I0c2c1b90df7a107ee75e81fd49d39d65678204c0 Merged-In: I0c2c1b90df7a107ee75e81fd49d39d65678204c0 --- services/core/Android.bp | 1 - .../core/java/com/android/server/ConnectivityService.java | 4 ---- .../core/java/com/android/server/am/BatteryStatsService.java | 11 +++++++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/services/core/Android.bp b/services/core/Android.bp index a1956476e49c..f1ab2aa8b5ec 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -200,7 +200,6 @@ filegroup { "java/com/android/server/TestNetworkService.java", "java/com/android/server/connectivity/AutodestructReference.java", "java/com/android/server/connectivity/ConnectivityConstants.java", - "java/com/android/server/connectivity/DataConnectionStats.java", "java/com/android/server/connectivity/DnsManager.java", "java/com/android/server/connectivity/KeepaliveTracker.java", "java/com/android/server/connectivity/LingerMonitor.java", diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 84de6ec8e0ca..bd00cdf5def9 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -203,7 +203,6 @@ import com.android.net.module.util.LinkPropertiesUtils.CompareResult; import com.android.net.module.util.PermissionUtils; import com.android.server.am.BatteryStatsService; import com.android.server.connectivity.AutodestructReference; -import com.android.server.connectivity.DataConnectionStats; import com.android.server.connectivity.DnsManager; import com.android.server.connectivity.DnsManager.PrivateDnsValidationUpdate; import com.android.server.connectivity.KeepaliveTracker; @@ -1213,9 +1212,6 @@ public class ConnectivityService extends IConnectivityManager.Stub mSettingsObserver = new SettingsObserver(mContext, mHandler); registerSettingsCallbacks(); - final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext, mHandler); - dataConnectionStats.startMonitoring(); - mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler); mNotifier = new NetworkNotificationManager(mContext, mTelephonyManager); mQosCallbackTracker = new QosCallbackTracker(mHandler, mNetworkRequestCounter); diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 9986085224b1..d08b38733926 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -27,6 +27,7 @@ import android.os.BatteryStats; import android.os.BatteryStatsInternal; import android.os.Binder; import android.os.Handler; +import android.os.HandlerThread; import android.os.IBinder; import android.os.INetworkManagementService; import android.os.Parcel; @@ -67,6 +68,7 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.ParseUtils; import com.android.server.LocalServices; +import com.android.server.connectivity.DataConnectionStats; import com.android.server.net.BaseNetworkObserver; import java.io.File; @@ -113,6 +115,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub private ByteBuffer mUtf8BufferStat = ByteBuffer.allocateDirect(MAX_LOW_POWER_STATS_SIZE); private CharBuffer mUtf16BufferStat = CharBuffer.allocate(MAX_LOW_POWER_STATS_SIZE); private static final int MAX_LOW_POWER_STATS_SIZE = 4096; + private final HandlerThread mHandlerThread; + private final Handler mHandler; @GuardedBy("mStats") private int mLastPowerStateFromRadio = DataConnectionRealTimeInfo.DC_POWER_STATE_LOW; @@ -227,6 +231,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub return (umi != null) ? umi.getUserIds() : null; } }; + mHandlerThread = new HandlerThread("batterystats-handler"); + mHandlerThread.start(); + mHandler = new Handler(mHandlerThread.getLooper()); + mStats = new BatteryStatsImpl(systemDir, handler, this, this, mUserManagerUserInfoProvider); mWorker = new BatteryExternalStatsWorker(context, mStats); @@ -250,6 +258,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub Slog.e(TAG, "Could not register INetworkManagement event observer " + e); } mStats.systemServicesReady(mContext); + + final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext, mHandler); + dataConnectionStats.startMonitoring(); } private final class LocalService extends BatteryStatsInternal { -- cgit v1.2.3-59-g8ed1b