Use MessageUtils instead of hardcoded strings in policyNameOf.
This makes the code easier to maintain because we do not need to manually add string representations, and because it will throw at static initialization time if the clas contains duplicate POLICY_xxx values. The memory overhead is likely negligible. Bug: 216567577 Test: new coverage in FullScoreTest Change-Id: Iab23d414c8e28ff7f26060ad44fa996f277d361f
This commit is contained in:
@@ -21,8 +21,6 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
|
|||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_VPN;
|
import static android.net.NetworkCapabilities.TRANSPORT_VPN;
|
||||||
import static android.net.NetworkScore.KEEP_CONNECTED_NONE;
|
import static android.net.NetworkScore.KEEP_CONNECTED_NONE;
|
||||||
import static android.net.NetworkScore.POLICY_EXITING;
|
|
||||||
import static android.net.NetworkScore.POLICY_TRANSPORT_PRIMARY;
|
|
||||||
import static android.net.NetworkScore.POLICY_YIELD_TO_BAD_WIFI;
|
import static android.net.NetworkScore.POLICY_YIELD_TO_BAD_WIFI;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
@@ -31,8 +29,10 @@ import android.net.NetworkAgentConfig;
|
|||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkScore;
|
import android.net.NetworkScore;
|
||||||
import android.net.NetworkScore.KeepConnectedReason;
|
import android.net.NetworkScore.KeepConnectedReason;
|
||||||
|
import android.util.SparseArray;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
|
import com.android.internal.util.MessageUtils;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
@@ -112,21 +112,14 @@ public class FullScore {
|
|||||||
private static final long EXTERNAL_POLICIES_MASK =
|
private static final long EXTERNAL_POLICIES_MASK =
|
||||||
0x00000000FFFFFFFFL & ~(1L << POLICY_YIELD_TO_BAD_WIFI);
|
0x00000000FFFFFFFFL & ~(1L << POLICY_YIELD_TO_BAD_WIFI);
|
||||||
|
|
||||||
|
private static SparseArray<String> sMessageNames = MessageUtils.findMessageNames(
|
||||||
|
new Class[]{FullScore.class, NetworkScore.class}, new String[]{"POLICY_"});
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static @NonNull String policyNameOf(final int policy) {
|
static @NonNull String policyNameOf(final int policy) {
|
||||||
switch (policy) {
|
final String name = sMessageNames.get(policy);
|
||||||
case POLICY_IS_VALIDATED: return "IS_VALIDATED";
|
if (name == null) throw new IllegalArgumentException("Unknown policy: " + policy);
|
||||||
case POLICY_IS_VPN: return "IS_VPN";
|
return name.substring("POLICY_".length());
|
||||||
case POLICY_EVER_USER_SELECTED: return "EVER_USER_SELECTED";
|
|
||||||
case POLICY_ACCEPT_UNVALIDATED: return "ACCEPT_UNVALIDATED";
|
|
||||||
case POLICY_IS_UNMETERED: return "IS_UNMETERED";
|
|
||||||
case POLICY_YIELD_TO_BAD_WIFI: return "YIELD_TO_BAD_WIFI";
|
|
||||||
case POLICY_TRANSPORT_PRIMARY: return "TRANSPORT_PRIMARY";
|
|
||||||
case POLICY_EXITING: return "EXITING";
|
|
||||||
case POLICY_IS_INVINCIBLE: return "INVINCIBLE";
|
|
||||||
case POLICY_EVER_VALIDATED_NOT_AVOIDED_WHEN_BAD: return "EVER_VALIDATED";
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("Unknown policy : " + policy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bitmask of all the policies applied to this score.
|
// Bitmask of all the policies applied to this score.
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import androidx.test.filters.SmallTest
|
|||||||
import com.android.server.connectivity.FullScore.MAX_CS_MANAGED_POLICY
|
import com.android.server.connectivity.FullScore.MAX_CS_MANAGED_POLICY
|
||||||
import com.android.server.connectivity.FullScore.POLICY_ACCEPT_UNVALIDATED
|
import com.android.server.connectivity.FullScore.POLICY_ACCEPT_UNVALIDATED
|
||||||
import com.android.server.connectivity.FullScore.POLICY_EVER_USER_SELECTED
|
import com.android.server.connectivity.FullScore.POLICY_EVER_USER_SELECTED
|
||||||
|
import com.android.server.connectivity.FullScore.POLICY_IS_UNMETERED
|
||||||
import com.android.server.connectivity.FullScore.POLICY_IS_VALIDATED
|
import com.android.server.connectivity.FullScore.POLICY_IS_VALIDATED
|
||||||
import com.android.server.connectivity.FullScore.POLICY_IS_VPN
|
import com.android.server.connectivity.FullScore.POLICY_IS_VPN
|
||||||
import com.android.testutils.DevSdkIgnoreRule
|
import com.android.testutils.DevSdkIgnoreRule
|
||||||
@@ -101,6 +102,7 @@ class FullScoreTest {
|
|||||||
assertFailsWith<IllegalArgumentException> {
|
assertFailsWith<IllegalArgumentException> {
|
||||||
FullScore.policyNameOf(MAX_CS_MANAGED_POLICY + 1)
|
FullScore.policyNameOf(MAX_CS_MANAGED_POLICY + 1)
|
||||||
}
|
}
|
||||||
|
assertEquals("IS_UNMETERED", FullScore.policyNameOf(POLICY_IS_UNMETERED))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getAllPolicies() = Regex("POLICY_.*").let { nameRegex ->
|
fun getAllPolicies() = Regex("POLICY_.*").let { nameRegex ->
|
||||||
|
|||||||
Reference in New Issue
Block a user