Chromium Code Reviews| Index: content/browser/renderer_host/render_widget_host_impl.cc |
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc |
| index 0ce169540b3cae2c0e67d865f585d0d48d8763a3..8fb7b87ac7526084f5ad78d74e1f50fafe63d9c7 100644 |
| --- a/content/browser/renderer_host/render_widget_host_impl.cc |
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc |
| @@ -692,6 +692,28 @@ void RenderWidgetHostImpl::GotFocus() { |
| } |
| void RenderWidgetHostImpl::Focus() { |
| + RenderWidgetHostImpl* focused_widget = nullptr; |
| + if (delegate_) |
| + focused_widget = delegate_->GetFocusedRenderWidgetHost(this); |
|
wjmaclean
2016/10/27 18:41:01
Minor suggestion:
RenderWidgetHostImpl* focused_w
avallee
2016/10/27 19:00:57
Done. How do we feel about auto*?
avallee
2016/11/16 21:18:10
csreis asked for this to be reverted in https://co
Charlie Reis
2016/11/16 21:51:19
Maybe there's a misunderstanding? I'm fine with w
|
| + |
| + if (focused_widget) |
| + focused_widget->FocusDirect(); |
| + else |
| + FocusDirect(); |
| +} |
| + |
| +void RenderWidgetHostImpl::Blur() { |
| + RenderWidgetHostImpl* focused_widget = nullptr; |
| + if (delegate_) |
| + focused_widget = delegate_->GetFocusedRenderWidgetHost(this); |
| + |
| + if (focused_widget) |
| + focused_widget->BlurDirect(); |
| + else |
| + BlurDirect(); |
| +} |
| + |
| +void RenderWidgetHostImpl::FocusDirect() { |
| is_focused_ = true; |
| Send(new InputMsg_SetFocus(routing_id_, true)); |
| @@ -702,7 +724,7 @@ void RenderWidgetHostImpl::Focus() { |
| delegate_->ReplicatePageFocus(true); |
| } |
| -void RenderWidgetHostImpl::Blur() { |
| +void RenderWidgetHostImpl::BlurDirect() { |
| is_focused_ = false; |
| // If there is a pending mouse lock request, we don't want to reject it at |
| @@ -1886,11 +1908,17 @@ InputEventAckState RenderWidgetHostImpl::FilterInputEvent( |
| if (!process_->HasConnection()) |
| return INPUT_EVENT_ACK_STATE_UNKNOWN; |
| - if (delegate_ && (event.type == WebInputEvent::MouseDown || |
| - event.type == WebInputEvent::GestureScrollBegin || |
| - event.type == WebInputEvent::TouchStart || |
| - event.type == WebInputEvent::RawKeyDown)) { |
| - delegate_->OnUserInteraction(this, event.type); |
| + if (delegate_) { |
| + if (event.type == WebInputEvent::MouseDown || |
| + event.type == WebInputEvent::TouchStart) { |
| + delegate_->EnsureOwningContentsIsFocused(this); |
| + } |
| + if (event.type == WebInputEvent::MouseDown || |
| + event.type == WebInputEvent::GestureScrollBegin || |
| + event.type == WebInputEvent::TouchStart || |
| + event.type == WebInputEvent::RawKeyDown) { |
| + delegate_->OnUserInteraction(this, event.type); |
| + } |
| } |
| return view_ ? view_->FilterInputEvent(event) |