Revert "Fix drag and drop (2/3)"
This reverts commit fbe5d9c423
.
Bug: 137819199
Test: manual
Change-Id: I7afec569519b9c69eb03225672db6db141b20241
This commit is contained in:
parent
43f3695e9b
commit
6cbb975915
8 changed files with 2 additions and 91 deletions
|
@ -37,7 +37,6 @@ public:
|
|||
|
||||
virtual void setInputWindows(const std::vector<InputWindowInfo>& inputHandles,
|
||||
const sp<ISetInputWindowsListener>& setInputWindowsListener) = 0;
|
||||
virtual void transferTouchFocus(const sp<IBinder>& fromToken, const sp<IBinder>& toToken) = 0;
|
||||
virtual void registerInputChannel(const sp<InputChannel>& channel) = 0;
|
||||
virtual void unregisterInputChannel(const sp<InputChannel>& channel) = 0;
|
||||
};
|
||||
|
@ -51,8 +50,7 @@ public:
|
|||
enum {
|
||||
SET_INPUT_WINDOWS_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION,
|
||||
REGISTER_INPUT_CHANNEL_TRANSACTION,
|
||||
UNREGISTER_INPUT_CHANNEL_TRANSACTION,
|
||||
TRANSFER_TOUCH_FOCUS
|
||||
UNREGISTER_INPUT_CHANNEL_TRANSACTION
|
||||
};
|
||||
|
||||
virtual status_t onTransact(uint32_t code, const Parcel& data,
|
||||
|
|
|
@ -133,27 +133,6 @@ public:
|
|||
EXPECT_EQ(AMOTION_EVENT_ACTION_UP, mev->getAction());
|
||||
}
|
||||
|
||||
void expectMotionEvent(int motionEventType, int x, int y) {
|
||||
InputEvent *ev = consumeEvent();
|
||||
ASSERT_NE(ev, nullptr);
|
||||
ASSERT_EQ(ev->getType(), AINPUT_EVENT_TYPE_MOTION);
|
||||
MotionEvent *mev = static_cast<MotionEvent *>(ev);
|
||||
EXPECT_EQ(motionEventType, mev->getAction());
|
||||
EXPECT_EQ(x, mev->getX(0));
|
||||
EXPECT_EQ(y, mev->getY(0));
|
||||
}
|
||||
|
||||
void expectNoMotionEvent(int motionEventType) {
|
||||
InputEvent *ev = consumeEvent();
|
||||
if (ev == nullptr || ev->getType() != AINPUT_EVENT_TYPE_MOTION) {
|
||||
// Didn't find an event or a motion event so assume action didn't occur.
|
||||
return;
|
||||
}
|
||||
|
||||
MotionEvent *mev = static_cast<MotionEvent *>(ev);
|
||||
EXPECT_NE(motionEventType, mev->getAction());
|
||||
}
|
||||
|
||||
~InputSurface() {
|
||||
mInputFlinger->unregisterInputChannel(mServerChannel);
|
||||
}
|
||||
|
@ -278,15 +257,6 @@ void injectTap(int x, int y) {
|
|||
}
|
||||
}
|
||||
|
||||
void injectMotionEvent(std::string event, int x, int y) {
|
||||
char *buf1, *buf2;
|
||||
asprintf(&buf1, "%d", x);
|
||||
asprintf(&buf2, "%d", y);
|
||||
if (fork() == 0) {
|
||||
execlp("input", "input", "motionevent", event.c_str(), buf1, buf2, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(InputSurfacesTest, can_receive_input) {
|
||||
std::unique_ptr<InputSurface> surface = makeSurface(100, 100);
|
||||
surface->showAt(100, 100);
|
||||
|
@ -504,26 +474,6 @@ TEST_F(InputSurfacesTest, input_respects_container_layer_visiblity) {
|
|||
bgSurface->expectTap(1, 1);
|
||||
}
|
||||
|
||||
TEST_F(InputSurfacesTest, transfer_touch_focus) {
|
||||
std::unique_ptr<InputSurface> fromSurface = makeSurface(100, 100);
|
||||
|
||||
fromSurface->showAt(10, 10);
|
||||
injectMotionEvent("DOWN", 11, 11);
|
||||
fromSurface->expectMotionEvent(AMOTION_EVENT_ACTION_DOWN, 1, 1);
|
||||
|
||||
std::unique_ptr<InputSurface> toSurface = makeSurface(100, 100);
|
||||
toSurface->showAt(10, 10);
|
||||
|
||||
sp<IBinder> fromToken = fromSurface->mServerChannel->getToken();
|
||||
sp<IBinder> toToken = toSurface->mServerChannel->getToken();
|
||||
SurfaceComposerClient::Transaction t;
|
||||
t.transferTouchFocus(fromToken, toToken).apply(true);
|
||||
|
||||
injectMotionEvent("UP", 11, 11);
|
||||
toSurface->expectMotionEvent(AMOTION_EVENT_ACTION_UP, 1, 1);
|
||||
fromSurface->expectNoMotionEvent(AMOTION_EVENT_ACTION_UP);
|
||||
}
|
||||
|
||||
TEST_F(InputSurfacesTest, input_respects_outscreen) {
|
||||
std::unique_ptr<InputSurface> surface = makeSurface(100, 100);
|
||||
surface->showAt(-1, -1);
|
||||
|
|
|
@ -45,16 +45,6 @@ public:
|
|||
IBinder::FLAG_ONEWAY);
|
||||
}
|
||||
|
||||
virtual void transferTouchFocus(const sp<IBinder>& fromToken, const sp<IBinder>& toToken) {
|
||||
Parcel data, reply;
|
||||
data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor());
|
||||
|
||||
data.writeStrongBinder(fromToken);
|
||||
data.writeStrongBinder(toToken);
|
||||
remote()->transact(BnInputFlinger::TRANSFER_TOUCH_FOCUS, data, &reply,
|
||||
IBinder::FLAG_ONEWAY);
|
||||
}
|
||||
|
||||
virtual void registerInputChannel(const sp<InputChannel>& channel) {
|
||||
Parcel data, reply;
|
||||
data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor());
|
||||
|
@ -102,13 +92,6 @@ status_t BnInputFlinger::onTransact(
|
|||
unregisterInputChannel(channel);
|
||||
break;
|
||||
}
|
||||
case TRANSFER_TOUCH_FOCUS: {
|
||||
CHECK_INTERFACE(IInputFlinger, data, reply);
|
||||
sp<IBinder> fromToken = data.readStrongBinder();
|
||||
sp<IBinder> toToken = data.readStrongBinder();
|
||||
transferTouchFocus(fromToken, toToken);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return BBinder::onTransact(code, data, reply, flags);
|
||||
}
|
||||
|
|
|
@ -117,10 +117,6 @@ void InputManager::setInputWindows(const std::vector<InputWindowInfo>& infos,
|
|||
}
|
||||
}
|
||||
|
||||
void InputManager::transferTouchFocus(const sp<IBinder>& fromToken, const sp<IBinder>& toToken) {
|
||||
mDispatcher->transferTouchFocus(fromToken, toToken);
|
||||
}
|
||||
|
||||
// Used by tests only.
|
||||
void InputManager::registerInputChannel(const sp<InputChannel>& channel) {
|
||||
IPCThreadState* ipc = IPCThreadState::self();
|
||||
|
|
|
@ -96,7 +96,6 @@ public:
|
|||
|
||||
virtual void setInputWindows(const std::vector<InputWindowInfo>& handles,
|
||||
const sp<ISetInputWindowsListener>& setInputWindowsListener);
|
||||
virtual void transferTouchFocus(const sp<IBinder>& fromToken, const sp<IBinder>& toToken);
|
||||
|
||||
virtual void registerInputChannel(const sp<InputChannel>& channel);
|
||||
virtual void unregisterInputChannel(const sp<InputChannel>& channel);
|
||||
|
|
|
@ -42,7 +42,6 @@ public:
|
|||
virtual status_t dump(int fd, const Vector<String16>& args);
|
||||
void setInputWindows(const std::vector<InputWindowInfo>&,
|
||||
const sp<ISetInputWindowsListener>&) {}
|
||||
void transferTouchFocus(const sp<IBinder>&, const sp<IBinder>&) {}
|
||||
void registerInputChannel(const sp<InputChannel>&) {}
|
||||
void unregisterInputChannel(const sp<InputChannel>&) {}
|
||||
|
||||
|
|
|
@ -2606,7 +2606,7 @@ void SurfaceFlinger::updateInputFlinger() {
|
|||
setInputWindowsFinished();
|
||||
}
|
||||
|
||||
executeInputWindowCommands();
|
||||
mInputWindowCommands.clear();
|
||||
}
|
||||
|
||||
void SurfaceFlinger::updateInputWindowInfo() {
|
||||
|
@ -2630,19 +2630,6 @@ void SurfaceFlinger::commitInputWindowCommands() {
|
|||
mPendingInputWindowCommands.clear();
|
||||
}
|
||||
|
||||
void SurfaceFlinger::executeInputWindowCommands() {
|
||||
for (const auto& transferTouchFocusCommand : mInputWindowCommands.transferTouchFocusCommands) {
|
||||
if (transferTouchFocusCommand.fromToken != nullptr &&
|
||||
transferTouchFocusCommand.toToken != nullptr &&
|
||||
transferTouchFocusCommand.fromToken != transferTouchFocusCommand.toToken) {
|
||||
mInputFlinger->transferTouchFocus(transferTouchFocusCommand.fromToken,
|
||||
transferTouchFocusCommand.toToken);
|
||||
}
|
||||
}
|
||||
|
||||
mInputWindowCommands.clear();
|
||||
}
|
||||
|
||||
void SurfaceFlinger::updateCursorAsync()
|
||||
{
|
||||
compositionengine::CompositionRefreshArgs refreshArgs;
|
||||
|
|
|
@ -551,7 +551,6 @@ private:
|
|||
void updateInputFlinger();
|
||||
void updateInputWindowInfo();
|
||||
void commitInputWindowCommands() REQUIRES(mStateLock);
|
||||
void executeInputWindowCommands();
|
||||
void setInputWindowsFinished();
|
||||
void updateCursorAsync();
|
||||
|
||||
|
|
Loading…
Reference in a new issue