Merge "Ensure embedded window's channel is not disposed before being duped" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
fd07462020
@@ -23,6 +23,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
|
||||
import static com.android.server.wm.WindowStateProto.IDENTIFIER;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
@@ -217,10 +218,10 @@ class EmbeddedWindowController {
|
||||
mHostWindowState.mInputWindowHandle.getInputApplicationHandle());
|
||||
}
|
||||
|
||||
InputChannel openInputChannel() {
|
||||
void openInputChannel(@NonNull InputChannel outInputChannel) {
|
||||
final String name = toString();
|
||||
mInputChannel = mWmService.mInputManager.createInputChannel(name);
|
||||
return mInputChannel;
|
||||
mInputChannel.copyTo(outInputChannel);
|
||||
}
|
||||
|
||||
void onRemoved() {
|
||||
|
||||
@@ -8791,24 +8791,22 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
final int sanitizedType = sanitizeWindowType(session, displayId, windowToken, type);
|
||||
final InputApplicationHandle applicationHandle;
|
||||
final String name;
|
||||
final InputChannel clientChannel;
|
||||
Objects.requireNonNull(outInputChannel);
|
||||
synchronized (mGlobalLock) {
|
||||
EmbeddedWindowController.EmbeddedWindow win =
|
||||
new EmbeddedWindowController.EmbeddedWindow(session, this, window,
|
||||
mInputToWindowMap.get(hostInputToken), callingUid, callingPid,
|
||||
sanitizedType, displayId, focusGrantToken, inputHandleName,
|
||||
(flags & FLAG_NOT_FOCUSABLE) == 0);
|
||||
clientChannel = win.openInputChannel();
|
||||
mEmbeddedWindowController.add(clientChannel.getToken(), win);
|
||||
win.openInputChannel(outInputChannel);
|
||||
mEmbeddedWindowController.add(outInputChannel.getToken(), win);
|
||||
applicationHandle = win.getApplicationHandle();
|
||||
name = win.toString();
|
||||
}
|
||||
|
||||
updateInputChannel(clientChannel.getToken(), callingUid, callingPid, displayId, surface,
|
||||
updateInputChannel(outInputChannel.getToken(), callingUid, callingPid, displayId, surface,
|
||||
name, applicationHandle, flags, privateFlags, inputFeatures, sanitizedType,
|
||||
null /* region */, window);
|
||||
|
||||
clientChannel.copyTo(outInputChannel);
|
||||
}
|
||||
|
||||
boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow) {
|
||||
|
||||
Reference in New Issue
Block a user