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

Commit 34873949 authored by Kenneth Ford's avatar Kenneth Ford Committed by Android (Google) Code Review
Browse files

Merge "Notifies correct device state callback on cancellation" into sc-v2-dev

parents 1d20c4df 3ad9ba73
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ public final class DeviceStateManager {
    public void requestState(@NonNull DeviceStateRequest request,
            @Nullable @CallbackExecutor Executor executor,
            @Nullable DeviceStateRequest.Callback callback) {
        mGlobal.requestState(request, callback, executor);
        mGlobal.requestState(request, executor, callback);
    }

    /**
+3 −3
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@ public final class DeviceStateManagerGlobal {
     * @see DeviceStateRequest
     */
    public void requestState(@NonNull DeviceStateRequest request,
            @Nullable DeviceStateRequest.Callback callback, @Nullable Executor executor) {
            @Nullable Executor executor, @Nullable DeviceStateRequest.Callback callback) {
        if (callback == null && executor != null) {
            throw new IllegalArgumentException("Callback must be supplied with executor.");
        } else if (executor == null && callback != null) {
@@ -149,7 +149,7 @@ public final class DeviceStateManagerGlobal {

    /**
     * Cancels a {@link DeviceStateRequest request} previously submitted with a call to
     * {@link #requestState(DeviceStateRequest, DeviceStateRequest.Callback, Executor)}.
     * {@link #requestState(DeviceStateRequest, Executor, DeviceStateRequest.Callback)}.
     *
     * @see DeviceStateManager#cancelRequest(DeviceStateRequest)
     */
@@ -408,7 +408,7 @@ public final class DeviceStateManagerGlobal {
                return;
            }

            mExecutor.execute(() -> mCallback.onRequestSuspended(mRequest));
            mExecutor.execute(() -> mCallback.onRequestCanceled(mRequest));
        }
    }
}
+28 −0
Original line number Diff line number Diff line
@@ -160,6 +160,34 @@ public final class DeviceStateManagerGlobalTest {
        verify(callback).onStateChanged(eq(mService.getBaseState()));
    }

    @Test
    public void verifyDeviceStateRequestCallbacksCalled() {
        DeviceStateRequest.Callback callback = mock(TestDeviceStateRequestCallback.class);

        DeviceStateRequest request = DeviceStateRequest.newBuilder(OTHER_DEVICE_STATE).build();
        mDeviceStateManagerGlobal.requestState(request,
                ConcurrentUtils.DIRECT_EXECUTOR /* executor */,
                callback /* callback */);

        verify(callback).onRequestActivated(eq(request));
        Mockito.reset(callback);

        mDeviceStateManagerGlobal.cancelRequest(request);

        verify(callback).onRequestCanceled(eq(request));
    }

    public static class TestDeviceStateRequestCallback implements DeviceStateRequest.Callback {
        @Override
        public void onRequestActivated(DeviceStateRequest request) { }

        @Override
        public void onRequestCanceled(DeviceStateRequest request) { }

        @Override
        public void onRequestSuspended(DeviceStateRequest request) { }
    }

    private static final class TestDeviceStateManagerService extends IDeviceStateManager.Stub {
        public static final class Request {
            public final IBinder token;