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

Commit 9690c1a0 authored by Evan Severson's avatar Evan Severson
Browse files

Remove android.permission.flags.delay_uid_state_changes_from_capability_updates

Test: AppOpsUidStateTrackerTest
Bug: 409611519
Flag: EXEMPT removing android.permission.flags.delay_uid_state_changes_from_capability_updates
Change-Id: I789469c31417891c57d502f2e9b2a5e830d9244f
parent e4c64839
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -284,17 +284,6 @@ flag {
    bug: "364638912"
}

flag {
    name: "delay_uid_state_changes_from_capability_updates"
    is_fixed_read_only: true
    namespace: "permissions"
    description: "If proc state is decreasing over the restriction threshold and capability is changed, delay if no new capabilities are added"
    bug: "347891382"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "allow_host_permission_dialogs_on_virtual_devices"
    is_exported: true
+4 −13
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import static android.app.AppOpsManager.UID_STATE_FOREGROUND_SERVICE;
import static android.app.AppOpsManager.UID_STATE_MAX_LAST_NON_RESTRICTED;
import static android.app.AppOpsManager.UID_STATE_NONEXISTENT;
import static android.app.AppOpsManager.UID_STATE_TOP;
import static android.permission.flags.Flags.delayUidStateChangesFromCapabilityUpdates;
import static android.permission.flags.Flags.finishRunningOpsForKilledPackages;

import static com.android.server.appop.AppOpsUidStateTracker.processStateToUidState;
@@ -246,18 +245,10 @@ class AppOpsUidStateTrackerImpl implements AppOpsUidStateTracker {
                // foreground and the old state is in the background, then always do it
                // immediately.
                commitUidPendingState(uid);
            } else if (delayUidStateChangesFromCapabilityUpdates()
                    && uidState == prevUidState && !hasLostCapability) {
                // No change on process state, but process capability hasn't decreased.
                commitUidPendingState(uid);
            } else if (!delayUidStateChangesFromCapabilityUpdates()
                    && uidState == prevUidState && capability != prevCapability) {
                // No change on process state, but process capability has changed.
                commitUidPendingState(uid);
            } else if (uidState <= UID_STATE_MAX_LAST_NON_RESTRICTED
                    && (!delayUidStateChangesFromCapabilityUpdates() || !hasLostCapability)) {
                // We are moving to a less important state, but it doesn't cross the restriction
                // threshold.
            } else if ((uidState == prevUidState || uidState <= UID_STATE_MAX_LAST_NON_RESTRICTED)
                    && !hasLostCapability) {
                // Process capability hasn't decreased in any bit. UidState has not changed or it
                // has remained at least as important as the restriction threshold
                commitUidPendingState(uid);
            } else if (pendingStateCommitTime == 0) {
                // We are moving to a less important state for the first time,
+13 −23
Original line number Diff line number Diff line
@@ -30,12 +30,10 @@ import static android.app.AppOpsManager.UID_STATE_FOREGROUND;
import static android.app.AppOpsManager.UID_STATE_FOREGROUND_SERVICE;
import static android.app.AppOpsManager.UID_STATE_MAX_LAST_NON_RESTRICTED;
import static android.app.AppOpsManager.UID_STATE_TOP;
import static android.permission.flags.Flags.delayUidStateChangesFromCapabilityUpdates;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
@@ -350,7 +348,6 @@ public class AppOpsUidStateTrackerTest {
                .backgroundState()
                .update();

        if (delayUidStateChangesFromCapabilityUpdates()) {
        mClock.advanceTime(mConstants.BG_STATE_SETTLE_TIME - 1);
        assertEquals(MODE_ALLOWED, mIntf.evalMode(UID, OP_RECORD_AUDIO, MODE_FOREGROUND));
        assertEquals(MODE_ALLOWED,
@@ -358,7 +355,6 @@ public class AppOpsUidStateTrackerTest {
                        MODE_FOREGROUND));

        mClock.advanceTime(1);
        }
        assertEquals(MODE_IGNORED, mIntf.evalMode(UID, OP_RECORD_AUDIO, MODE_FOREGROUND));
        assertEquals(MODE_IGNORED,
                mIntf.evalMode(UID, OP_RECEIVE_EXPLICIT_USER_INTERACTION_AUDIO, MODE_FOREGROUND));
@@ -393,12 +389,10 @@ public class AppOpsUidStateTrackerTest {
                .backgroundState()
                .update();

        if (delayUidStateChangesFromCapabilityUpdates()) {
        mClock.advanceTime(mConstants.BG_STATE_SETTLE_TIME - 1);
        assertEquals(MODE_ALLOWED, mIntf.evalMode(UID, OP_CAMERA, MODE_FOREGROUND));

        mClock.advanceTime(1);
        }
        assertEquals(MODE_IGNORED, mIntf.evalMode(UID, OP_CAMERA, MODE_FOREGROUND));
    }

@@ -434,21 +428,17 @@ public class AppOpsUidStateTrackerTest {
                .backgroundState()
                .update();

        if (delayUidStateChangesFromCapabilityUpdates()) {
        mClock.advanceTime(mConstants.BG_STATE_SETTLE_TIME - 1);
        assertEquals(MODE_ALLOWED, mIntf.evalMode(UID, OP_COARSE_LOCATION, MODE_FOREGROUND));
        assertEquals(MODE_ALLOWED, mIntf.evalMode(UID, OP_FINE_LOCATION, MODE_FOREGROUND));

        mClock.advanceTime(1);
        }
        assertEquals(MODE_IGNORED, mIntf.evalMode(UID, OP_COARSE_LOCATION, MODE_FOREGROUND));
        assertEquals(MODE_IGNORED, mIntf.evalMode(UID, OP_FINE_LOCATION, MODE_FOREGROUND));
    }

    @Test
    public void testProcStateChangesAndStaysUnrestrictedAndCapabilityRemoved() {
        assumeTrue(delayUidStateChangesFromCapabilityUpdates());

        procStateBuilder(UID)
                .topState()
                .microphoneCapability()