| Index: content/browser/renderer_host/render_widget_host_view_aura.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| index bbb79c967405304c7bb46b1823dfea04d09bf7f0..4a41489f6f4ec6bf6d24c7c5051065d6dc82485a 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| @@ -44,6 +44,7 @@
|
| #include "content/browser/renderer_host/web_input_event_aura.h"
|
| #include "content/common/gpu/client/gl_helper.h"
|
| #include "content/common/gpu/gpu_messages.h"
|
| +#include "content/common/site_isolation_policy.h"
|
| #include "content/common/view_messages.h"
|
| #include "content/public/browser/content_browser_client.h"
|
| #include "content/public/browser/overscroll_configuration.h"
|
| @@ -450,6 +451,7 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
|
| : host_(RenderWidgetHostImpl::From(host)),
|
| window_(new aura::Window(this)),
|
| delegated_frame_host_(new DelegatedFrameHost(this)),
|
| + has_started_rendering_(false),
|
| in_shutdown_(false),
|
| in_bounds_changed_(false),
|
| is_fullscreen_(false),
|
| @@ -487,14 +489,6 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
|
| window_->set_layer_owner_delegate(delegated_frame_host_.get());
|
| gfx::Screen::GetScreenFor(window_)->AddObserver(this);
|
|
|
| - // Let the page-level input event router know about our surface ID
|
| - // namespace for surface-based hit testing.
|
| - if (UseSurfacesEnabled() && host_->delegate() &&
|
| - host_->delegate()->GetInputEventRouter()) {
|
| - host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner(
|
| - GetSurfaceIdNamespace(), this);
|
| - }
|
| -
|
| bool overscroll_enabled = base::CommandLine::ForCurrentProcess()->
|
| GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0";
|
| SetOverscrollControllerEnabled(overscroll_enabled);
|
| @@ -843,6 +837,13 @@ bool RenderWidgetHostViewAura::CanRendererHandleEvent(
|
| return true;
|
| }
|
|
|
| +bool RenderWidgetHostViewAura::ShouldRouteEvent(const ui::Event* event) const {
|
| + bool result = host_->delegate() && host_->delegate()->GetInputEventRouter();
|
| + if (event->IsMouseEvent())
|
| + result = result && SiteIsolationPolicy::AreCrossProcessFramesPossible();
|
| + return result;
|
| +}
|
| +
|
| void RenderWidgetHostViewAura::HandleParentBoundsChanged() {
|
| SnapToPhysicalPixelBoundary();
|
| #if defined(OS_WIN)
|
| @@ -1176,6 +1177,18 @@ void RenderWidgetHostViewAura::OnSwapCompositorFrame(
|
| last_scroll_offset_ = frame->metadata.root_scroll_offset;
|
| if (!frame->delegated_frame_data)
|
| return;
|
| +
|
| + if (!has_started_rendering_) {
|
| + // Let the page-level input event router know about our surface ID
|
| + // namespace for surface-based hit testing.
|
| + if (UseSurfacesEnabled() && host_->delegate() &&
|
| + host_->delegate()->GetInputEventRouter()) {
|
| + host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner(
|
| + GetSurfaceIdNamespace(), this);
|
| + }
|
| + has_started_rendering_ = true;
|
| + }
|
| +
|
| delegated_frame_host_->SwapDelegatedFrame(
|
| output_surface_id, frame->delegated_frame_data.Pass(),
|
| frame->metadata.device_scale_factor, frame->metadata.latency_info,
|
| @@ -2110,7 +2123,7 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) {
|
| blink::WebMouseWheelEvent mouse_wheel_event =
|
| MakeWebMouseWheelEvent(static_cast<ui::MouseWheelEvent&>(*event));
|
| if (mouse_wheel_event.deltaX != 0 || mouse_wheel_event.deltaY != 0) {
|
| - if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
|
| + if (ShouldRouteEvent(event)) {
|
| host_->delegate()->GetInputEventRouter()->RouteMouseWheelEvent(
|
| this, &mouse_wheel_event);
|
| } else {
|
| @@ -2129,7 +2142,7 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) {
|
|
|
| blink::WebMouseEvent mouse_event = MakeWebMouseEvent(*event);
|
| ModifyEventMovementAndCoords(&mouse_event);
|
| - if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
|
| + if (ShouldRouteEvent(event)) {
|
| host_->delegate()->GetInputEventRouter()->RouteMouseEvent(this,
|
| &mouse_event);
|
| } else {
|
| @@ -2193,6 +2206,12 @@ void RenderWidgetHostViewAura::ProcessMouseWheelEvent(
|
| host_->ForwardWheelEvent(event);
|
| }
|
|
|
| +void RenderWidgetHostViewAura::ProcessTouchEvent(
|
| + const blink::WebTouchEvent& event,
|
| + const ui::LatencyInfo& latency) {
|
| + host_->ForwardTouchEventWithLatencyInfo(event, latency);
|
| +}
|
| +
|
| void RenderWidgetHostViewAura::OnScrollEvent(ui::ScrollEvent* event) {
|
| TRACE_EVENT0("input", "RenderWidgetHostViewAura::OnScrollEvent");
|
|
|
| @@ -2259,7 +2278,12 @@ void RenderWidgetHostViewAura::OnTouchEvent(ui::TouchEvent* event) {
|
| // Set unchanged touch point to StateStationary for touchmove and
|
| // touchcancel to make sure only send one ack per WebTouchEvent.
|
| MarkUnchangedTouchPointsAsStationary(&touch_event, event->touch_id());
|
| - host_->ForwardTouchEventWithLatencyInfo(touch_event, *event->latency());
|
| + if (ShouldRouteEvent(event)) {
|
| + host_->delegate()->GetInputEventRouter()->RouteTouchEvent(
|
| + this, &touch_event, *event->latency());
|
| + } else {
|
| + ProcessTouchEvent(touch_event, *event->latency());
|
| + }
|
| }
|
|
|
| void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) {
|
|
|