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

Commit 8997144b authored by Kenneth Ford's avatar Kenneth Ford
Browse files

Introduce OverrideRequest type property

Adding a property to denote what type of
OverrideRequest is being made, allows us
to provide different behaviors depending
on if the request is to override the
emulated state of the device or the base
state.

Bug: 234336979
Test: OverrideRequestControllerTest
Change-Id: I63fb6c040c8a7116d18657e5cb041b5f67a7fb90
parent 24fdd1fc
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -617,7 +617,8 @@ public final class DeviceStateManagerService extends SystemService {
                        + " is not supported.");
                        + " is not supported.");
            }
            }


            OverrideRequest request = new OverrideRequest(token, callingPid, state, flags);
            OverrideRequest request = new OverrideRequest(token, callingPid, state, flags,
                    OverrideRequest.OVERRIDE_REQUEST_TYPE_EMULATED_STATE);
            mOverrideRequestController.addRequest(request);
            mOverrideRequestController.addRequest(request);
        }
        }
    }
    }
+44 −1
Original line number Original line Diff line number Diff line
@@ -16,9 +16,13 @@


package com.android.server.devicestate;
package com.android.server.devicestate;


import android.annotation.IntDef;
import android.hardware.devicestate.DeviceStateRequest;
import android.hardware.devicestate.DeviceStateRequest;
import android.os.IBinder;
import android.os.IBinder;


