[SP12] Remove the usage of getVtDataUsage
Currently NetworkStatsService holding a lock when invoking getVtDataUsage, which causes a lot of deadlock problems since Phone will also have binder calls to system_server. Thus, this change uses a new set of API to break such situation, that allows VT to report stats asynchronously. Test: atest FrameworksNetTests FrameworksTelephonyTests Bug: 130855321 Fix: 143923500 Change-Id: Ifdb8599c3bade09208b4730710fc99da1afad71d
This commit is contained in:
@@ -1249,7 +1249,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||
final NetworkStats uidSnapshot = getNetworkStatsUidDetail(INTERFACES_ALL);
|
||||
Trace.traceEnd(TRACE_TAG_NETWORK);
|
||||
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotXt");
|
||||
final NetworkStats xtSnapshot = getNetworkStatsXt();
|
||||
final NetworkStats xtSnapshot = readNetworkStatsSummaryXt();
|
||||
Trace.traceEnd(TRACE_TAG_NETWORK);
|
||||
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotDev");
|
||||
final NetworkStats devSnapshot = readNetworkStatsSummaryDev();
|
||||
@@ -1707,18 +1707,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||
mUseBpfTrafficStats);
|
||||
uidSnapshot.combineAllValues(tetherSnapshot);
|
||||
|
||||
final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
|
||||
Context.TELEPHONY_SERVICE);
|
||||
|
||||
// fold video calling data usage stats into uid snapshot
|
||||
final NetworkStats vtStats = telephonyManager.getVtDataUsage(STATS_PER_UID);
|
||||
if (vtStats != null) {
|
||||
vtStats.filter(UID_ALL, ifaces, TAG_ALL);
|
||||
mStatsFactory.apply464xlatAdjustments(uidSnapshot, vtStats,
|
||||
mUseBpfTrafficStats);
|
||||
uidSnapshot.combineAllValues(vtStats);
|
||||
}
|
||||
|
||||
// get a stale copy of uid stats snapshot provided by providers.
|
||||
final NetworkStats providerStats = getNetworkStatsFromProviders(STATS_PER_UID);
|
||||
providerStats.filter(UID_ALL, ifaces, TAG_ALL);
|
||||
@@ -1730,24 +1718,6 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
||||
return uidSnapshot;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return snapshot of current XT statistics with video calling data usage statistics.
|
||||
*/
|
||||
private NetworkStats getNetworkStatsXt() throws RemoteException {
|
||||
final NetworkStats xtSnapshot = readNetworkStatsSummaryXt();
|
||||
|
||||
final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
|
||||
Context.TELEPHONY_SERVICE);
|
||||
|
||||
// Merge video calling data usage into XT
|
||||
final NetworkStats vtSnapshot = telephonyManager.getVtDataUsage(STATS_PER_IFACE);
|
||||
if (vtSnapshot != null) {
|
||||
xtSnapshot.combineAllValues(vtSnapshot);
|
||||
}
|
||||
|
||||
return xtSnapshot;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return snapshot of current tethering statistics. Will return empty
|
||||
* {@link NetworkStats} if any problems are encountered.
|
||||
|
||||
Reference in New Issue
Block a user