Loading packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsObservers.java +4 −3 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.server.net; import static android.app.usage.NetworkStatsManager.MIN_THRESHOLD_BYTES; import static com.android.internal.util.Preconditions.checkArgument; import android.app.usage.NetworkStatsManager; import android.net.DataUsageRequest; import android.net.NetworkIdentitySet; Loading Loading @@ -216,7 +214,10 @@ class NetworkStatsObservers { accessLevel); } else { // Safety check in case a new access level is added and we forgot to update this checkArgument(accessLevel >= NetworkStatsAccess.Level.DEVICESUMMARY); if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) { throw new IllegalArgumentException( "accessLevel " + accessLevel + " is less than DEVICESUMMARY."); } return new NetworkUsageRequestInfo(this, request, messenger, binder, callingUid, accessLevel); } Loading packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsRecorder.java +3 −5 Original line number Diff line number Diff line Loading @@ -34,12 +34,10 @@ import android.os.DropBoxManager; import android.service.NetworkStatsRecorderProto; import android.util.IndentingPrintWriter; import android.util.Log; import android.util.MathUtils; import android.util.proto.ProtoOutputStream; import com.android.internal.util.FileRotator; import com.google.android.collect.Sets; import com.android.net.module.util.NetworkStatsUtils; import libcore.io.IoUtils; Loading Loading @@ -132,7 +130,7 @@ public class NetworkStatsRecorder { public void setPersistThreshold(long thresholdBytes) { if (LOGV) Log.v(TAG, "setPersistThreshold() with " + thresholdBytes); mPersistThresholdBytes = MathUtils.constrain( mPersistThresholdBytes = NetworkStatsUtils.constrain( thresholdBytes, 1 * KB_IN_BYTES, 100 * MB_IN_BYTES); } Loading Loading @@ -206,7 +204,7 @@ public class NetworkStatsRecorder { */ public void recordSnapshotLocked(NetworkStats snapshot, Map<String, NetworkIdentitySet> ifaceIdent, long currentTimeMillis) { final HashSet<String> unknownIfaces = Sets.newHashSet(); final HashSet<String> unknownIfaces = new HashSet<>(); // skip recording when snapshot missing if (snapshot == null) return; Loading packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsService.java +10 −10 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import static android.content.Intent.ACTION_USER_REMOVED; import static android.content.Intent.EXTRA_UID; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.net.NetworkIdentity.SUBTYPE_COMBINED; import static android.net.NetworkStack.checkNetworkStackPermission; import static android.net.NetworkStats.DEFAULT_NETWORK_ALL; import static android.net.NetworkStats.IFACE_ALL; import static android.net.NetworkStats.IFACE_VT; Loading Loading @@ -158,6 +157,7 @@ import com.android.server.LocalServices; import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.time.Clock; Loading Loading @@ -981,7 +981,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @NonNull NetworkStateSnapshot[] networkStates, @Nullable String activeIface, @NonNull UnderlyingNetworkInfo[] underlyingNetworkInfos) { checkNetworkStackPermission(mContext); PermissionUtils.enforceNetworkStackPermission(mContext); final long token = Binder.clearCallingIdentity(); try { Loading Loading @@ -1197,13 +1197,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // On background handler thread, and USER_REMOVED is protected // broadcast. final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); if (userId == -1) return; final UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER); if (userHandle == null) return; synchronized (mStatsLock) { mWakeLock.acquire(); try { removeUserLocked(userId); removeUserLocked(userHandle); } finally { mWakeLock.release(); } Loading @@ -1228,7 +1228,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public void limitReached(String limitName, String iface) { // only someone like NMS should be calling us NetworkStack.checkNetworkStackPermission(mContext); PermissionUtils.enforceNetworkStackPermission(mContext); if (LIMIT_GLOBAL_ALERT.equals(limitName)) { // kick off background poll to collect network stats unless there is already Loading Loading @@ -1648,8 +1648,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * Clean up {@link #mUidRecorder} after user is removed. */ @GuardedBy("mStatsLock") private void removeUserLocked(int userId) { if (LOGV) Log.v(TAG, "removeUserLocked() for userId=" + userId); private void removeUserLocked(@NonNull UserHandle userHandle) { if (LOGV) Log.v(TAG, "removeUserLocked() for UserHandle=" + userHandle); // Build list of UIDs that we should clean up final ArrayList<Integer> uids = new ArrayList<>(); Loading @@ -1657,7 +1657,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { PackageManager.MATCH_ANY_USER | PackageManager.MATCH_DISABLED_COMPONENTS); for (ApplicationInfo app : apps) { final int uid = UserHandle.getUid(userId, app.uid); final int uid = userHandle.getUid(app.uid); uids.add(uid); } Loading Loading @@ -1865,7 +1865,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @GuardedBy("mStatsLock") private void dumpProtoLocked(FileDescriptor fd) { final ProtoOutputStream proto = new ProtoOutputStream(fd); final ProtoOutputStream proto = new ProtoOutputStream(new FileOutputStream(fd)); // TODO Right now it writes all history. Should it limit to the "since-boot" log? Loading packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsSubscriptionsMonitor.java +14 −12 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import android.util.Log; import android.util.Pair; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.CollectionUtils; import com.android.net.module.util.CollectionUtils; import java.util.ArrayList; import java.util.List; Loading Loading @@ -99,18 +99,19 @@ public class NetworkStatsSubscriptionsMonitor extends // prevent binder call to telephony when querying RAT. Keep listener registration with empty // IMSI is meaningless since the RAT type changed is ambiguous for multi-SIM if reported // with empty IMSI. So filter the subs w/o a valid IMSI to prevent such registration. final List<Pair<Integer, String>> filteredNewSubs = CollectionUtils.mapNotNull(newSubs, subId -> { final List<Pair<Integer, String>> filteredNewSubs = new ArrayList<>(); for (final int subId : newSubs) { final String subscriberId = mTeleManager.getSubscriberId(subId); return TextUtils.isEmpty(subscriberId) ? null : new Pair(subId, subscriberId); }); if (!TextUtils.isEmpty(subscriberId)) { filteredNewSubs.add(new Pair(subId, subscriberId)); } } for (final Pair<Integer, String> sub : filteredNewSubs) { // Fully match listener with subId and IMSI, since in some rare cases, IMSI might be // suddenly change regardless of subId, such as switch IMSI feature in modem side. // If that happens, register new listener with new IMSI and remove old one later. if (CollectionUtils.find(mRatListeners, it -> it.equalsKey(sub.first, sub.second)) != null) { if (CollectionUtils.any(mRatListeners, it -> it.equalsKey(sub.first, sub.second))) { continue; } Loading @@ -126,8 +127,8 @@ public class NetworkStatsSubscriptionsMonitor extends for (final RatTypeListener listener : new ArrayList<>(mRatListeners)) { // If there is no subId and IMSI matched the listener, removes it. if (CollectionUtils.find(filteredNewSubs, it -> listener.equalsKey(it.first, it.second)) == null) { if (!CollectionUtils.any(filteredNewSubs, it -> listener.equalsKey(it.first, it.second))) { handleRemoveRatTypeListener(listener); } } Loading @@ -148,9 +149,10 @@ public class NetworkStatsSubscriptionsMonitor extends * @return collapsed RatType for the given subscriberId */ public int getRatTypeForSubscriberId(@NonNull String subscriberId) { final RatTypeListener match = CollectionUtils.find(mRatListeners, final int index = CollectionUtils.indexOf(mRatListeners, it -> TextUtils.equals(subscriberId, it.mSubscriberId)); return match != null ? match.mLastCollapsedRatType : TelephonyManager.NETWORK_TYPE_UNKNOWN; return index != -1 ? mRatListeners.get(index).mLastCollapsedRatType : TelephonyManager.NETWORK_TYPE_UNKNOWN; } /** Loading Loading
packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsObservers.java +4 −3 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.server.net; import static android.app.usage.NetworkStatsManager.MIN_THRESHOLD_BYTES; import static com.android.internal.util.Preconditions.checkArgument; import android.app.usage.NetworkStatsManager; import android.net.DataUsageRequest; import android.net.NetworkIdentitySet; Loading Loading @@ -216,7 +214,10 @@ class NetworkStatsObservers { accessLevel); } else { // Safety check in case a new access level is added and we forgot to update this checkArgument(accessLevel >= NetworkStatsAccess.Level.DEVICESUMMARY); if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) { throw new IllegalArgumentException( "accessLevel " + accessLevel + " is less than DEVICESUMMARY."); } return new NetworkUsageRequestInfo(this, request, messenger, binder, callingUid, accessLevel); } Loading
packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsRecorder.java +3 −5 Original line number Diff line number Diff line Loading @@ -34,12 +34,10 @@ import android.os.DropBoxManager; import android.service.NetworkStatsRecorderProto; import android.util.IndentingPrintWriter; import android.util.Log; import android.util.MathUtils; import android.util.proto.ProtoOutputStream; import com.android.internal.util.FileRotator; import com.google.android.collect.Sets; import com.android.net.module.util.NetworkStatsUtils; import libcore.io.IoUtils; Loading Loading @@ -132,7 +130,7 @@ public class NetworkStatsRecorder { public void setPersistThreshold(long thresholdBytes) { if (LOGV) Log.v(TAG, "setPersistThreshold() with " + thresholdBytes); mPersistThresholdBytes = MathUtils.constrain( mPersistThresholdBytes = NetworkStatsUtils.constrain( thresholdBytes, 1 * KB_IN_BYTES, 100 * MB_IN_BYTES); } Loading Loading @@ -206,7 +204,7 @@ public class NetworkStatsRecorder { */ public void recordSnapshotLocked(NetworkStats snapshot, Map<String, NetworkIdentitySet> ifaceIdent, long currentTimeMillis) { final HashSet<String> unknownIfaces = Sets.newHashSet(); final HashSet<String> unknownIfaces = new HashSet<>(); // skip recording when snapshot missing if (snapshot == null) return; Loading
packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsService.java +10 −10 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import static android.content.Intent.ACTION_USER_REMOVED; import static android.content.Intent.EXTRA_UID; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.net.NetworkIdentity.SUBTYPE_COMBINED; import static android.net.NetworkStack.checkNetworkStackPermission; import static android.net.NetworkStats.DEFAULT_NETWORK_ALL; import static android.net.NetworkStats.IFACE_ALL; import static android.net.NetworkStats.IFACE_VT; Loading Loading @@ -158,6 +157,7 @@ import com.android.server.LocalServices; import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.time.Clock; Loading Loading @@ -981,7 +981,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @NonNull NetworkStateSnapshot[] networkStates, @Nullable String activeIface, @NonNull UnderlyingNetworkInfo[] underlyingNetworkInfos) { checkNetworkStackPermission(mContext); PermissionUtils.enforceNetworkStackPermission(mContext); final long token = Binder.clearCallingIdentity(); try { Loading Loading @@ -1197,13 +1197,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // On background handler thread, and USER_REMOVED is protected // broadcast. final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); if (userId == -1) return; final UserHandle userHandle = intent.getParcelableExtra(Intent.EXTRA_USER); if (userHandle == null) return; synchronized (mStatsLock) { mWakeLock.acquire(); try { removeUserLocked(userId); removeUserLocked(userHandle); } finally { mWakeLock.release(); } Loading @@ -1228,7 +1228,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public void limitReached(String limitName, String iface) { // only someone like NMS should be calling us NetworkStack.checkNetworkStackPermission(mContext); PermissionUtils.enforceNetworkStackPermission(mContext); if (LIMIT_GLOBAL_ALERT.equals(limitName)) { // kick off background poll to collect network stats unless there is already Loading Loading @@ -1648,8 +1648,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * Clean up {@link #mUidRecorder} after user is removed. */ @GuardedBy("mStatsLock") private void removeUserLocked(int userId) { if (LOGV) Log.v(TAG, "removeUserLocked() for userId=" + userId); private void removeUserLocked(@NonNull UserHandle userHandle) { if (LOGV) Log.v(TAG, "removeUserLocked() for UserHandle=" + userHandle); // Build list of UIDs that we should clean up final ArrayList<Integer> uids = new ArrayList<>(); Loading @@ -1657,7 +1657,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { PackageManager.MATCH_ANY_USER | PackageManager.MATCH_DISABLED_COMPONENTS); for (ApplicationInfo app : apps) { final int uid = UserHandle.getUid(userId, app.uid); final int uid = userHandle.getUid(app.uid); uids.add(uid); } Loading Loading @@ -1865,7 +1865,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @GuardedBy("mStatsLock") private void dumpProtoLocked(FileDescriptor fd) { final ProtoOutputStream proto = new ProtoOutputStream(fd); final ProtoOutputStream proto = new ProtoOutputStream(new FileOutputStream(fd)); // TODO Right now it writes all history. Should it limit to the "since-boot" log? Loading
packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsSubscriptionsMonitor.java +14 −12 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import android.util.Log; import android.util.Pair; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.CollectionUtils; import com.android.net.module.util.CollectionUtils; import java.util.ArrayList; import java.util.List; Loading Loading @@ -99,18 +99,19 @@ public class NetworkStatsSubscriptionsMonitor extends // prevent binder call to telephony when querying RAT. Keep listener registration with empty // IMSI is meaningless since the RAT type changed is ambiguous for multi-SIM if reported // with empty IMSI. So filter the subs w/o a valid IMSI to prevent such registration. final List<Pair<Integer, String>> filteredNewSubs = CollectionUtils.mapNotNull(newSubs, subId -> { final List<Pair<Integer, String>> filteredNewSubs = new ArrayList<>(); for (final int subId : newSubs) { final String subscriberId = mTeleManager.getSubscriberId(subId); return TextUtils.isEmpty(subscriberId) ? null : new Pair(subId, subscriberId); }); if (!TextUtils.isEmpty(subscriberId)) { filteredNewSubs.add(new Pair(subId, subscriberId)); } } for (final Pair<Integer, String> sub : filteredNewSubs) { // Fully match listener with subId and IMSI, since in some rare cases, IMSI might be // suddenly change regardless of subId, such as switch IMSI feature in modem side. // If that happens, register new listener with new IMSI and remove old one later. if (CollectionUtils.find(mRatListeners, it -> it.equalsKey(sub.first, sub.second)) != null) { if (CollectionUtils.any(mRatListeners, it -> it.equalsKey(sub.first, sub.second))) { continue; } Loading @@ -126,8 +127,8 @@ public class NetworkStatsSubscriptionsMonitor extends for (final RatTypeListener listener : new ArrayList<>(mRatListeners)) { // If there is no subId and IMSI matched the listener, removes it. if (CollectionUtils.find(filteredNewSubs, it -> listener.equalsKey(it.first, it.second)) == null) { if (!CollectionUtils.any(filteredNewSubs, it -> listener.equalsKey(it.first, it.second))) { handleRemoveRatTypeListener(listener); } } Loading @@ -148,9 +149,10 @@ public class NetworkStatsSubscriptionsMonitor extends * @return collapsed RatType for the given subscriberId */ public int getRatTypeForSubscriberId(@NonNull String subscriberId) { final RatTypeListener match = CollectionUtils.find(mRatListeners, final int index = CollectionUtils.indexOf(mRatListeners, it -> TextUtils.equals(subscriberId, it.mSubscriberId)); return match != null ? match.mLastCollapsedRatType : TelephonyManager.NETWORK_TYPE_UNKNOWN; return index != -1 ? mRatListeners.get(index).mLastCollapsedRatType : TelephonyManager.NETWORK_TYPE_UNKNOWN; } /** Loading