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

Commit 536ca6ca authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Only update native InputApplicationHandle once" into rvc-dev am: 274863f9

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2cad950c1c9320b5bce2f030896a4c33ec9b657a
parents 4186f7df 274863f9
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.view;

import android.annotation.NonNull;
import android.os.IBinder;

/**
@@ -31,17 +32,20 @@ public final class InputApplicationHandle {
    private long ptr;

    // Application name.
    public String name;
    public final @NonNull String name;

    // Dispatching timeout.
    public long dispatchingTimeoutNanos;
    public final long dispatchingTimeoutNanos;

    public final IBinder token;

    private native void nativeDispose();

    public InputApplicationHandle(IBinder token) {
    public InputApplicationHandle(@NonNull IBinder token, @NonNull String name,
            long dispatchingTimeoutNanos) {
        this.token = token;
        this.name = name;
        this.dispatchingTimeoutNanos = dispatchingTimeoutNanos;
    }

    public InputApplicationHandle(InputApplicationHandle handle) {
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public final class InputWindowHandle {
    private long ptr;

    // The input application handle.
    public final InputApplicationHandle inputApplicationHandle;
    public InputApplicationHandle inputApplicationHandle;

    // The token associates input data with a window and its input channel. The client input
    // channel and the server input channel will both contain this token.
+5 −0
Original line number Diff line number Diff line
@@ -58,6 +58,11 @@ bool NativeInputApplicationHandle::updateInfo() {
    if (!obj) {
        return false;
    }
    if (mInfo.token.get() != nullptr) {
        // The java fields are immutable, so it doesn't need to update again.
        env->DeleteLocalRef(obj);
        return true;
    }

    mInfo.name = getStringField(env, obj, gInputApplicationHandleClassInfo.name, "<null>");

+16 −2
Original line number Diff line number Diff line
@@ -416,7 +416,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
    // mOccludesParent field.
    final boolean hasWallpaper;
    // Input application handle used by the input dispatcher.
    final InputApplicationHandle mInputApplicationHandle;
    private InputApplicationHandle mInputApplicationHandle;

    final int launchedFromPid; // always the pid who started the activity.
    final int launchedFromUid; // always the uid who started the activity.
@@ -1501,7 +1501,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        info = aInfo;
        mUserId = UserHandle.getUserId(info.applicationInfo.uid);
        packageName = info.applicationInfo.packageName;
        mInputApplicationHandle = new InputApplicationHandle(appToken);
        intent = _intent;

        // If the class name in the intent doesn't match that of the target, this is probably an
@@ -1686,6 +1685,21 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        return lockTaskLaunchMode;
    }

    @NonNull InputApplicationHandle getInputApplicationHandle(boolean update) {
        if (mInputApplicationHandle == null) {
            mInputApplicationHandle = new InputApplicationHandle(appToken, toString(),
                    mInputDispatchingTimeoutNanos);
        } else if (update) {
            final String name = toString();
            if (mInputDispatchingTimeoutNanos != mInputApplicationHandle.dispatchingTimeoutNanos
                    || !name.equals(mInputApplicationHandle.name)) {
                mInputApplicationHandle = new InputApplicationHandle(appToken, name,
                        mInputDispatchingTimeoutNanos);
            }
        }
        return mInputApplicationHandle;
    }

    @Override
    ActivityRecord asActivityRecord() {
        // I am an activity record!
+2 −4
Original line number Diff line number Diff line
@@ -269,10 +269,8 @@ class DragState {
            mInputEventReceiver = new DragInputEventReceiver(mClientChannel,
                    mService.mH.getLooper(), mDragDropController);

            mDragApplicationHandle = new InputApplicationHandle(new Binder());
            mDragApplicationHandle.name = "drag";
            mDragApplicationHandle.dispatchingTimeoutNanos =
                    WindowManagerService.DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS;
            mDragApplicationHandle = new InputApplicationHandle(new Binder(), "drag",
                    WindowManagerService.DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS);

            mDragWindowHandle = new InputWindowHandle(mDragApplicationHandle,
                    display.getDisplayId());
Loading