import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
/**
 * A request to override the state managed by {@link DeviceStateManagerService}.
 * A request to override the state managed by {@link DeviceStateManagerService}.
 *
 *
@@ -30,13 +34,47 @@ final class OverrideRequest {
    private final int mRequestedState;
    private final int mRequestedState;
    @DeviceStateRequest.RequestFlags
    @DeviceStateRequest.RequestFlags
    private final int mFlags;
    private final int mFlags;
    @OverrideRequestType
    private final int mRequestType;

    /**
     * Denotes that the request is meant to override the emulated state of the device. This will
     * not change the base (physical) state of the device.
     *
     * This request type should be used if you are looking to emulate a device state for a feature
     * but want the system to be aware of the physical state of the device.
     */
    public static final int OVERRIDE_REQUEST_TYPE_EMULATED_STATE = 0;

    /**
     * Denotes that the request is meant to override the base (physical) state of the device.
     * Overriding the base state may not change the emulated state of the device if there is also an
     * override request active for that property.
     *
     * This request type should only be used for testing, where you want to simulate the physical
     * state of the device changing.
     */
    public static final int OVERRIDE_REQUEST_TYPE_BASE_STATE = 1;

    /**
     * Flags for signifying the type of {@link OverrideRequest}.
     *
     * @hide
     */
    @IntDef(flag = true, prefix = { "REQUEST_TYPE_" }, value = {
            OVERRIDE_REQUEST_TYPE_BASE_STATE,
            OVERRIDE_REQUEST_TYPE_EMULATED_STATE
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface OverrideRequestType {}


    OverrideRequest(IBinder token, int pid, int requestedState,
    OverrideRequest(IBinder token, int pid, int requestedState,
            @DeviceStateRequest.RequestFlags int flags) {
            @DeviceStateRequest.RequestFlags int flags, @OverrideRequestType int requestType) {
        mToken = token;
        mToken = token;
        mPid = pid;
        mPid = pid;
        mRequestedState = requestedState;
        mRequestedState = requestedState;
        mFlags = flags;
        mFlags = flags;
        mRequestType = requestType;
    }
    }


    IBinder getToken() {
    IBinder getToken() {
@@ -55,4 +93,9 @@ final class OverrideRequest {
    int getFlags() {
    int getFlags() {
        return mFlags;
        return mFlags;
    }
    }

    @OverrideRequestType
    int getRequestType() {
        return mRequestType;
    }
}
}
+11 −9
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.server.devicestate;
package com.android.server.devicestate;


import static com.android.server.devicestate.OverrideRequest.OVERRIDE_REQUEST_TYPE_EMULATED_STATE;
import static com.android.server.devicestate.OverrideRequestController.STATUS_ACTIVE;
import static com.android.server.devicestate.OverrideRequestController.STATUS_ACTIVE;
import static com.android.server.devicestate.OverrideRequestController.STATUS_CANCELED;
import static com.android.server.devicestate.OverrideRequestController.STATUS_CANCELED;


@@ -57,7 +58,7 @@ public final class OverrideRequestControllerTest {
    @Test
    @Test
    public void addRequest() {
    public void addRequest() {
        OverrideRequest request = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest request = new OverrideRequest(new Binder(), 0 /* pid */,
                0 /* requestedState */, 0 /* flags */);
                0 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);
        assertNull(mStatusListener.getLastStatus(request));
        assertNull(mStatusListener.getLastStatus(request));


        mController.addRequest(request);
        mController.addRequest(request);
@@ -67,14 +68,14 @@ public final class OverrideRequestControllerTest {
    @Test
    @Test
    public void addRequest_cancelExistingRequestThroughNewRequest() {
    public void addRequest_cancelExistingRequestThroughNewRequest() {
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                0 /* requestedState */, 0 /* flags */);
                0 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);
        assertNull(mStatusListener.getLastStatus(firstRequest));
        assertNull(mStatusListener.getLastStatus(firstRequest));


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);


        OverrideRequest secondRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest secondRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                1 /* requestedState */, 0 /* flags */);
                1 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);
        assertNull(mStatusListener.getLastStatus(secondRequest));
        assertNull(mStatusListener.getLastStatus(secondRequest));


        mController.addRequest(secondRequest);
        mController.addRequest(secondRequest);
@@ -85,7 +86,7 @@ public final class OverrideRequestControllerTest {
    @Test
    @Test
    public void addRequest_cancelActiveRequest() {
    public void addRequest_cancelActiveRequest() {
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                0 /* requestedState */, 0 /* flags */);
                0 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);


@@ -100,7 +101,8 @@ public final class OverrideRequestControllerTest {
    public void handleBaseStateChanged() {
    public void handleBaseStateChanged() {
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                0 /* requestedState */,
                0 /* requestedState */,
                DeviceStateRequest.FLAG_CANCEL_WHEN_BASE_CHANGES /* flags */);
                DeviceStateRequest.FLAG_CANCEL_WHEN_BASE_CHANGES /* flags */,
                OVERRIDE_REQUEST_TYPE_EMULATED_STATE);


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);


@@ -114,7 +116,7 @@ public final class OverrideRequestControllerTest {
    @Test
    @Test
    public void handleProcessDied() {
    public void handleProcessDied() {
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                0 /* requestedState */, 0 /* flags */);
                0 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
@@ -128,7 +130,7 @@ public final class OverrideRequestControllerTest {
        mController.setStickyRequestsAllowed(true);
        mController.setStickyRequestsAllowed(true);


        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                0 /* requestedState */, 0 /* flags */);
                0 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
@@ -143,7 +145,7 @@ public final class OverrideRequestControllerTest {
    @Test
    @Test
    public void handleNewSupportedStates() {
    public void handleNewSupportedStates() {
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                1 /* requestedState */, 0 /* flags */);
                1 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
@@ -158,7 +160,7 @@ public final class OverrideRequestControllerTest {
    @Test
    @Test
    public void cancelOverrideRequestsTest() {
    public void cancelOverrideRequestsTest() {
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
        OverrideRequest firstRequest = new OverrideRequest(new Binder(), 0 /* pid */,
                1 /* requestedState */, 0 /* flags */);
                1 /* requestedState */, 0 /* flags */, OVERRIDE_REQUEST_TYPE_EMULATED_STATE);


        mController.addRequest(firstRequest);
        mController.addRequest(firstRequest);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);
        assertEquals(mStatusListener.getLastStatus(firstRequest).intValue(), STATUS_ACTIVE);