Plumbing for SurfaceControl#setInputWindowInfo.
The standard SurfaceControl plumbing, plus moving InputWindowInfo from the services jar to the framework jar so that it is accessible from SurfaceControl. Bug: 80101428 Bug: 113136004 Bug: 111440400 Test: None Change-Id: I3443a98cd04ac6b36977e1874641a34c6befca34
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.server.input;
|
||||
package android.view;
|
||||
|
||||
/**
|
||||
* Functions as a handle for an application that can receive input.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.server.input;
|
||||
package android.view;
|
||||
|
||||
import android.graphics.Region;
|
||||
import android.view.IWindow;
|
||||
@@ -153,6 +153,9 @@ public class SurfaceControl implements Parcelable {
|
||||
|
||||
private static native Display.HdrCapabilities nativeGetHdrCapabilities(IBinder displayToken);
|
||||
|
||||
private static native void nativeSetInputWindowInfo(long transactionObj, long nativeObject,
|
||||
InputWindowHandle handle);
|
||||
|
||||
|
||||
private final CloseGuard mCloseGuard = CloseGuard.get();
|
||||
private final String mName;
|
||||
@@ -1459,6 +1462,12 @@ public class SurfaceControl implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Transaction setInputWindowInfo(SurfaceControl sc, InputWindowHandle handle) {
|
||||
sc.checkNotReleased();
|
||||
nativeSetInputWindowInfo(mNativeObject, sc.mNativeObject, handle);
|
||||
return this;
|
||||
}
|
||||
|
||||
@UnsupportedAppUsage
|
||||
public Transaction setMatrix(SurfaceControl sc,
|
||||
float dsdx, float dtdx, float dtdy, float dsdy) {
|
||||
|
||||
@@ -135,13 +135,13 @@ static const JNINativeMethod gInputApplicationHandleMethods[] = {
|
||||
LOG_FATAL_IF(! (var), "Unable to find field " fieldName);
|
||||
|
||||
int register_android_server_InputApplicationHandle(JNIEnv* env) {
|
||||
int res = jniRegisterNativeMethods(env, "com/android/server/input/InputApplicationHandle",
|
||||
int res = jniRegisterNativeMethods(env, "android/view/InputApplicationHandle",
|
||||
gInputApplicationHandleMethods, NELEM(gInputApplicationHandleMethods));
|
||||
(void) res; // Faked use when LOG_NDEBUG.
|
||||
LOG_FATAL_IF(res < 0, "Unable to register native methods.");
|
||||
|
||||
jclass clazz;
|
||||
FIND_CLASS(clazz, "com/android/server/input/InputApplicationHandle");
|
||||
FIND_CLASS(clazz, "android/view/InputApplicationHandle");
|
||||
|
||||
GET_FIELD_ID(gInputApplicationHandleClassInfo.ptr, clazz,
|
||||
"ptr", "J");
|
||||
|
||||
@@ -221,20 +221,20 @@ static const JNINativeMethod gInputWindowHandleMethods[] = {
|
||||
LOG_FATAL_IF(! (var), "Unable to find field " fieldName);
|
||||
|
||||
int register_android_server_InputWindowHandle(JNIEnv* env) {
|
||||
int res = jniRegisterNativeMethods(env, "com/android/server/input/InputWindowHandle",
|
||||
int res = jniRegisterNativeMethods(env, "android/view/InputWindowHandle",
|
||||
gInputWindowHandleMethods, NELEM(gInputWindowHandleMethods));
|
||||
(void) res; // Faked use when LOG_NDEBUG.
|
||||
LOG_FATAL_IF(res < 0, "Unable to register native methods.");
|
||||
|
||||
jclass clazz;
|
||||
FIND_CLASS(clazz, "com/android/server/input/InputWindowHandle");
|
||||
FIND_CLASS(clazz, "android/view/InputWindowHandle");
|
||||
|
||||
GET_FIELD_ID(gInputWindowHandleClassInfo.ptr, clazz,
|
||||
"ptr", "J");
|
||||
|
||||
GET_FIELD_ID(gInputWindowHandleClassInfo.inputApplicationHandle,
|
||||
clazz,
|
||||
"inputApplicationHandle", "Lcom/android/server/input/InputApplicationHandle;");
|
||||
"inputApplicationHandle", "Landroid/view/InputApplicationHandle;");
|
||||
|
||||
GET_FIELD_ID(gInputWindowHandleClassInfo.inputChannel, clazz,
|
||||
"inputChannel", "Landroid/view/InputChannel;");
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include "android_os_Parcel.h"
|
||||
#include "android_util_Binder.h"
|
||||
#include "android_hardware_input_InputWindowHandle.h"
|
||||
#include "android/graphics/Bitmap.h"
|
||||
#include "android/graphics/GraphicsJNI.h"
|
||||
#include "android/graphics/Region.h"
|
||||
@@ -324,6 +325,18 @@ static void nativeSetAlpha(JNIEnv* env, jclass clazz, jlong transactionObj,
|
||||
transaction->setAlpha(ctrl, alpha);
|
||||
}
|
||||
|
||||
static void nativeSetInputWindowInfo(JNIEnv* env, jclass clazz, jlong transactionObj,
|
||||
jlong nativeObject, jobject inputWindow) {
|
||||
auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
|
||||
|
||||
sp<NativeInputWindowHandle> handle = android_server_InputWindowHandle_getHandle(
|
||||
env, inputWindow);
|
||||
handle->updateInfo();
|
||||
|
||||
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
|
||||
transaction->setInputWindowInfo(ctrl, *handle->getInfo());
|
||||
}
|
||||
|
||||
static void nativeSetColor(JNIEnv* env, jclass clazz, jlong transactionObj,
|
||||
jlong nativeObject, jfloatArray fColor) {
|
||||
auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
|
||||
@@ -930,6 +943,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = {
|
||||
(void*)nativeScreenshot },
|
||||
{"nativeCaptureLayers", "(Landroid/os/IBinder;Landroid/graphics/Rect;F)Landroid/graphics/GraphicBuffer;",
|
||||
(void*)nativeCaptureLayers },
|
||||
{"nativeSetInputWindowInfo", "(JJLandroid/view/InputWindowHandle;)V",
|
||||
(void*)nativeSetInputWindowInfo },
|
||||
};
|
||||
|
||||
int register_android_view_SurfaceControl(JNIEnv* env)
|
||||
|
||||
@@ -72,6 +72,8 @@ import android.view.IInputFilter;
|
||||
import android.view.IInputFilterHost;
|
||||
import android.view.IWindow;
|
||||
import android.view.InputChannel;
|
||||
import android.view.InputApplicationHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
import android.view.InputDevice;
|
||||
import android.view.InputEvent;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
@@ -95,6 +95,7 @@ import android.util.Slog;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.view.DisplayInfo;
|
||||
import android.view.IApplicationToken;
|
||||
import android.view.InputApplicationHandle;
|
||||
import android.view.RemoteAnimationDefinition;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.SurfaceControl.Transaction;
|
||||
@@ -105,7 +106,6 @@ import android.view.animation.Animation;
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.ToBooleanFunction;
|
||||
import com.android.server.input.InputApplicationHandle;
|
||||
import com.android.server.policy.WindowManagerPolicy.StartingSurface;
|
||||
import com.android.server.wm.WindowManagerService.H;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ import android.view.SurfaceSession;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.internal.util.Preconditions;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
import com.android.server.wm.WindowManagerInternal.IDragDropCallback;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
|
||||
@@ -57,8 +57,8 @@ import android.view.animation.Interpolator;
|
||||
|
||||
import com.android.internal.view.IDragAndDropPermissions;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.input.InputApplicationHandle;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import android.view.InputApplicationHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@ import android.os.UserHandle;
|
||||
import android.view.InputChannel;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.android.server.input.InputApplicationHandle;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import android.view.InputApplicationHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
|
||||
@@ -42,9 +42,12 @@ import android.util.Log;
|
||||
import android.util.Slog;
|
||||
import android.view.InputChannel;
|
||||
import android.view.InputEventReceiver;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.WindowManager;
|
||||
import android.view.InputApplicationHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
|
||||
import com.android.server.input.InputApplicationHandle;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import com.android.server.input.InputManagerService;
|
||||
import com.android.server.policy.WindowManagerPolicy;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -49,8 +49,9 @@ import android.view.MotionEvent;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.server.input.InputApplicationHandle;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import android.view.InputApplicationHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
import com.android.server.wm.WindowManagerService.H;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@@ -29,7 +29,7 @@ import android.view.IWindow;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.server.input.InputManagerService;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
|
||||
/**
|
||||
* Controller for task positioning by drag.
|
||||
|
||||
@@ -191,7 +191,7 @@ import android.view.animation.Interpolator;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.ToBooleanFunction;
|
||||
import com.android.server.input.InputWindowHandle;
|
||||
import android.view.InputWindowHandle;
|
||||
import com.android.server.policy.WindowManagerPolicy;
|
||||
import com.android.server.wm.LocalAnimationAdapter.AnimationSpec;
|
||||
import com.android.server.wm.utils.InsetUtils;
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
#include <utils/Trace.h>
|
||||
#include <utils/SortedVector.h>
|
||||
|
||||
#include <binder/IServiceManager.h>
|
||||
|
||||
#include <input/PointerController.h>
|
||||
#include <input/SpriteController.h>
|
||||
|
||||
@@ -1640,7 +1642,7 @@ static const JNINativeMethod gInputManagerMethods[] = {
|
||||
{ "nativeHasKeys", "(JII[I[Z)Z",
|
||||
(void*) nativeHasKeys },
|
||||
{ "nativeRegisterInputChannel",
|
||||
"(JLandroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;I)V",
|
||||
"(JLandroid/view/InputChannel;Landroid/view/InputWindowHandle;I)V",
|
||||
(void*) nativeRegisterInputChannel },
|
||||
{ "nativeUnregisterInputChannel", "(JLandroid/view/InputChannel;)V",
|
||||
(void*) nativeUnregisterInputChannel },
|
||||
@@ -1650,9 +1652,9 @@ static const JNINativeMethod gInputManagerMethods[] = {
|
||||
(void*) nativeInjectInputEvent },
|
||||
{ "nativeToggleCapsLock", "(JI)V",
|
||||
(void*) nativeToggleCapsLock },
|
||||
{ "nativeSetInputWindows", "(J[Lcom/android/server/input/InputWindowHandle;I)V",
|
||||
{ "nativeSetInputWindows", "(J[Landroid/view/InputWindowHandle;I)V",
|
||||
(void*) nativeSetInputWindows },
|
||||
{ "nativeSetFocusedApplication", "(JILcom/android/server/input/InputApplicationHandle;)V",
|
||||
{ "nativeSetFocusedApplication", "(JILandroid/view/InputApplicationHandle;)V",
|
||||
(void*) nativeSetFocusedApplication },
|
||||
{ "nativeSetFocusedDisplay", "(JI)V",
|
||||
(void*) nativeSetFocusedDisplay },
|
||||
@@ -1731,11 +1733,11 @@ int register_android_server_InputManager(JNIEnv* env) {
|
||||
"notifySwitch", "(JII)V");
|
||||
|
||||
GET_METHOD_ID(gServiceClassInfo.notifyInputChannelBroken, clazz,
|
||||
"notifyInputChannelBroken", "(Lcom/android/server/input/InputWindowHandle;)V");
|
||||
"notifyInputChannelBroken", "(Landroid/view/InputWindowHandle;)V");
|
||||
|
||||
GET_METHOD_ID(gServiceClassInfo.notifyANR, clazz,
|
||||
"notifyANR",
|
||||
"(Lcom/android/server/input/InputApplicationHandle;Lcom/android/server/input/InputWindowHandle;Ljava/lang/String;)J");
|
||||
"(Landroid/view/InputApplicationHandle;Landroid/view/InputWindowHandle;Ljava/lang/String;)J");
|
||||
|
||||
GET_METHOD_ID(gServiceClassInfo.filterInputEvent, clazz,
|
||||
"filterInputEvent", "(Landroid/view/InputEvent;I)Z");
|
||||
@@ -1748,11 +1750,11 @@ int register_android_server_InputManager(JNIEnv* env) {
|
||||
|
||||
GET_METHOD_ID(gServiceClassInfo.interceptKeyBeforeDispatching, clazz,
|
||||
"interceptKeyBeforeDispatching",
|
||||
"(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J");
|
||||
"(Landroid/view/InputWindowHandle;Landroid/view/KeyEvent;I)J");
|
||||
|
||||
GET_METHOD_ID(gServiceClassInfo.dispatchUnhandledKey, clazz,
|
||||
"dispatchUnhandledKey",
|
||||
"(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;");
|
||||
"(Landroid/view/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;");
|
||||
|
||||
GET_METHOD_ID(gServiceClassInfo.checkInjectEventsPermission, clazz,
|
||||
"checkInjectEventsPermission", "(II)Z");
|
||||
|
||||
Reference in New Issue
Block a user