| Index: content/browser/renderer_host/render_widget_host_input_event_router.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc
|
| index 449b2f6850247e2b6f54da5d8ea38b04b60b73c7..5c0971116ac5eac6aa3fd52ad72cba640e31cc08 100644
|
| --- a/content/browser/renderer_host/render_widget_host_input_event_router.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
|
| @@ -41,7 +41,7 @@ RenderWidgetHostViewBase* RenderWidgetHostInputEventRouter::FindEventTarget(
|
| // parent frame has not sent a new compositor frame since that happened.
|
| if (iter == owner_map_.end())
|
| return root_view;
|
| - return iter->second;
|
| + return iter->second.get();
|
| }
|
|
|
| void RenderWidgetHostInputEventRouter::RouteMouseEvent(
|
| @@ -50,6 +50,9 @@ void RenderWidgetHostInputEventRouter::RouteMouseEvent(
|
| gfx::Point transformed_point;
|
| RenderWidgetHostViewBase* target = FindEventTarget(
|
| root_view, gfx::Point(event->x, event->y), &transformed_point);
|
| + if (!target)
|
| + return;
|
| +
|
| event->x = transformed_point.x();
|
| event->y = transformed_point.y();
|
|
|
| @@ -62,6 +65,9 @@ void RenderWidgetHostInputEventRouter::RouteMouseWheelEvent(
|
| gfx::Point transformed_point;
|
| RenderWidgetHostViewBase* target = FindEventTarget(
|
| root_view, gfx::Point(event->x, event->y), &transformed_point);
|
| + if (!target)
|
| + return;
|
| +
|
| event->x = transformed_point.x();
|
| event->y = transformed_point.y();
|
|
|
| @@ -85,18 +91,19 @@ void RenderWidgetHostInputEventRouter::RouteTouchEvent(
|
| FindEventTarget(root_view, original_point, &transformed_point);
|
| }
|
| ++active_touches_;
|
| - current_touch_target_->ProcessTouchEvent(*event, latency);
|
| + if (current_touch_target_)
|
| + current_touch_target_->ProcessTouchEvent(*event, latency);
|
| break;
|
| }
|
| case blink::WebInputEvent::TouchMove:
|
| - DCHECK(current_touch_target_);
|
| - current_touch_target_->ProcessTouchEvent(*event, latency);
|
| + if (current_touch_target_)
|
| + current_touch_target_->ProcessTouchEvent(*event, latency);
|
| break;
|
| case blink::WebInputEvent::TouchEnd:
|
| case blink::WebInputEvent::TouchCancel:
|
| DCHECK(active_touches_);
|
| - DCHECK(current_touch_target_);
|
| - current_touch_target_->ProcessTouchEvent(*event, latency);
|
| + if (current_touch_target_)
|
| + current_touch_target_->ProcessTouchEvent(*event, latency);
|
| --active_touches_;
|
| if (!active_touches_)
|
| current_touch_target_ = nullptr;
|
| @@ -110,7 +117,7 @@ void RenderWidgetHostInputEventRouter::AddSurfaceIdNamespaceOwner(
|
| uint32_t id,
|
| RenderWidgetHostViewBase* owner) {
|
| DCHECK(owner_map_.find(id) == owner_map_.end());
|
| - owner_map_.insert(std::make_pair(id, owner));
|
| + owner_map_.insert(std::make_pair(id, owner->GetWeakPtr()));
|
| }
|
|
|
| void RenderWidgetHostInputEventRouter::RemoveSurfaceIdNamespaceOwner(
|
|
|