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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 2623483003: Support tracking focused node element for OOPIFs. (Closed)
Patch Set: Added the missing forward declaration Created 3 years, 11 months 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 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,
« 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