Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f51a0af authored by Felipe Leme's avatar Felipe Leme
Browse files

Fixed getUidsWithPolicy().

UID polices are stored as flag, but getUidsWithPolicy() was checking for
their exact values.

Test: m -j32 FrameworksServicesTests && adb install -r -g ${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk && adb shell am instrument -e class "com.android.server.NetworkPolicyManagerServiceTest" -w "com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner"

BUG: 28791717
Change-Id: I923b4f63636a32e42cadda5bbb59268267e899c0
parent d3ca5980
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1809,7 +1809,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
            for (int i = 0; i < mUidPolicy.size(); i++) {
                final int uid = mUidPolicy.keyAt(i);
                final int uidPolicy = mUidPolicy.valueAt(i);
                if (uidPolicy == policy) {
                if ((policy == POLICY_NONE && uidPolicy == POLICY_NONE) ||
                        (uidPolicy & policy) != 0) {
                    uids = appendInt(uids, uid);
                }
            }
+9 −0
Original line number Diff line number Diff line
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<policy-list version="10">
  <uid-policy uid="10004" policy="0" />
  <uid-policy uid="10008" policy="1" />
  <uid-policy uid="10015" policy="2" />
  <uid-policy uid="10016" policy="3" />
  <uid-policy uid="10023" policy="4" />
  <uid-policy uid="10042" policy="6" />
</policy-list>
+14 −1
Original line number Diff line number Diff line
@@ -160,7 +160,6 @@ public class NetworkPolicyManagerServiceTest {
     */
    private String mNetpolicyXml;


    private @Mock IActivityManager mActivityManager;
    private @Mock INetworkStatsService mStatsService;
    private @Mock INetworkManagementService mNetworkManager;
@@ -350,6 +349,20 @@ public class NetworkPolicyManagerServiceTest {
        assertUidPolicy(UID_D, POLICY_ALLOW_METERED_BACKGROUND);
    }

    @Test
    @NetPolicyXml("uids-with-mixed-policies.xml")
    public void testGetUidsWithPolicy() throws Exception {
        assertContainsInAnyOrder(mService.getUidsWithPolicy(POLICY_NONE),
                UID_A);
        assertContainsInAnyOrder(mService.getUidsWithPolicy(POLICY_REJECT_METERED_BACKGROUND),
                UID_B, UID_D);
        assertContainsInAnyOrder(mService.getUidsWithPolicy(POLICY_ALLOW_METERED_BACKGROUND),
                UID_E, UID_F);
        // Legacy (POLICY_ALLOW_BACKGROUND_BATTERY_SAVE)
        assertContainsInAnyOrder(mService.getUidsWithPolicy(2),
                UID_C, UID_D, UID_F);
    }

    // NOTE: testPolicyChangeTriggersListener() and testUidForeground() are too superficial, they
    // don't check for side-effects (like calls to NetworkManagementService) neither cover all
    // different modes (Data Saver, Battery Saver, Doze, App idle, etc...).