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

Side by Side Diff: content/browser/frame_host/render_widget_host_view_guest.cc

Issue 2815823003: Notify OverscrollController of gesture events in plugins. (Closed)
Patch Set: Fix for Mac history swiper. Created 3 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/frame_host/render_widget_host_view_guest.h" 5 #include "content/browser/frame_host/render_widget_host_view_guest.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 544 }
545 } 545 }
546 546
547 void RenderWidgetHostViewGuest::GestureEventAck( 547 void RenderWidgetHostViewGuest::GestureEventAck(
548 const blink::WebGestureEvent& event, 548 const blink::WebGestureEvent& event,
549 InputEventAckState ack_result) { 549 InputEventAckState ack_result) {
550 bool not_consumed = ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED || 550 bool not_consumed = ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED ||
551 ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; 551 ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS;
552 // GestureScrollBegin/End are always consumed by the guest, so we only 552 // GestureScrollBegin/End are always consumed by the guest, so we only
553 // forward GestureScrollUpdate. 553 // forward GestureScrollUpdate.
554 // Consumed GestureScrollUpdates and GestureScrollBegins must still be
555 // forwarded to the owner RWHV so it may update its state.
554 if (event.GetType() == blink::WebInputEvent::kGestureScrollUpdate && 556 if (event.GetType() == blink::WebInputEvent::kGestureScrollUpdate &&
555 not_consumed) 557 not_consumed)
556 guest_->ResendEventToEmbedder(event); 558 guest_->ResendEventToEmbedder(event);
559 else if (event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
Charlie Reis 2017/05/05 23:45:44 Style nit: I think it would improve readability to
Kevin McNee 2017/05/17 22:39:33 Done.
560 event.GetType() == blink::WebInputEvent::kGestureScrollBegin)
561 GetOwnerRenderWidgetHostView()->GestureEventAck(event, ack_result);
562 }
563
564 InputEventAckState RenderWidgetHostViewGuest::FilterInputEvent(
565 const blink::WebInputEvent& input_event) {
566 InputEventAckState ack_state =
567 RenderWidgetHostViewChildFrame::FilterInputEvent(input_event);
568 if (ack_state != INPUT_EVENT_ACK_STATE_NOT_CONSUMED)
569 return ack_state;
570
571 // The owner RWHV may want to consume the guest's GestureScrollUpdates.
572 // Also, we don't resend GestureFlingStarts, GestureScrollBegins, or
573 // GestureScrollEnds, so we let the owner RWHV know about them here.
574 if (input_event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
575 input_event.GetType() == blink::WebInputEvent::kGestureFlingStart ||
576 input_event.GetType() == blink::WebInputEvent::kGestureScrollBegin ||
577 input_event.GetType() == blink::WebInputEvent::kGestureScrollEnd) {
578 const blink::WebGestureEvent& gesture_event =
579 static_cast<const blink::WebGestureEvent&>(input_event);
580 return GetOwnerRenderWidgetHostView()->FilterChildGestureEvent(
581 gesture_event);
582 }
583
584 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
557 } 585 }
558 586
559 bool RenderWidgetHostViewGuest::IsRenderWidgetHostViewGuest() { 587 bool RenderWidgetHostViewGuest::IsRenderWidgetHostViewGuest() {
560 return true; 588 return true;
561 } 589 }
562 590
563 void RenderWidgetHostViewGuest::OnHandleInputEvent( 591 void RenderWidgetHostViewGuest::OnHandleInputEvent(
564 RenderWidgetHostImpl* embedder, 592 RenderWidgetHostImpl* embedder,
565 int browser_plugin_instance_id, 593 int browser_plugin_instance_id,
566 const blink::WebInputEvent* event) { 594 const blink::WebInputEvent* event) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 host_->ForwardGestureEvent(gesture_event); 681 host_->ForwardGestureEvent(gesture_event);
654 return; 682 return;
655 } 683 }
656 } 684 }
657 685
658 bool RenderWidgetHostViewGuest::HasEmbedderChanged() { 686 bool RenderWidgetHostViewGuest::HasEmbedderChanged() {
659 return guest_ && guest_->has_attached_since_surface_set(); 687 return guest_ && guest_->has_attached_since_surface_set();
660 } 688 }
661 689
662 } // namespace content 690 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698