| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index c0d75756160dad7d71001b07ac2216026e80a14f..26efa207ff12099249cdd2f4ffed3d22c1fd4f3c 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -1629,6 +1629,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)
|
| @@ -5003,6 +5004,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);
|
| }
|
| @@ -5567,6 +5580,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,
|
|
|