Revert "Fix drag and drop (2/3)"

This reverts commit fbe5d9c423.

Bug: 137819199
Test: manual
Change-Id: I7afec569519b9c69eb03225672db6db141b20241
This commit is contained in:
Arthur Hung 2019-09-05 16:38:18 +08:00
parent 43f3695e9b
commit 6cbb975915
8 changed files with 2 additions and 91 deletions

View file

@ -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,

View file

@ -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);

View file

@ -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);
}

View file

@ -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();

View file

@ -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);

View file

@ -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>&) {}

View file

@ -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;

View file

@ -551,7 +551,6 @@ private:
void updateInputFlinger();
void updateInputWindowInfo();
void commitInputWindowCommands() REQUIRES(mStateLock);
void executeInputWindowCommands();
void setInputWindowsFinished();
void updateCursorAsync();