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

Side by Side Diff: content/renderer/input/render_widget_input_handler.cc

Issue 1780953003: Change the non-blocking event queue to the main thread event queue. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_wheel_regression_5
Patch Set: Force ack in renderer to be solely based on the DispatchEventType Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/input/render_widget_input_handler.h" 5 #include "content/renderer/input/render_widget_input_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 WebInputEventResult processed = prevent_default 299 WebInputEventResult processed = prevent_default
300 ? WebInputEventResult::HandledSuppressed 300 ? WebInputEventResult::HandledSuppressed
301 : WebInputEventResult::NotHandled; 301 : WebInputEventResult::NotHandled;
302 if (input_event.type != WebInputEvent::Char || !suppress_next_char_events_) { 302 if (input_event.type != WebInputEvent::Char || !suppress_next_char_events_) {
303 suppress_next_char_events_ = false; 303 suppress_next_char_events_ = false;
304 if (processed == WebInputEventResult::NotHandled && widget_->webwidget()) 304 if (processed == WebInputEventResult::NotHandled && widget_->webwidget())
305 processed = widget_->webwidget()->handleInputEvent(input_event); 305 processed = widget_->webwidget()->handleInputEvent(input_event);
306 } 306 }
307 307
308 bool non_blocking = 308 bool non_blocking =
309 dispatch_type ==
310 InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN ||
309 dispatch_type == InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING; 311 dispatch_type == InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING;
310 // TODO(dtapuska): Use the input_event.timeStampSeconds as the start 312 // TODO(dtapuska): Use the input_event.timeStampSeconds as the start
311 // ideally this should be when the event was sent by the compositor to the 313 // ideally this should be when the event was sent by the compositor to the
312 // renderer. crbug.com/565348 314 // renderer. crbug.com/565348
313 if (input_event.type == WebInputEvent::TouchStart || 315 if (input_event.type == WebInputEvent::TouchStart ||
314 input_event.type == WebInputEvent::TouchMove || 316 input_event.type == WebInputEvent::TouchMove ||
315 input_event.type == WebInputEvent::TouchEnd) { 317 input_event.type == WebInputEvent::TouchEnd) {
316 LogPassiveEventListenersUma( 318 LogPassiveEventListenersUma(
317 processed, non_blocking, 319 processed, non_blocking,
318 static_cast<const WebTouchEvent&>(input_event).cancelable, 320 static_cast<const WebTouchEvent&>(input_event).cancelable,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 rate_limiting_wanted = 393 rate_limiting_wanted =
392 total_input_handling_time_this_frame_.InMicroseconds() > 394 total_input_handling_time_this_frame_.InMicroseconds() >
393 kInputHandlingTimeThrottlingThresholdMicroseconds; 395 kInputHandlingTimeThrottlingThresholdMicroseconds;
394 } 396 }
395 397
396 TRACE_EVENT_SYNTHETIC_DELAY_END("blink.HandleInputEvent"); 398 TRACE_EVENT_SYNTHETIC_DELAY_END("blink.HandleInputEvent");
397 399
398 // Note that we can't use handling_event_type_ here since it will be overriden 400 // Note that we can't use handling_event_type_ here since it will be overriden
399 // by reentrant calls for events after the paused one. 401 // by reentrant calls for events after the paused one.
400 bool no_ack = ignore_ack_for_mouse_move_from_debugger_ && 402 bool no_ack = ignore_ack_for_mouse_move_from_debugger_ &&
401 input_event.type == WebInputEvent::MouseMove; 403 input_event.type == WebInputEvent::MouseMove;
tdresser 2016/03/15 13:41:22 Could we invert |no_ack| while we're here?
dtapuska 2016/03/15 19:46:05 Done.
402 if (non_blocking) { 404 if (dispatch_type == DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN ||
405 dispatch_type == DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN) {
403 // |non_blocking| means it was ack'd already by the InputHandlerProxy 406 // |non_blocking| means it was ack'd already by the InputHandlerProxy
404 // so let the delegate know the event has been handled. 407 // so let the delegate know the event has been handled.
405 delegate_->NonBlockingInputEventHandled(input_event.type); 408 delegate_->NotifyInputEventHandled(input_event.type);
406 } else if (WebInputEventTraits::WillReceiveAckFromRenderer(input_event) && 409 }
407 !no_ack) { 410
411 if ((dispatch_type == DISPATCH_TYPE_BLOCKING ||
412 dispatch_type == DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN) &&
413 !no_ack) {
408 scoped_ptr<InputEventAck> response(new InputEventAck( 414 scoped_ptr<InputEventAck> response(new InputEventAck(
409 input_event.type, ack_result, swap_latency_info, 415 input_event.type, ack_result, swap_latency_info,
410 std::move(event_overscroll), 416 std::move(event_overscroll),
411 WebInputEventTraits::GetUniqueTouchEventId(input_event))); 417 WebInputEventTraits::GetUniqueTouchEventId(input_event)));
412 if (rate_limiting_wanted && frame_pending && !widget_->is_hidden()) { 418 if (rate_limiting_wanted && frame_pending && !widget_->is_hidden()) {
413 // We want to rate limit the input events in this case, so we'll wait for 419 // We want to rate limit the input events in this case, so we'll wait for
414 // painting to finish before ACKing this message. 420 // painting to finish before ACKing this message.
415 TRACE_EVENT_INSTANT0( 421 TRACE_EVENT_INSTANT0(
416 "renderer", 422 "renderer",
417 "RenderWidgetInputHandler::OnHandleInputEvent ack throttled", 423 "RenderWidgetInputHandler::OnHandleInputEvent ack throttled",
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 if (pending_input_event_ack_) { 532 if (pending_input_event_ack_) {
527 TRACE_EVENT_ASYNC_END0("input", 533 TRACE_EVENT_ASYNC_END0("input",
528 "RenderWidgetInputHandler::ThrottledInputEventAck", 534 "RenderWidgetInputHandler::ThrottledInputEventAck",
529 pending_input_event_ack_.get()); 535 pending_input_event_ack_.get());
530 delegate_->OnInputEventAck(std::move(pending_input_event_ack_)); 536 delegate_->OnInputEventAck(std::move(pending_input_event_ack_));
531 } 537 }
532 total_input_handling_time_this_frame_ = base::TimeDelta(); 538 total_input_handling_time_this_frame_ = base::TimeDelta();
533 } 539 }
534 540
535 } // namespace content 541 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698