Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index 5a4fdbcb0730d12ec6c3e5868115fad7b1ff1cb5..d283a13a07abfbda6c3fa0580d14c73f75e9d42e 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -1582,6 +1582,7 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) { |
| IPC_MESSAGE_HANDLER(FrameMsg_SetHasReceivedUserGesture, |
| OnSetHasReceivedUserGesture) |
| IPC_MESSAGE_HANDLER(FrameMsg_RunFileChooserResponse, OnFileChooserResponse) |
| + IPC_MESSAGE_HANDLER(FrameMsg_ClearFocusedElement, OnClearFocusedElement) |
| #if defined(OS_ANDROID) |
| IPC_MESSAGE_HANDLER(FrameMsg_ActivateNearestFindResult, |
| OnActivateNearestFindResult) |
| @@ -5014,6 +5015,18 @@ void RenderFrameImpl::HandleWebAccessibilityEvent( |
| } |
| void RenderFrameImpl::FocusedNodeChanged(const WebNode& node) { |
| + gfx::Rect node_bounds; |
| + bool is_editable = false; |
| + if (!node.isNull() && node.isElementNode()) { |
| + WebElement element = const_cast<WebNode&>(node).to<WebElement>(); |
| + blink::WebRect rect = element.boundsInViewport(); |
| + GetRenderWidget()->convertViewportToWindow(&rect); |
| + node_bounds = gfx::Rect(rect); |
| + is_editable = element.isEditable(); |
|
nasko
2016/12/21 16:28:36
very minor nit: since is_editable is the first par
EhsanK
2016/12/21 16:37:06
Acknowledged.
|
| + } |
| + Send(new FrameHostMsg_FocusedNodeChanged(GetRoutingID(), is_editable, |
|
nasko
2016/12/21 16:28:36
Just routing_id_ as the rest of the Send() methods
EhsanK
2016/12/21 16:37:06
Acknowledged.
|
| + node_bounds)); |
| + |
| for (auto& observer : observers_) |
| observer.FocusedNodeChanged(node); |
| } |
| @@ -5583,6 +5596,13 @@ void RenderFrameImpl::OnFileChooserResponse( |
| } |
| } |
| +void RenderFrameImpl::OnClearFocusedElement() { |
| + // TODO(ekaramad): Should we add a method to WebLocalFrame instead and avoid |
| + // calling this on the WebView? |
| + if (auto* webview = render_view_->GetWebView()) |
| + webview->clearFocusedElement(); |
| +} |
| + |
| #if defined(OS_ANDROID) |
| void RenderFrameImpl::OnActivateNearestFindResult(int request_id, |
| float x, |