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

Commit bbf1f135 authored by Kenneth Ford's avatar Kenneth Ford Committed by Automerger Merge Worker
Browse files

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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16232865

Change-Id: I7f5cdb7f63f68456ed9c05d239ac06a2a6bc6171
parents babab5f5 34873949
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;