Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(966)

Unified Diff: content/renderer/input/input_event_filter.cc

Issue 2265393002: Refactor compositor event handling path to be callback-based (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: creis's review, rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/input/input_event_filter.h ('k') | content/renderer/input/input_event_filter_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/input/input_event_filter.cc
diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc
index 0e56236498df571739830d00dd4a7af6a3ef3241..a82f2f76dc28bddaebd366a0da6a7f04da4ba96f 100644
--- a/content/renderer/input/input_event_filter.cc
+++ b/content/renderer/input/input_event_filter.cc
@@ -57,7 +57,6 @@ InputEventFilter::InputEventFilter(
sender_(NULL),
target_task_runner_(target_task_runner),
input_handler_manager_(NULL),
- current_overscroll_params_(NULL),
renderer_scheduler_(NULL) {
DCHECK(target_task_runner_.get());
DCHECK(main_task_runner_->BelongsToCurrentThread());
@@ -96,11 +95,6 @@ void InputEventFilter::UnregisterRoutingID(int routing_id) {
void InputEventFilter::DidOverscroll(int routing_id,
const DidOverscrollParams& params) {
- if (current_overscroll_params_) {
- current_overscroll_params_->reset(new DidOverscrollParams(params));
- return;
- }
-
SendMessage(std::unique_ptr<IPC::Message>(
new InputHostMsg_DidOverscroll(routing_id, params)));
}
@@ -191,9 +185,7 @@ bool InputEventFilter::OnMessageReceived(const IPC::Message& message) {
return true;
}
-InputEventFilter::~InputEventFilter() {
- DCHECK(!current_overscroll_params_);
-}
+InputEventFilter::~InputEventFilter() {}
void InputEventFilter::ForwardToHandler(const IPC::Message& message,
base::TimeTicks received_time) {
@@ -219,6 +211,7 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message,
ui::WebInputEventTraits::Clone(*std::get<0>(params));
ui::LatencyInfo latency_info = std::get<1>(params);
InputEventDispatchType dispatch_type = std::get<2>(params);
+
DCHECK(event);
DCHECK(dispatch_type == DISPATCH_TYPE_BLOCKING ||
dispatch_type == DISPATCH_TYPE_NON_BLOCKING);
@@ -226,18 +219,20 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message,
if (!received_time.is_null())
event->timeStampSeconds = ui::EventTimeStampToSeconds(received_time);
- bool send_ack = dispatch_type == DISPATCH_TYPE_BLOCKING;
-
- // Intercept |DidOverscroll| notifications, bundling any triggered overscroll
- // response with the input event ack.
- std::unique_ptr<DidOverscrollParams> overscroll_params;
- base::AutoReset<std::unique_ptr<DidOverscrollParams>*>
- auto_reset_current_overscroll_params(
- &current_overscroll_params_, send_ack ? &overscroll_params : NULL);
-
- InputEventAckState ack_state = input_handler_manager_->HandleInputEvent(
- routing_id, event.get(), &latency_info);
+ input_handler_manager_->HandleInputEvent(
+ routing_id, std::move(event), latency_info,
+ base::Bind(&InputEventFilter::DidForwardToHandlerAndOverscroll, this,
+ routing_id, dispatch_type));
+};
+void InputEventFilter::DidForwardToHandlerAndOverscroll(
+ int routing_id,
+ InputEventDispatchType dispatch_type,
+ InputEventAckState ack_state,
+ ui::ScopedWebInputEvent event,
+ const ui::LatencyInfo& latency_info,
+ std::unique_ptr<DidOverscrollParams> overscroll_params) {
+ bool send_ack = dispatch_type == DISPATCH_TYPE_BLOCKING;
uint32_t unique_touch_event_id =
ui::WebInputEventTraits::GetUniqueTouchEventId(*event);
WebInputEvent::Type type = event->type;
« no previous file with comments | « content/renderer/input/input_event_filter.h ('k') | content/renderer/input/input_event_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698