Loading core/java/android/view/IWindowSession.aidl +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading core/java/android/view/WindowManagerGlobal.java +3 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading core/java/android/view/WindowlessWindowManager.java +14 −11 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputController.kt +0 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 { Loading @@ -69,7 +67,6 @@ class LetterboxInputController @Inject constructor( gestureListener, inputSurfaceBuilder, windowSessionSupplier, inputChannelSupplier ).apply { start(transaction, parentLeash, key) } Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputDetector.kt +2 −10 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 { Loading @@ -67,7 +65,6 @@ class LetterboxInputDetector( letterboxListener, inputSurfaceBuilder, windowSessionSupplier.get(), inputChannelSupplier ) if (tmpState.start(tx)) { state = tmpState Loading Loading @@ -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 { Loading @@ -138,7 +132,7 @@ class LetterboxInputDetector( "ShellLetterboxInputSurface $source", "$TAG creation" ) windowSession.grantInputChannel( val inputChannel = windowSession.grantInputChannel( displayId, inputSurface, inputToken, Loading @@ -150,7 +144,6 @@ class LetterboxInputDetector( null, inputTransferToken, "$TAG of $source", inputChannel ) receiver = EventReceiver(context, inputChannel, handler, letterboxListener) return true Loading @@ -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, Loading Loading @@ -195,7 +188,6 @@ class LetterboxInputDetector( private fun resetInputState() { receiver?.dispose() receiver = null inputChannel.dispose() windowSession.removeToken(inputToken) } Loading Loading
core/java/android/view/IWindowSession.aidl +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading
core/java/android/view/WindowManagerGlobal.java +3 −4 Original line number Diff line number Diff line Loading @@ -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) { Loading
core/java/android/view/WindowlessWindowManager.java +14 −11 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputController.kt +0 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 { Loading @@ -69,7 +67,6 @@ class LetterboxInputController @Inject constructor( gestureListener, inputSurfaceBuilder, windowSessionSupplier, inputChannelSupplier ).apply { start(transaction, parentLeash, key) } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputDetector.kt +2 −10 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 { Loading @@ -67,7 +65,6 @@ class LetterboxInputDetector( letterboxListener, inputSurfaceBuilder, windowSessionSupplier.get(), inputChannelSupplier ) if (tmpState.start(tx)) { state = tmpState Loading Loading @@ -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 { Loading @@ -138,7 +132,7 @@ class LetterboxInputDetector( "ShellLetterboxInputSurface $source", "$TAG creation" ) windowSession.grantInputChannel( val inputChannel = windowSession.grantInputChannel( displayId, inputSurface, inputToken, Loading @@ -150,7 +144,6 @@ class LetterboxInputDetector( null, inputTransferToken, "$TAG of $source", inputChannel ) receiver = EventReceiver(context, inputChannel, handler, letterboxListener) return true Loading @@ -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, Loading Loading @@ -195,7 +188,6 @@ class LetterboxInputDetector( private fun resetInputState() { receiver?.dispose() receiver = null inputChannel.dispose() windowSession.removeToken(inputToken) } Loading