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

Commit c7f74443 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Return InputChannel from grantInputChannel" into main

parents bde14e86 57ef1d1d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -300,11 +300,11 @@ interface IWindowSession {
    * the IWindow binder object. For other requests, the token can be any unique IBinder token to
    * be used as unique identifier.
    */
    void grantInputChannel(int displayId, in SurfaceControl surface, in IBinder clientToken,
    @nullable
    InputChannel grantInputChannel(int displayId, in SurfaceControl surface, in IBinder clientToken,
            in @nullable InputTransferToken hostInputTransferToken, int flags, int privateFlags,
            int inputFeatures, int type, in IBinder windowToken,
            in InputTransferToken embeddedInputTransferToken, String inputHandleName,
            out InputChannel outInputChannel);
            in InputTransferToken embeddedInputTransferToken, String inputHandleName);

    /**
     * Update the flags on an input channel associated with a particular surface.
+3 −4
Original line number Diff line number Diff line
@@ -901,19 +901,18 @@ public final class WindowManagerGlobal {
    private static InputChannel createInputChannel(@NonNull IBinder clientToken,
            @NonNull InputTransferToken hostToken, @NonNull SurfaceControl surfaceControl,
            @Nullable InputTransferToken inputTransferToken) {
        InputChannel inputChannel = new InputChannel();
        try {
            // TODO (b/329860681): Use INVALID_DISPLAY for now because the displayId will be
            // selected in  SurfaceFlinger. This should be cleaned up so grantInputChannel doesn't
            // take in a displayId at all
            WindowManagerGlobal.getWindowSession().grantInputChannel(INVALID_DISPLAY,
            return WindowManagerGlobal.getWindowSession().grantInputChannel(INVALID_DISPLAY,
                    surfaceControl, clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null,
                    inputTransferToken, surfaceControl.getName(), inputChannel);
                    inputTransferToken, surfaceControl.getName());
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to create input channel", e);
            e.rethrowAsRuntimeException();
            return null;
        }
        return inputChannel;
    }

    private static void removeInputChannel(IBinder clientToken) {
+14 −11
Original line number Diff line number Diff line
@@ -243,17 +243,19 @@ public class WindowlessWindowManager implements IWindowSession {
                WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0)) {
            try {
                if (mRealWm instanceof IWindowSession.Stub) {
                    mRealWm.grantInputChannel(displayId,
                    InputChannel inputChannel = mRealWm.grantInputChannel(
                            displayId,
                            new SurfaceControl(sc, "WindowlessWindowManager.addToDisplay"),
                            window.asBinder(), mHostInputTransferToken, attrs.flags,
                            attrs.privateFlags, attrs.inputFeatures, attrs.type, attrs.token,
                            state.mInputTransferToken, attrs.getTitle().toString(),
                            outInputChannel);
                            state.mInputTransferToken, attrs.getTitle().toString());
                    inputChannel.copyTo(outInputChannel);
                } else {
                    mRealWm.grantInputChannel(displayId, sc, window.asBinder(),
                            mHostInputTransferToken, attrs.flags, attrs.privateFlags,
                            attrs.inputFeatures, attrs.type, attrs.token, state.mInputTransferToken,
                            attrs.getTitle().toString(), outInputChannel);
                    InputChannel inputChannel = mRealWm.grantInputChannel(displayId, sc,
                            window.asBinder(), mHostInputTransferToken, attrs.flags,
                            attrs.privateFlags, attrs.inputFeatures, attrs.type, attrs.token,
                            state.mInputTransferToken, attrs.getTitle().toString());
                    inputChannel.copyTo(outInputChannel);
                }
                state.mInputChannelToken =
                        outInputChannel != null ? outInputChannel.getToken() : null;
@@ -626,10 +628,11 @@ public class WindowlessWindowManager implements IWindowSession {
            List<Rect> unrestrictedRects) {}

    @Override
    public void grantInputChannel(int displayId, SurfaceControl surface, IBinder clientToken,
            InputTransferToken hostInputToken, int flags, int privateFlags, int inputFeatures,
            int type, IBinder windowToken, InputTransferToken embeddedInputTransferToken,
            String inputHandleName, InputChannel outInputChannel) {
    public InputChannel grantInputChannel(int displayId, SurfaceControl surface,
            IBinder clientToken, InputTransferToken hostInputToken, int flags, int privateFlags,
            int inputFeatures, int type, IBinder windowToken,
            InputTransferToken embeddedInputTransferToken, String inputHandleName) {
        return null;
    }

    @Override
+0 −3
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.view.SurfaceControl
import android.view.SurfaceControl.Transaction
import android.window.WindowContainerToken
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.common.suppliers.InputChannelSupplier
import com.android.wm.shell.common.suppliers.WindowSessionSupplier
import com.android.wm.shell.compatui.letterbox.LetterboxUtils.Maps.runOnItem
import com.android.wm.shell.compatui.letterbox.events.ReachabilityGestureListenerFactory
@@ -44,7 +43,6 @@ class LetterboxInputController @Inject constructor(
    private val inputSurfaceBuilder: LetterboxInputSurfaceBuilder,
    private val listenerFactory: ReachabilityGestureListenerFactory,
    private val windowSessionSupplier: WindowSessionSupplier,
    private val inputChannelSupplier: InputChannelSupplier
) : LetterboxController {

    companion object {
@@ -69,7 +67,6 @@ class LetterboxInputController @Inject constructor(
                gestureListener,
                inputSurfaceBuilder,
                windowSessionSupplier,
                inputChannelSupplier
            ).apply {
                start(transaction, parentLeash, key)
            }
+2 −10
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.view.SurfaceControl.Transaction
import android.view.WindowManager
import android.window.InputTransferToken
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.common.suppliers.InputChannelSupplier
import com.android.wm.shell.common.suppliers.WindowSessionSupplier
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_APP_COMPAT

@@ -46,7 +45,6 @@ class LetterboxInputDetector(
    private val letterboxListener: GestureDetector.SimpleOnGestureListener,
    private val inputSurfaceBuilder: LetterboxInputSurfaceBuilder,
    private val windowSessionSupplier: WindowSessionSupplier,
    private val inputChannelSupplier: InputChannelSupplier
) {

    companion object {
@@ -67,7 +65,6 @@ class LetterboxInputDetector(
                    letterboxListener,
                    inputSurfaceBuilder,
                    windowSessionSupplier.get(),
                    inputChannelSupplier
                )
            if (tmpState.start(tx)) {
                state = tmpState
@@ -115,17 +112,14 @@ class LetterboxInputDetector(
        val letterboxListener: GestureDetector.SimpleOnGestureListener,
        val inputSurfaceBuilder: LetterboxInputSurfaceBuilder,
        val windowSession: IWindowSession,
        inputChannelSupplier: InputChannelSupplier
    ) {

        private val inputToken: IBinder
        private val inputChannel: InputChannel
        private var receiver: EventReceiver? = null
        private var inputSurface: SurfaceControl? = null

        init {
            inputToken = Binder()
            inputChannel = inputChannelSupplier.get()
        }

        fun start(tx: Transaction): Boolean {
@@ -138,7 +132,7 @@ class LetterboxInputDetector(
                        "ShellLetterboxInputSurface $source",
                        "$TAG creation"
                    )
                windowSession.grantInputChannel(
                val inputChannel = windowSession.grantInputChannel(
                    displayId,
                    inputSurface,
                    inputToken,
@@ -150,7 +144,6 @@ class LetterboxInputDetector(
                    null,
                    inputTransferToken,
                    "$TAG of $source",
                    inputChannel
                )
                receiver = EventReceiver(context, inputChannel, handler, letterboxListener)
                return true
@@ -165,7 +158,7 @@ class LetterboxInputDetector(
                tx.setWindowCrop(inputSurface, region.bounds.width(), region.bounds.height())

                windowSession.updateInputChannel(
                    inputChannel.token,
                    receiver?.token,
                    null /* hostInputTransferToken */,
                    displayId,
                    inputSurface,
@@ -195,7 +188,6 @@ class LetterboxInputDetector(
        private fun resetInputState() {
            receiver?.dispose()
            receiver = null
            inputChannel.dispose()
            windowSession.removeToken(inputToken)
        }

Loading