Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1462)

Unified Diff: content/renderer/render_frame_impl.cc

Issue 2571583008: Support tracking focused element for OOPIFs. (Closed)
Patch Set: Fix missing from previous patch Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..f2c5117c63b024ee76ea86f315f04c3b0b3f1782 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();
+ }
+ Send(new FrameHostMsg_FocusedNodeChanged(GetRoutingID(), is_editable,
+ 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 avoic
ncarter (slow) 2016/12/20 22:37:45 avoic -> 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,
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698