From 94d684fb9cd47ca7737969cd236604955f521beb Mon Sep 17 00:00:00 2001 From: Aaron Huang Date: Tue, 4 May 2021 02:58:04 +0800 Subject: [PATCH] Adapt NET_CAPABILITY_TEMPORARILY_NOT_METERED in NetworkIdentity NET_CAPABILITY_TEMPORARILY_NOT_METERED is a capability indicates networks are generally metered, but are currently unmetered. NetworkIdentity currently did not consider it which will cause Settings shows high data usage. To exclude unmetered 5g from the metered usage, NetworkIdentity should consider a network with NET_CAPABILITY_TEMPORARILY_NOT_METERED capabilities as not metered. Bug: 183776809 Test: FrameworksNetTests:NetworkIdentityTest Change-Id: Iadbc082b52f16708207e8aecf0904356bc0898ab --- core/java/android/net/NetworkIdentity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java index 1d07a0330bc5c..eb8f43e3d0739 100644 --- a/core/java/android/net/NetworkIdentity.java +++ b/core/java/android/net/NetworkIdentity.java @@ -220,8 +220,10 @@ public class NetworkIdentity implements Comparable { String networkId = null; boolean roaming = !snapshot.getNetworkCapabilities().hasCapability( NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); - boolean metered = !snapshot.getNetworkCapabilities().hasCapability( - NetworkCapabilities.NET_CAPABILITY_NOT_METERED); + boolean metered = !(snapshot.getNetworkCapabilities().hasCapability( + NetworkCapabilities.NET_CAPABILITY_NOT_METERED) + || snapshot.getNetworkCapabilities().hasCapability( + NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED)); final int oemManaged = getOemBitfield(snapshot.getNetworkCapabilities());