Commit 1286c724 authored by Trent Apted's avatar Trent Apted Committed by Commit Bot

Revert "chromeos: provide ability to supply event for rewriting"

This reverts commit c8c4c686.

Reason for revert: Causes EventRewriterTest.EventRewriting to fail on Android/Linux CFI starting

https://uberchromegw.corp.google.com/i/chromium.memory/builders/Android%20CFI/builds/241

error like

../../ui/events/event.cc:306:10: runtime error: control flow integrity check for type 'ui::LocatedEvent' failed during base-to-derived cast (vtable address 0x0000002689b0)
0x0000002689b0: note: vtable is of type 'ui::(anonymous namespace)::TestEvent'
    #0 0x62afb5 in ui::Event::AsLocatedEvent() const ./../../ui/events/event.cc:306:10
    #1 0x63063a in ui::(anonymous namespace)::IsLocatedEventWithDifferentLocations(ui::Event const&) ./../../ui/events/event_source.cc:19:45
    #2 0x630083 in ui::EventSource::SendEventToSink(ui::Event*) ./../../ui/events/event_source.cc:46:34
    #3 0x4a23e2 in ui::(anonymous namespace)::TestEventRewriteSource::Send(ui::EventType) ./../../ui/events/event_rewriter_unittest.cc:69:5
    #4 0x4a1fe4 in ui::EventRewriterTest_EventRewriting_Test::TestBody() ./../../ui/events/event_rewriter_unittest.cc:188:5


Original change's description:
> chromeos: provide ability to supply event for rewriting
> 
> EventRewriters don't honor the target, and so generally expect the
> root_location and location to be the same. This patch changes EventSource::SendEventToSink()
> to create a new Event if the existing has differing locations (and a target).
> 
> BUG=817112
> TEST=covered by tests
> 
> Change-Id: Iaabe019fed4350610306576a054b7d395def92ff
> Reviewed-on: https://chromium-review.googlesource.com/956925
> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
> Reviewed-by: Scott Violet <sky@chromium.org>
> Commit-Queue: Scott Violet <sky@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#542653}

TBR=sadrul@chromium.org,sky@chromium.org

Change-Id: I5ee070c74eba97a446c1a8e71e12f64b90b27401
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 817112
Reviewed-on: https://chromium-review.googlesource.com/958806Reviewed-by: default avatarTrent Apted <tapted@chromium.org>
Commit-Queue: Trent Apted <tapted@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542705}
parent a178491a
...@@ -11,17 +11,6 @@ ...@@ -11,17 +11,6 @@
#include "ui/events/event_sink.h" #include "ui/events/event_sink.h"
namespace ui { namespace ui {
namespace {
bool IsLocatedEventWithDifferentLocations(const Event& event) {
if (!event.IsLocatedEvent())
return false;
const LocatedEvent* located_event = event.AsLocatedEvent();
return located_event->target() && located_event->location_f() !=
located_event->root_location_f();
}
} // namespace
EventSource::EventSource() {} EventSource::EventSource() {}
...@@ -41,23 +30,12 @@ void EventSource::RemoveEventRewriter(EventRewriter* rewriter) { ...@@ -41,23 +30,12 @@ void EventSource::RemoveEventRewriter(EventRewriter* rewriter) {
} }
EventDispatchDetails EventSource::SendEventToSink(Event* event) { EventDispatchDetails EventSource::SendEventToSink(Event* event) {
std::unique_ptr<ui::Event> event_for_rewriting_ptr;
Event* event_for_rewriting = event;
if (!rewriter_list_.empty() && IsLocatedEventWithDifferentLocations(*event)) {
// EventRewriters don't expect an event with differing location and
// root-location (because they don't honor the target). Provide such an
// event for rewriters.
event_for_rewriting_ptr = ui::Event::Clone(*event);
event_for_rewriting_ptr->AsLocatedEvent()->set_location_f(
event_for_rewriting_ptr->AsLocatedEvent()->root_location_f());
event_for_rewriting = event_for_rewriting_ptr.get();
}
std::unique_ptr<Event> rewritten_event; std::unique_ptr<Event> rewritten_event;
EventRewriteStatus status = EVENT_REWRITE_CONTINUE; EventRewriteStatus status = EVENT_REWRITE_CONTINUE;
EventRewriterList::const_iterator it = rewriter_list_.begin(), EventRewriterList::const_iterator it = rewriter_list_.begin(),
end = rewriter_list_.end(); end = rewriter_list_.end();
for (; it != end; ++it) { for (; it != end; ++it) {
status = (*it)->RewriteEvent(*event_for_rewriting, &rewritten_event); status = (*it)->RewriteEvent(*event, &rewritten_event);
if (status == EVENT_REWRITE_DISCARD) { if (status == EVENT_REWRITE_DISCARD) {
CHECK(!rewritten_event); CHECK(!rewritten_event);
return EventDispatchDetails(); return EventDispatchDetails();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment