Merge "Refine the DynamicDenylistManager dump() data format" into main

This commit is contained in:
YK Hung
2023-12-28 03:19:36 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 12 deletions

View File

@@ -31,7 +31,9 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Set; import java.util.Set;
/** A class to dynamically manage per apps {@link NetworkPolicyManager} POLICY_ flags. */ /** A class to dynamically manage per apps {@link NetworkPolicyManager} POLICY_ flags. */
@@ -183,10 +185,21 @@ public final class DynamicDenylistManager {
/** Dump the data stored in the {@link SharedPreferences}. */ /** Dump the data stored in the {@link SharedPreferences}. */
public void dump(PrintWriter writer) { public void dump(PrintWriter writer) {
writer.println("Dump of DynamicDenylistManager:"); writer.println("Dump of DynamicDenylistManager:");
writer.println("\tManualDenylist: " + getPackageNames(mContext, final List<String> manualDenyList =
getDenylistAllUids(getManualDenylistPref()))); getPackageNames(mContext, getDenylistAllUids(getManualDenylistPref()));
writer.println("\tDynamicDenylist: " + getPackageNames(mContext, writer.println("\tManualDenylist:");
getDenylistAllUids(getDynamicDenylistPref()))); if (manualDenyList != null) {
manualDenyList.forEach(packageName -> writer.println("\t\t" + packageName));
writer.flush();
}
final List<String> dynamicDenyList =
getPackageNames(mContext, getDenylistAllUids(getDynamicDenylistPref()));
writer.println("\tDynamicDenylist:");
if (dynamicDenyList != null) {
dynamicDenyList.forEach(packageName -> writer.println("\t\t" + packageName));
writer.flush();
}
} }
private Set<Integer> getDenylistAllUids(SharedPreferences sharedPreferences) { private Set<Integer> getDenylistAllUids(SharedPreferences sharedPreferences) {
@@ -230,13 +243,13 @@ public final class DynamicDenylistManager {
return mContext.getSharedPreferences(PREF_KEY_DYNAMIC_DENY, Context.MODE_PRIVATE); return mContext.getSharedPreferences(PREF_KEY_DYNAMIC_DENY, Context.MODE_PRIVATE);
} }
private static String getPackageNames(Context context, Set<Integer> uids) { private static List<String> getPackageNames(Context context, Set<Integer> uids) {
if (uids == null || uids.isEmpty()) { if (uids == null || uids.isEmpty()) {
return null; return null;
} }
final PackageManager pm = context.getPackageManager(); final PackageManager pm = context.getPackageManager();
final StringBuilder builder = new StringBuilder(); final List<String> packageNames = new ArrayList<>(uids.size());
uids.forEach(uid -> builder.append(pm.getNameForUid(uid) + " ")); uids.forEach(uid -> packageNames.add(pm.getNameForUid(uid)));
return builder.toString(); return packageNames;
} }
} }

View File

@@ -375,8 +375,8 @@ public class DynamicDenylistManagerTest {
mDynamicDenylistManager.dump(printWriter); mDynamicDenylistManager.dump(printWriter);
final String dumpResults = stringWriter.toString(); final String dumpResults = stringWriter.toString();
assertThat(dumpResults.contains("ManualDenylist: app1")).isTrue(); assertThat(dumpResults.contains("\tManualDenylist:\n\t\tapp1")).isTrue();
assertThat(dumpResults.contains("DynamicDenylist: app2")).isTrue(); assertThat(dumpResults.contains("\tDynamicDenylist:\n\t\tapp2")).isTrue();
} }
@Test @Test
@@ -389,8 +389,8 @@ public class DynamicDenylistManagerTest {
mDynamicDenylistManager.dump(printWriter); mDynamicDenylistManager.dump(printWriter);
final String dumpResults = stringWriter.toString(); final String dumpResults = stringWriter.toString();
assertThat(dumpResults.contains("ManualDenylist: null")).isTrue(); assertThat(dumpResults.contains("Dump of DynamicDenylistManager:")).isTrue();
assertThat(dumpResults.contains("DynamicDenylist: null")).isTrue(); assertThat(dumpResults.contains("\tManualDenylist:\n\tDynamicDenylist:")).isTrue();
} }
@Test @Test