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

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: move setSandboxFlags call 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 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 delete root_; 124 delete root_;
125 root_ = nullptr; 125 root_ = nullptr;
126 } 126 }
127 127
128 FrameTreeNode* FrameTree::FindByID(int frame_tree_node_id) { 128 FrameTreeNode* FrameTree::FindByID(int frame_tree_node_id) {
129 FrameTreeNode* node = nullptr; 129 FrameTreeNode* node = nullptr;
130 ForEach(base::Bind(&FrameTreeNodeForId, frame_tree_node_id, &node)); 130 ForEach(base::Bind(&FrameTreeNodeForId, frame_tree_node_id, &node));
131 return node; 131 return node;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 continue; 178 continue;
179 179
180 if (!on_node.Run(node)) 180 if (!on_node.Run(node))
181 break; 181 break;
182 182
183 for (size_t i = 0; i < node->child_count(); ++i) 183 for (size_t i = 0; i < node->child_count(); ++i)
184 queue.push(node->child_at(i)); 184 queue.push(node->child_at(i));
185 } 185 }
186 } 186 }
187 187
188 RenderFrameHostImpl* FrameTree::AddFrame(FrameTreeNode* parent, 188 RenderFrameHostImpl* FrameTree::AddFrame(
189 int process_id, 189 FrameTreeNode* parent,
190 int new_routing_id, 190 int process_id,
191 blink::WebTreeScopeType scope, 191 int new_routing_id,
192 const std::string& frame_name, 192 blink::WebTreeScopeType scope,
193 blink::WebSandboxFlags sandbox_flags) { 193 const std::string& frame_name,
194 blink::WebSandboxFlags sandbox_flags,
195 const blink::WebFrameOwnerProperties& frame_owner_properties) {
194 // A child frame always starts with an initial empty document, which means 196 // A child frame always starts with an initial empty document, which means
195 // it is in the same SiteInstance as the parent frame. Ensure that the process 197 // it is in the same SiteInstance as the parent frame. Ensure that the process
196 // which requested a child frame to be added is the same as the process of the 198 // which requested a child frame to be added is the same as the process of the
197 // parent node. 199 // parent node.
198 // We return nullptr if this is not the case, which can happen in a race if an 200 // We return nullptr if this is not the case, which can happen in a race if an
199 // old RFH sends a CreateChildFrame message as we're swapping to a new RFH. 201 // old RFH sends a CreateChildFrame message as we're swapping to a new RFH.
200 if (parent->current_frame_host()->GetProcess()->GetID() != process_id) 202 if (parent->current_frame_host()->GetProcess()->GetID() != process_id)
201 return nullptr; 203 return nullptr;
202 204
203 scoped_ptr<FrameTreeNode> node( 205 scoped_ptr<FrameTreeNode> node(new FrameTreeNode(
204 new FrameTreeNode(this, parent->navigator(), render_frame_delegate_, 206 this, parent->navigator(), render_frame_delegate_, render_view_delegate_,
205 render_view_delegate_, render_widget_delegate_, 207 render_widget_delegate_, manager_delegate_, scope, frame_name,
206 manager_delegate_, scope, frame_name, sandbox_flags)); 208 sandbox_flags, frame_owner_properties));
207 FrameTreeNode* node_ptr = node.get(); 209 FrameTreeNode* node_ptr = node.get();
208 // AddChild is what creates the RenderFrameHost. 210 // AddChild is what creates the RenderFrameHost.
209 parent->AddChild(node.Pass(), process_id, new_routing_id); 211 parent->AddChild(node.Pass(), process_id, new_routing_id);
210 return node_ptr->current_frame_host(); 212 return node_ptr->current_frame_host();
211 } 213 }
212 214
213 void FrameTree::RemoveFrame(FrameTreeNode* child) { 215 void FrameTree::RemoveFrame(FrameTreeNode* child) {
214 FrameTreeNode* parent = child->parent(); 216 FrameTreeNode* parent = child->parent();
215 if (!parent) { 217 if (!parent) {
216 NOTREACHED() << "Unexpected RemoveFrame call for main frame."; 218 NOTREACHED() << "Unexpected RemoveFrame call for main frame.";
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 load_progress_ = 0.0; 407 load_progress_ = 0.0;
406 } 408 }
407 409
408 bool FrameTree::IsLoading() { 410 bool FrameTree::IsLoading() {
409 bool is_loading = false; 411 bool is_loading = false;
410 ForEach(base::Bind(&IsNodeLoading, &is_loading)); 412 ForEach(base::Bind(&IsNodeLoading, &is_loading));
411 return is_loading; 413 return is_loading;
412 } 414 }
413 415
414 } // namespace content 416 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698