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

Unified Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1394383002: OOPIF: Send page-level focus messages to all processes rendering a page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another test fix Created 5 years, 2 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
Index: content/browser/web_contents/web_contents_impl.cc
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 4802886938a4dc9816d57cf2cbdd3b68a40deca7..f0a22dca144ea1079f35f53179531e8bb8a4e7a7 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1585,6 +1585,23 @@ RenderWidgetHostInputEventRouter* WebContentsImpl::GetInputEventRouter() {
return rwh_input_event_router_.get();
}
+void WebContentsImpl::SendFocusToCrossProcessRenderWidgets(bool is_focused) {
+ // Focus loss may occur while this WebContents is being destroyed. Don't
+ // send the message in this case, as the main frame's RenderFrameHost, which
+ // is used when getting all RenderWidgetHostViews, has already been cleared.
+ if (is_being_destroyed_)
alexmos 2015/10/09 20:23:29 For reference, the call stack leading to this is a
Charlie Reis 2015/10/09 21:21:51 Acknowledged.
+ return;
+
+ for (RenderWidgetHostView* view : GetRenderWidgetHostViewsInTree()) {
+ if (!view || view == GetRenderWidgetHostView())
Charlie Reis 2015/10/09 21:21:51 Hmm. It looks like any widget (including subframe
alexmos 2015/10/16 16:50:45 This is supposed to be only called from main widge
+ continue;
+
+ RenderWidgetHostImpl* rwh =
+ RenderWidgetHostImpl::From(view->GetRenderWidgetHost());
+ rwh->Send(new InputMsg_SetFocus(rwh->GetRoutingID(), is_focused));
Charlie Reis 2015/10/09 21:21:51 As in the test, I'm wondering why we want to tell
alexmos 2015/10/16 16:50:45 I think we've cleared this up in earlier comments,
+ }
+}
+
void WebContentsImpl::EnterFullscreenMode(const GURL& origin) {
// This method is being called to enter renderer-initiated fullscreen mode.
// Make sure any existing fullscreen widget is shut down first.

Powered by Google App Engine
This is Rietveld 408576698