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

Side by Side Diff: content/browser/renderer_host/input/input_router_impl.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/browser/renderer_host/input/input_router_impl.h" 5 #include "content/browser/renderer_host/input/input_router_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 OfferToHandlers(input_event, latency_info); 357 OfferToHandlers(input_event, latency_info);
358 } 358 }
359 359
360 void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event, 360 void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event,
361 const ui::LatencyInfo& latency_info) { 361 const ui::LatencyInfo& latency_info) {
362 output_stream_validator_.Validate(input_event); 362 output_stream_validator_.Validate(input_event);
363 363
364 if (OfferToClient(input_event, latency_info)) 364 if (OfferToClient(input_event, latency_info))
365 return; 365 return;
366 366
367 OfferToRenderer(input_event, latency_info);
368
369 // Touch events should always indicate in the event whether they are 367 // Touch events should always indicate in the event whether they are
370 // cancelable (respect ACK disposition) or not except touchmove. 368 // cancelable (respect ACK disposition) or not except touchmove.
371 bool needs_synthetic_ack = 369 bool needs_synthetic_ack =
372 !WebInputEventTraits::WillReceiveAckFromRenderer(input_event); 370 !WebInputEventTraits::ShouldBlockEventOnRenderer(input_event);
tdresser 2016/03/15 13:41:21 I'd consider having two bools, "should_block" and
dtapuska 2016/03/15 19:46:04 I changed it to should_block... I don't see how tw
tdresser 2016/03/16 15:34:47 Acknowledged.
371
372 OfferToRenderer(input_event, latency_info,
373 needs_synthetic_ack
374 ? InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING
375 : InputEventDispatchType::DISPATCH_TYPE_BLOCKING);
373 376
374 if (WebInputEvent::isTouchEventType(input_event.type) && 377 if (WebInputEvent::isTouchEventType(input_event.type) &&
375 input_event.type != WebInputEvent::TouchMove) { 378 input_event.type != WebInputEvent::TouchMove) {
376 const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(input_event); 379 const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(input_event);
377 DCHECK_EQ(needs_synthetic_ack, !touch.cancelable); 380 DCHECK_EQ(needs_synthetic_ack, !touch.cancelable);
378 } 381 }
379 382
380 // The synthetic acks are sent immediately. 383 // The synthetic acks are sent immediately.
381 if (needs_synthetic_ack) { 384 if (needs_synthetic_ack) {
382 ProcessInputEventAck( 385 ProcessInputEventAck(
(...skipping 25 matching lines...) Expand all
408 consumed = true; 411 consumed = true;
409 break; 412 break;
410 default: 413 default:
411 break; 414 break;
412 } 415 }
413 416
414 return consumed; 417 return consumed;
415 } 418 }
416 419
417 bool InputRouterImpl::OfferToRenderer(const WebInputEvent& input_event, 420 bool InputRouterImpl::OfferToRenderer(const WebInputEvent& input_event,
418 const ui::LatencyInfo& latency_info) { 421 const ui::LatencyInfo& latency_info,
422 InputEventDispatchType dispatch_type) {
419 // This conversion is temporary. WebInputEvent should be generated 423 // This conversion is temporary. WebInputEvent should be generated
420 // directly from ui::Event with the viewport coordinates. See 424 // directly from ui::Event with the viewport coordinates. See
421 // crbug.com/563730. 425 // crbug.com/563730.
422 scoped_ptr<blink::WebInputEvent> event_in_viewport = 426 scoped_ptr<blink::WebInputEvent> event_in_viewport =
423 ui::ScaleWebInputEvent(input_event, device_scale_factor_); 427 ui::ScaleWebInputEvent(input_event, device_scale_factor_);
424 const WebInputEvent* event_to_send = 428 const WebInputEvent* event_to_send =
425 event_in_viewport ? event_in_viewport.get() : &input_event; 429 event_in_viewport ? event_in_viewport.get() : &input_event;
426 430
427 if (Send(new InputMsg_HandleInputEvent( 431 if (Send(new InputMsg_HandleInputEvent(routing_id(), event_to_send,
428 routing_id(), event_to_send, latency_info, 432 latency_info, dispatch_type))) {
429 InputEventDispatchType::DISPATCH_TYPE_NORMAL))) {
430 // Ack messages for ignored ack event types should never be sent by the 433 // Ack messages for ignored ack event types should never be sent by the
431 // renderer. Consequently, such event types should not affect event time 434 // renderer. Consequently, such event types should not affect event time
432 // or in-flight event count metrics. 435 // or in-flight event count metrics.
433 if (WebInputEventTraits::WillReceiveAckFromRenderer(*event_to_send)) { 436 if (dispatch_type == InputEventDispatchType::DISPATCH_TYPE_BLOCKING) {
434 input_event_start_time_ = TimeTicks::Now(); 437 input_event_start_time_ = TimeTicks::Now();
435 client_->IncrementInFlightEventCount(); 438 client_->IncrementInFlightEventCount();
436 } 439 }
437 return true; 440 return true;
438 } 441 }
439 return false; 442 return false;
440 } 443 }
441 444
442 void InputRouterImpl::OnInputEventAck(const InputEventAck& ack) { 445 void InputRouterImpl::OnInputEventAck(const InputEventAck& ack) {
443 client_->DecrementInFlightEventCount(); 446 client_->DecrementInFlightEventCount();
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 639
637 flush_requested_ = false; 640 flush_requested_ = false;
638 client_->DidFlush(); 641 client_->DidFlush();
639 } 642 }
640 643
641 void InputRouterImpl::SetFrameTreeNodeId(int frameTreeNodeId) { 644 void InputRouterImpl::SetFrameTreeNodeId(int frameTreeNodeId) {
642 frame_tree_node_id_ = frameTreeNodeId; 645 frame_tree_node_id_ = frameTreeNodeId;
643 } 646 }
644 647
645 } // namespace content 648 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698