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

Unified Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 1685213002: Propagate window coordinates to out-of-process iframes renderers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@sendscreenrects
Patch Set: properly rebasing Created 4 years, 10 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/frame_host/render_frame_host_manager.cc
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 11894a710656c933716864adafc91444db96b4ab..d99018945366b5feda09daea5fd64f3ce9334497 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -2514,4 +2514,36 @@ int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) {
->GetRoutingIdForSiteInstance(instance);
}
+void RenderFrameHostManager::SendPageMessage(IPC::Message* msg) {
+ DCHECK(IPC_MESSAGE_CLASS(*msg) == PageMsgStart);
+
+ // We should always deliver page messages through the main frame.
+ DCHECK(!frame_tree_node_->parent());
+
+ if ((IPC_MESSAGE_CLASS(*msg) != PageMsgStart) || frame_tree_node_->parent()) {
+ delete msg;
+ return;
+ }
+
+ auto send_msg = [](IPC::Sender* sender, int routing_id, IPC::Message* msg) {
+ IPC::Message* copy = new IPC::Message(*msg);
+ copy->set_routing_id(routing_id);
+ sender->Send(copy);
+ };
+
+ for (const auto& pair : proxy_hosts_)
+ send_msg(pair.second.get(), pair.second->GetRoutingID(), msg);
+
+ if (speculative_render_frame_host_) {
+ send_msg(speculative_render_frame_host_.get(),
+ speculative_render_frame_host_->GetRoutingID(), msg);
+ } else if (pending_render_frame_host_) {
+ send_msg(pending_render_frame_host_.get(),
+ pending_render_frame_host_->GetRoutingID(), msg);
+ }
+
+ msg->set_routing_id(render_frame_host_->GetRoutingID());
+ render_frame_host_->Send(msg);
+}
+
} // namespace content
« no previous file with comments | « content/browser/frame_host/render_frame_host_manager.h ('k') | content/browser/site_per_process_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698