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

Commit b3cdfd6b authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge "Rename focusGrantToken to inputTransferToken" into main

parents aa440568 98058cbd
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -407,7 +407,7 @@ public class SurfaceControlViewHost {
    public @Nullable SurfacePackage getSurfacePackage() {
        if (mSurfaceControl != null && mAccessibilityEmbeddedConnection != null) {
            return new SurfacePackage(new SurfaceControl(mSurfaceControl, "getSurfacePackage"),
                mAccessibilityEmbeddedConnection, getFocusGrantToken(), mRemoteInterface);
                mAccessibilityEmbeddedConnection, getInputTransferToken(), mRemoteInterface);
        } else {
            return null;
        }
@@ -526,10 +526,12 @@ public class SurfaceControlViewHost {
    }

    /**
     * Returns an input token used which can be used to request focus on the embedded surface.
     *
     * @hide
     */
    public IBinder getFocusGrantToken() {
        return mWm.getFocusGrantToken(getWindowToken().asBinder());
    public IBinder getInputTransferToken() {
        return mWm.getInputTransferToken(getWindowToken().asBinder());
    }

    private void addWindowToken(WindowManager.LayoutParams attrs) {
+10 −9
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ public class WindowlessWindowManager implements IWindowSession {
        SurfaceControl mLeash;
        Rect mFrame;
        Rect mAttachedFrame;
        IBinder mFocusGrantToken;
        IBinder mInputTransferToken;

        State(SurfaceControl sc, WindowManager.LayoutParams p, int displayId, IWindow client,
                SurfaceControl leash, Rect frame) {
@@ -89,7 +89,7 @@ public class WindowlessWindowManager implements IWindowSession {
    private final Configuration mConfiguration;
    private final IWindowSession mRealWm;
    private final IBinder mHostInputToken;
    private final IBinder mFocusGrantToken = new Binder();
    private final IBinder mInputTransferToken = new Binder();
    private InsetsState mInsetsState;
    private final ClientWindowFrames mTmpFrames = new ClientWindowFrames();
    private final MergedConfiguration mTmpConfig = new MergedConfiguration();
@@ -109,17 +109,17 @@ public class WindowlessWindowManager implements IWindowSession {
        mConfiguration.setTo(configuration);
    }

    IBinder getFocusGrantToken(IBinder window) {
    IBinder getInputTransferToken(IBinder window) {
        synchronized (this) {
            // This can only happen if someone requested the focusGrantToken before setView was
            // called for the SCVH. In that case, use the root focusGrantToken since this will be
            // the same token sent to WMS for the root window once setView is called.
            if (mStateForWindow.isEmpty()) {
                return mFocusGrantToken;
                return mInputTransferToken;
            }
            State state = mStateForWindow.get(window);
            if (state != null) {
                return state.mFocusGrantToken;
                return state.mInputTransferToken;
            }
        }

@@ -207,9 +207,9 @@ public class WindowlessWindowManager implements IWindowSession {
            // Give the first window the mFocusGrantToken since that's the token the host can use
            // to give focus to the embedded.
            if (mStateForWindow.isEmpty()) {
                state.mFocusGrantToken = mFocusGrantToken;
                state.mInputTransferToken = mInputTransferToken;
            } else {
                state.mFocusGrantToken = new Binder();
                state.mInputTransferToken = new Binder();
            }

            mStateForWindow.put(window.asBinder(), state);
@@ -230,12 +230,13 @@ public class WindowlessWindowManager implements IWindowSession {
                            new SurfaceControl(sc, "WindowlessWindowManager.addToDisplay"),
                            window, mHostInputToken, attrs.flags, attrs.privateFlags,
                            attrs.inputFeatures, attrs.type,
                            attrs.token, state.mFocusGrantToken, attrs.getTitle().toString(),
                            attrs.token, state.mInputTransferToken, attrs.getTitle().toString(),
                            outInputChannel);
                } else {
                    mRealWm.grantInputChannel(displayId, sc, window, mHostInputToken, attrs.flags,
                            attrs.privateFlags, attrs.inputFeatures, attrs.type, attrs.token,
                            state.mFocusGrantToken, attrs.getTitle().toString(), outInputChannel);
                            state.mInputTransferToken, attrs.getTitle().toString(),
                            outInputChannel);
                }
                state.mInputChannelToken =
                        outInputChannel != null ? outInputChannel.getToken() : null;
+1 −1
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ public class SystemWindows {
                    + "SystemWindow:" + view);
            return null;
        }
        return root.getFocusGrantToken();
        return root.getInputTransferToken();
    }

    private class PerDisplay {
+2 −1
Original line number Diff line number Diff line
@@ -163,7 +163,8 @@ class BackNavigationController {

            if (window == null) {
                EmbeddedWindowController.EmbeddedWindow embeddedWindow =
                        wmService.mEmbeddedWindowController.getByFocusToken(focusedWindowToken);
                        wmService.mEmbeddedWindowController.getByInputTransferToken(
                                focusedWindowToken);
                if (embeddedWindow != null) {
                    ProtoLog.d(WM_DEBUG_BACK_PREVIEW,
                            "Current focused window is embeddedWindow. Dispatch KEYCODE_BACK.");
+16 −16
Original line number Diff line number Diff line
@@ -45,8 +45,8 @@ class EmbeddedWindowController {
    private static final String TAG = TAG_WITH_CLASS_NAME ? "EmbeddedWindowController" : TAG_WM;
    /* maps input token to an embedded window */
    private ArrayMap<IBinder /*input token */, EmbeddedWindow> mWindows = new ArrayMap<>();
    private ArrayMap<IBinder /*focus grant token */, EmbeddedWindow> mWindowsByFocusToken =
        new ArrayMap<>();
    private ArrayMap<IBinder /*input transfer token */, EmbeddedWindow>
            mWindowsByInputTransferToken = new ArrayMap<>();
    private ArrayMap<IBinder /*window token*/, EmbeddedWindow> mWindowsByWindowToken =
        new ArrayMap<>();
    private final Object mGlobalLock;
@@ -67,14 +67,14 @@ class EmbeddedWindowController {
    void add(IBinder inputToken, EmbeddedWindow window) {
        try {
            mWindows.put(inputToken, window);
            final IBinder focusToken = window.getFocusGrantToken();
            mWindowsByFocusToken.put(focusToken, window);
            final IBinder inputTransferToken = window.getInputTransferToken();
            mWindowsByInputTransferToken.put(inputTransferToken, window);
            mWindowsByWindowToken.put(window.getWindowToken(), window);
            updateProcessController(window);
            window.mClient.asBinder().linkToDeath(()-> {
                synchronized (mGlobalLock) {
                    mWindows.remove(inputToken);
                    mWindowsByFocusToken.remove(focusToken);
                    mWindowsByInputTransferToken.remove(inputTransferToken);
                }
            }, 0);
        } catch (RemoteException e) {
@@ -105,7 +105,7 @@ class EmbeddedWindowController {
            EmbeddedWindow ew = mWindows.valueAt(i);
            if (ew.mClient.asBinder() == client.asBinder()) {
                mWindows.removeAt(i).onRemoved();
                mWindowsByFocusToken.remove(ew.getFocusGrantToken());
                mWindowsByInputTransferToken.remove(ew.getInputTransferToken());
                mWindowsByWindowToken.remove(ew.getWindowToken());
                return;
            }
@@ -117,7 +117,7 @@ class EmbeddedWindowController {
            EmbeddedWindow ew = mWindows.valueAt(i);
            if (ew.mHostWindowState == host) {
                mWindows.removeAt(i).onRemoved();
                mWindowsByFocusToken.remove(ew.getFocusGrantToken());
                mWindowsByInputTransferToken.remove(ew.getInputTransferToken());
                mWindowsByWindowToken.remove(ew.getWindowToken());
            }
        }
@@ -127,8 +127,8 @@ class EmbeddedWindowController {
        return mWindows.get(inputToken);
    }

    EmbeddedWindow getByFocusToken(IBinder focusGrantToken) {
        return mWindowsByFocusToken.get(focusGrantToken);
    EmbeddedWindow getByInputTransferToken(IBinder inputTransferToken) {
        return mWindowsByInputTransferToken.get(inputTransferToken);
    }

    EmbeddedWindow getByWindowToken(IBinder windowToken) {
@@ -153,7 +153,7 @@ class EmbeddedWindowController {
         * to request focus transfer to the embedded. This is not the input token since we don't
         * want to give clients access to each others input token.
         */
        private final IBinder mFocusGrantToken;
        private final IBinder mInputTransferToken;

        private boolean mIsFocusable;

@@ -171,7 +171,7 @@ class EmbeddedWindowController {
         */
        EmbeddedWindow(Session session, WindowManagerService service, IWindow clientToken,
                       WindowState hostWindowState, int ownerUid, int ownerPid, int windowType,
                       int displayId, IBinder focusGrantToken, String inputHandleName,
                       int displayId, IBinder inputTransferToken, String inputHandleName,
                       boolean isFocusable) {
            mSession = session;
            mWmService = service;
@@ -183,7 +183,7 @@ class EmbeddedWindowController {
            mOwnerPid = ownerPid;
            mWindowType = windowType;
            mDisplayId = displayId;
            mFocusGrantToken = focusGrantToken;
            mInputTransferToken = inputTransferToken;
            final String hostWindowName =
                    (mHostWindowState != null) ? "-" + mHostWindowState.getWindowTag().toString()
                            : "";
@@ -260,8 +260,8 @@ class EmbeddedWindowController {
            return mOwnerUid;
        }

        IBinder getFocusGrantToken() {
            return mFocusGrantToken;
        IBinder getInputTransferToken() {
            return mInputTransferToken;
        }

        IBinder getInputChannelToken() {
@@ -290,7 +290,7 @@ class EmbeddedWindowController {
                    // Use null session since this is being granted by system server and doesn't
                    // require the host session to be passed in
                    mWmService.grantEmbeddedWindowFocus(null, mHostWindowState.mClient,
                            mFocusGrantToken, grantFocus);
                            mInputTransferToken, grantFocus);
                    if (grantFocus) {
                        // If granting focus to the embedded when tapped, we need to ensure the host
                        // gains focus as well or the transfer won't take effect since it requires
@@ -298,7 +298,7 @@ class EmbeddedWindowController {
                        mHostWindowState.handleTapOutsideFocusInsideSelf();
                    }
                } else {
                    mWmService.grantEmbeddedWindowFocus(mSession, mFocusGrantToken, grantFocus);
                    mWmService.grantEmbeddedWindowFocus(mSession, mInputTransferToken, grantFocus);
                }
            }
        }
Loading