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

Side by Side Diff: content/browser/frame_host/frame_tree.cc

Issue 1307013004: Propagate scrolling/marginwidth/marginheight property values to child frame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: consolidate render->browser ipcs into one Created 5 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/frame_tree.h" 5 #include "content/browser/frame_host/frame_tree.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 root_(new FrameTreeNode(this, 108 root_(new FrameTreeNode(this,
109 navigator, 109 navigator,
110 render_frame_delegate, 110 render_frame_delegate,
111 render_view_delegate, 111 render_view_delegate,
112 render_widget_delegate, 112 render_widget_delegate,
113 manager_delegate, 113 manager_delegate,
114 // The top-level frame must always be in a 114 // The top-level frame must always be in a
115 // document scope. 115 // document scope.
116 blink::WebTreeScopeType::Document, 116 blink::WebTreeScopeType::Document,
117 std::string(), 117 std::string(),
118 blink::WebSandboxFlags::None)), 118 blink::WebSandboxFlags::None,
119 blink::WebFrameOwnerProperties())),
119 focused_frame_tree_node_id_(-1), 120 focused_frame_tree_node_id_(-1),
120 load_progress_(0.0) { 121 load_progress_(0.0) {}
121 }
122 122
123 FrameTree::~FrameTree() { 123 FrameTree::~FrameTree() {
124 } 124 }
125 125
126 FrameTreeNode* FrameTree::FindByID(int frame_tree_node_id) { 126 FrameTreeNode* FrameTree::FindByID(int frame_tree_node_id) {
127 FrameTreeNode* node = nullptr; 127 FrameTreeNode* node = nullptr;
128 ForEach(base::Bind(&FrameTreeNodeForId, frame_tree_node_id, &node)); 128 ForEach(base::Bind(&FrameTreeNodeForId, frame_tree_node_id, &node));
129 return node; 129 return node;
130 } 130 }
131 131
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 continue; 176 continue;
177 177
178 if (!on_node.Run(node)) 178 if (!on_node.Run(node))
179 break; 179 break;
180 180
181 for (size_t i = 0; i < node->child_count(); ++i) 181 for (size_t i = 0; i < node->child_count(); ++i)
182 queue.push(node->child_at(i)); 182 queue.push(node->child_at(i));
183 } 183 }
184 } 184 }
185 185
186 RenderFrameHostImpl* FrameTree::AddFrame(FrameTreeNode* parent, 186 RenderFrameHostImpl* FrameTree::AddFrame(
187 int process_id, 187 FrameTreeNode* parent,
188 int new_routing_id, 188 int process_id,
189 blink::WebTreeScopeType scope, 189 int new_routing_id,
190 const std::string& frame_name, 190 blink::WebTreeScopeType scope,
191 blink::WebSandboxFlags sandbox_flags) { 191 const std::string& frame_name,
192 blink::WebSandboxFlags sandbox_flags,
193 const blink::WebFrameOwnerProperties& frame_owner_properties) {
192 // A child frame always starts with an initial empty document, which means 194 // A child frame always starts with an initial empty document, which means
193 // it is in the same SiteInstance as the parent frame. Ensure that the process 195 // it is in the same SiteInstance as the parent frame. Ensure that the process
194 // which requested a child frame to be added is the same as the process of the 196 // which requested a child frame to be added is the same as the process of the
195 // parent node. 197 // parent node.
196 // We return nullptr if this is not the case, which can happen in a race if an 198 // We return nullptr if this is not the case, which can happen in a race if an
197 // old RFH sends a CreateChildFrame message as we're swapping to a new RFH. 199 // old RFH sends a CreateChildFrame message as we're swapping to a new RFH.
198 if (parent->current_frame_host()->GetProcess()->GetID() != process_id) 200 if (parent->current_frame_host()->GetProcess()->GetID() != process_id)
199 return nullptr; 201 return nullptr;
200 202
201 scoped_ptr<FrameTreeNode> node( 203 scoped_ptr<FrameTreeNode> node(new FrameTreeNode(
202 new FrameTreeNode(this, parent->navigator(), render_frame_delegate_, 204 this, parent->navigator(), render_frame_delegate_, render_view_delegate_,
203 render_view_delegate_, render_widget_delegate_, 205 render_widget_delegate_, manager_delegate_, scope, frame_name,
204 manager_delegate_, scope, frame_name, sandbox_flags)); 206 sandbox_flags, frame_owner_properties));
205 FrameTreeNode* node_ptr = node.get(); 207 FrameTreeNode* node_ptr = node.get();
206 // AddChild is what creates the RenderFrameHost. 208 // AddChild is what creates the RenderFrameHost.
207 parent->AddChild(node.Pass(), process_id, new_routing_id); 209 parent->AddChild(node.Pass(), process_id, new_routing_id);
208 return node_ptr->current_frame_host(); 210 return node_ptr->current_frame_host();
209 } 211 }
210 212
211 void FrameTree::RemoveFrame(FrameTreeNode* child) { 213 void FrameTree::RemoveFrame(FrameTreeNode* child) {
212 FrameTreeNode* parent = child->parent(); 214 FrameTreeNode* parent = child->parent();
213 if (!parent) { 215 if (!parent) {
214 NOTREACHED() << "Unexpected RemoveFrame call for main frame."; 216 NOTREACHED() << "Unexpected RemoveFrame call for main frame.";
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 load_progress_ = 0.0; 395 load_progress_ = 0.0;
394 } 396 }
395 397
396 bool FrameTree::IsLoading() { 398 bool FrameTree::IsLoading() {
397 bool is_loading = false; 399 bool is_loading = false;
398 ForEach(base::Bind(&IsNodeLoading, &is_loading)); 400 ForEach(base::Bind(&IsNodeLoading, &is_loading));
399 return is_loading; 401 return is_loading;
400 } 402 }
401 403
402 } // namespace content 404 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698