From 35cc1861107e8d474acadd09c19bf1d5d675f7c8 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 1d07a0330b..eb8f43e3d0 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());