Loading src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java +21 −0 Original line number Diff line number Diff line Loading @@ -23,12 +23,14 @@ import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.NetworkPolicyManager; import android.util.ArraySet; import android.util.Log; import androidx.annotation.VisibleForTesting; import java.io.PrintWriter; import java.util.Set; /** A class to dynamically manage per apps {@link NetworkPolicyManager} POLICY_ flags. */ Loading Loading @@ -147,6 +149,15 @@ public final class DynamicDenylistManager { clearSharedPreferences(); } /** Dump the data stored in the {@link SharedPreferences}. */ public void dump(PrintWriter writer) { writer.println("Dump of DynamicDenylistManager:"); writer.println("\tManualDenylist: " + getPackageNames(mContext, getDenylistAllUids(getManualDenylistPref()))); writer.println("\tDynamicDenylist: " + getPackageNames(mContext, getDenylistAllUids(getDynamicDenylistPref()))); } private Set<Integer> getDenylistAllUids(SharedPreferences sharedPreferences) { final ArraySet<Integer> uids = new ArraySet<>(); for (String key : sharedPreferences.getAll().keySet()) { Loading Loading @@ -186,4 +197,14 @@ public final class DynamicDenylistManager { SharedPreferences getDynamicDenylistPref() { return mContext.getSharedPreferences(PREF_KEY_DYNAMIC_DENY, Context.MODE_PRIVATE); } private static String getPackageNames(Context context, Set<Integer> uids) { if (uids == null || uids.isEmpty()) { return null; } final PackageManager pm = context.getPackageManager(); final StringBuilder builder = new StringBuilder(); uids.forEach(uid -> builder.append(pm.getNameForUid(uid) + " ")); return builder.toString(); } } tests/robotests/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManagerTest.java +38 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.NetworkPolicyManager; import android.util.ArraySet; Loading @@ -48,6 +49,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Collections; import java.util.List; import java.util.Set; Loading @@ -67,6 +70,8 @@ public class DynamicDenylistManagerTest { @Mock private NetworkPolicyManager mNetworkPolicyManager; @Mock private PackageManager mPackageManager; @Before public void setUp() { Loading Loading @@ -357,12 +362,45 @@ public class DynamicDenylistManagerTest { assertThat(mDynamicDenyListPref.getAll()).isEmpty(); } @Test public void dump_dumpExpectedResult() { initDynamicDenylistManager(EMPTY_ARRAY); setupPreference(mManualDenyListPref, FAKE_UID_1); setupPreference(mDynamicDenyListPref, FAKE_UID_2); final StringWriter stringWriter = new StringWriter(); final PrintWriter printWriter = new PrintWriter(stringWriter); when(mPackageManager.getNameForUid(FAKE_UID_1_INT)).thenReturn("app1"); when(mPackageManager.getNameForUid(FAKE_UID_2_INT)).thenReturn("app2"); mDynamicDenylistManager.dump(printWriter); final String dumpResults = stringWriter.toString(); assertThat(dumpResults.contains("ManualDenylist: app1")).isTrue(); assertThat(dumpResults.contains("DynamicDenylist: app2")).isTrue(); } @Test public void dump_withEmptySharedPreferences_dumpExpectedResult() { initDynamicDenylistManager(EMPTY_ARRAY, EMPTY_ARRAY); mDynamicDenylistManager.clearSharedPreferences(); final StringWriter stringWriter = new StringWriter(); final PrintWriter printWriter = new PrintWriter(stringWriter); mDynamicDenylistManager.dump(printWriter); final String dumpResults = stringWriter.toString(); assertThat(dumpResults.contains("ManualDenylist: null")).isTrue(); assertThat(dumpResults.contains("DynamicDenylist: null")).isTrue(); } private void initDynamicDenylistManager(int[] preload) { initDynamicDenylistManager(preload, preload); } private void initDynamicDenylistManager(int[] preload1, int[] preload2) { final Context context = spy(RuntimeEnvironment.application.getApplicationContext()); when(context.getApplicationContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(mPackageManager); when(mNetworkPolicyManager.getUidsWithPolicy(anyInt())) .thenReturn(preload1).thenReturn(preload2); mDynamicDenylistManager = new DynamicDenylistManager(context, mNetworkPolicyManager); Loading Loading
src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java +21 −0 Original line number Diff line number Diff line Loading @@ -23,12 +23,14 @@ import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.NetworkPolicyManager; import android.util.ArraySet; import android.util.Log; import androidx.annotation.VisibleForTesting; import java.io.PrintWriter; import java.util.Set; /** A class to dynamically manage per apps {@link NetworkPolicyManager} POLICY_ flags. */ Loading Loading @@ -147,6 +149,15 @@ public final class DynamicDenylistManager { clearSharedPreferences(); } /** Dump the data stored in the {@link SharedPreferences}. */ public void dump(PrintWriter writer) { writer.println("Dump of DynamicDenylistManager:"); writer.println("\tManualDenylist: " + getPackageNames(mContext, getDenylistAllUids(getManualDenylistPref()))); writer.println("\tDynamicDenylist: " + getPackageNames(mContext, getDenylistAllUids(getDynamicDenylistPref()))); } private Set<Integer> getDenylistAllUids(SharedPreferences sharedPreferences) { final ArraySet<Integer> uids = new ArraySet<>(); for (String key : sharedPreferences.getAll().keySet()) { Loading Loading @@ -186,4 +197,14 @@ public final class DynamicDenylistManager { SharedPreferences getDynamicDenylistPref() { return mContext.getSharedPreferences(PREF_KEY_DYNAMIC_DENY, Context.MODE_PRIVATE); } private static String getPackageNames(Context context, Set<Integer> uids) { if (uids == null || uids.isEmpty()) { return null; } final PackageManager pm = context.getPackageManager(); final StringBuilder builder = new StringBuilder(); uids.forEach(uid -> builder.append(pm.getNameForUid(uid) + " ")); return builder.toString(); } }
tests/robotests/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManagerTest.java +38 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.NetworkPolicyManager; import android.util.ArraySet; Loading @@ -48,6 +49,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Collections; import java.util.List; import java.util.Set; Loading @@ -67,6 +70,8 @@ public class DynamicDenylistManagerTest { @Mock private NetworkPolicyManager mNetworkPolicyManager; @Mock private PackageManager mPackageManager; @Before public void setUp() { Loading Loading @@ -357,12 +362,45 @@ public class DynamicDenylistManagerTest { assertThat(mDynamicDenyListPref.getAll()).isEmpty(); } @Test public void dump_dumpExpectedResult() { initDynamicDenylistManager(EMPTY_ARRAY); setupPreference(mManualDenyListPref, FAKE_UID_1); setupPreference(mDynamicDenyListPref, FAKE_UID_2); final StringWriter stringWriter = new StringWriter(); final PrintWriter printWriter = new PrintWriter(stringWriter); when(mPackageManager.getNameForUid(FAKE_UID_1_INT)).thenReturn("app1"); when(mPackageManager.getNameForUid(FAKE_UID_2_INT)).thenReturn("app2"); mDynamicDenylistManager.dump(printWriter); final String dumpResults = stringWriter.toString(); assertThat(dumpResults.contains("ManualDenylist: app1")).isTrue(); assertThat(dumpResults.contains("DynamicDenylist: app2")).isTrue(); } @Test public void dump_withEmptySharedPreferences_dumpExpectedResult() { initDynamicDenylistManager(EMPTY_ARRAY, EMPTY_ARRAY); mDynamicDenylistManager.clearSharedPreferences(); final StringWriter stringWriter = new StringWriter(); final PrintWriter printWriter = new PrintWriter(stringWriter); mDynamicDenylistManager.dump(printWriter); final String dumpResults = stringWriter.toString(); assertThat(dumpResults.contains("ManualDenylist: null")).isTrue(); assertThat(dumpResults.contains("DynamicDenylist: null")).isTrue(); } private void initDynamicDenylistManager(int[] preload) { initDynamicDenylistManager(preload, preload); } private void initDynamicDenylistManager(int[] preload1, int[] preload2) { final Context context = spy(RuntimeEnvironment.application.getApplicationContext()); when(context.getApplicationContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(mPackageManager); when(mNetworkPolicyManager.getUidsWithPolicy(anyInt())) .thenReturn(preload1).thenReturn(preload2); mDynamicDenylistManager = new DynamicDenylistManager(context, mNetworkPolicyManager); Loading