| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 7b6e75e9f783a018f01e316085992f51749459ca..7f70472102a37dff4489f71e5e2fe905014b2d9e 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -1583,6 +1583,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)
|
| @@ -5046,6 +5047,18 @@ void RenderFrameImpl::HandleWebAccessibilityEvent(
|
| }
|
|
|
| void RenderFrameImpl::FocusedNodeChanged(const WebNode& node) {
|
| + bool is_editable = false;
|
| + gfx::Rect node_bounds;
|
| + if (!node.isNull() && node.isElementNode()) {
|
| + WebElement element = const_cast<WebNode&>(node).to<WebElement>();
|
| + blink::WebRect rect = element.boundsInViewport();
|
| + GetRenderWidget()->convertViewportToWindow(&rect);
|
| + is_editable = element.isEditable();
|
| + node_bounds = gfx::Rect(rect);
|
| + }
|
| + Send(new FrameHostMsg_FocusedNodeChanged(routing_id_, is_editable,
|
| + node_bounds));
|
| +
|
| for (auto& observer : observers_)
|
| observer.FocusedNodeChanged(node);
|
| }
|
| @@ -5615,6 +5628,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,
|
|
|