summaryrefslogtreecommitdiff
path: root/libs/input/IInputFlinger.cpp
diff options
context:
space:
mode:
author Robert Carr <racarr@google.com> 2018-09-24 13:18:43 -0700
committer Robert Carr <racarr@google.com> 2018-11-27 12:39:33 -0800
commit1c4c5599696d049b112c40d629f8c74bb612b01f (patch)
treed0da6e66f155d1d5e3573e5f4c99d2781d97eb88 /libs/input/IInputFlinger.cpp
parent720e506fcab38d2f73b84630744ad100c5b6609d (diff)
Add some tests for native input.
Test some important scenarios for input being driven by SurfaceControl rather than the WindowManager. Test: EndToEndNativeInputTest Bug: 80101428 Bug: 113136004 Bug: 111440400 Change-Id: I46b302774a19c43d12680a8b7e2bb553dfcf4175
Diffstat (limited to 'libs/input/IInputFlinger.cpp')
-rw-r--r--libs/input/IInputFlinger.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/input/IInputFlinger.cpp b/libs/input/IInputFlinger.cpp
index 47a2c0c347..477e54e708 100644
--- a/libs/input/IInputFlinger.cpp
+++ b/libs/input/IInputFlinger.cpp
@@ -40,6 +40,20 @@ public:
}
remote()->transact(BnInputFlinger::SET_INPUT_WINDOWS_TRANSACTION, data, &reply);
}
+
+ virtual void registerInputChannel(const sp<InputChannel>& channel) {
+ Parcel data, reply;
+ data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor());
+ channel->write(data);
+ remote()->transact(BnInputFlinger::REGISTER_INPUT_CHANNEL_TRANSACTION, data, &reply);
+ }
+
+ virtual void unregisterInputChannel(const sp<InputChannel>& channel) {
+ Parcel data, reply;
+ data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor());
+ channel->write(data);
+ remote()->transact(BnInputFlinger::UNREGISTER_INPUT_CHANNEL_TRANSACTION, data, &reply);
+ }
};
IMPLEMENT_META_INTERFACE(InputFlinger, "android.input.IInputFlinger");
@@ -61,6 +75,20 @@ status_t BnInputFlinger::onTransact(
setInputWindows(handles);
break;
}
+ case REGISTER_INPUT_CHANNEL_TRANSACTION: {
+ CHECK_INTERFACE(IInputFlinger, data, reply);
+ sp<InputChannel> channel = new InputChannel();
+ channel->read(data);
+ registerInputChannel(channel);
+ break;
+ }
+ case UNREGISTER_INPUT_CHANNEL_TRANSACTION: {
+ CHECK_INTERFACE(IInputFlinger, data, reply);
+ sp<InputChannel> channel = new InputChannel();
+ channel->read(data);
+ unregisterInputChannel(channel);
+ break;
+ }
default:
return BBinder::onTransact(code, data, reply, flags);
}