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

Side by Side Diff: content/browser/frame_host/frame_tree_node.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: remove dep patch 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_node.h" 5 #include "content/browser/frame_host/frame_tree_node.h"
6 6
7 #include <queue> 7 #include <queue>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/profiler/scoped_tracker.h" 10 #include "base/profiler/scoped_tracker.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 int FrameTreeNode::next_frame_tree_node_id_ = 1; 60 int FrameTreeNode::next_frame_tree_node_id_ = 1;
61 61
62 // static 62 // static
63 FrameTreeNode* FrameTreeNode::GloballyFindByID(int frame_tree_node_id) { 63 FrameTreeNode* FrameTreeNode::GloballyFindByID(int frame_tree_node_id) {
64 DCHECK_CURRENTLY_ON(BrowserThread::UI); 64 DCHECK_CURRENTLY_ON(BrowserThread::UI);
65 FrameTreeNodeIDMap* nodes = g_frame_tree_node_id_map.Pointer(); 65 FrameTreeNodeIDMap* nodes = g_frame_tree_node_id_map.Pointer();
66 FrameTreeNodeIDMap::iterator it = nodes->find(frame_tree_node_id); 66 FrameTreeNodeIDMap::iterator it = nodes->find(frame_tree_node_id);
67 return it == nodes->end() ? nullptr : it->second; 67 return it == nodes->end() ? nullptr : it->second;
68 } 68 }
69 69
70 FrameTreeNode::FrameTreeNode(FrameTree* frame_tree, 70 FrameTreeNode::FrameTreeNode(
71 Navigator* navigator, 71 FrameTree* frame_tree,
72 RenderFrameHostDelegate* render_frame_delegate, 72 Navigator* navigator,
73 RenderViewHostDelegate* render_view_delegate, 73 RenderFrameHostDelegate* render_frame_delegate,
74 RenderWidgetHostDelegate* render_widget_delegate, 74 RenderViewHostDelegate* render_view_delegate,
75 RenderFrameHostManager::Delegate* manager_delegate, 75 RenderWidgetHostDelegate* render_widget_delegate,
76 blink::WebTreeScopeType scope, 76 RenderFrameHostManager::Delegate* manager_delegate,
77 const std::string& name, 77 blink::WebTreeScopeType scope,
78 blink::WebSandboxFlags sandbox_flags) 78 const std::string& name,
79 blink::WebSandboxFlags sandbox_flags,
80 const blink::WebFrameOwnerProperties& frame_owner_properties)
79 : frame_tree_(frame_tree), 81 : frame_tree_(frame_tree),
80 navigator_(navigator), 82 navigator_(navigator),
81 render_manager_(this, 83 render_manager_(this,
82 render_frame_delegate, 84 render_frame_delegate,
83 render_view_delegate, 85 render_view_delegate,
84 render_widget_delegate, 86 render_widget_delegate,
85 manager_delegate), 87 manager_delegate),
86 frame_tree_node_id_(next_frame_tree_node_id_++), 88 frame_tree_node_id_(next_frame_tree_node_id_++),
87 parent_(NULL), 89 parent_(NULL),
88 opener_(nullptr), 90 opener_(nullptr),
89 opener_observer_(nullptr), 91 opener_observer_(nullptr),
90 has_committed_real_load_(false), 92 has_committed_real_load_(false),
91 replication_state_(scope, name, sandbox_flags), 93 replication_state_(scope, name, sandbox_flags),
92 // Effective sandbox flags also need to be set, since initial sandbox 94 // Effective sandbox flags also need to be set, since initial sandbox
93 // flags should apply to the initial empty document in the frame. 95 // flags should apply to the initial empty document in the frame.
94 effective_sandbox_flags_(sandbox_flags), 96 effective_sandbox_flags_(sandbox_flags),
97 frame_owner_properties_(frame_owner_properties),
95 loading_progress_(kLoadingProgressNotStarted) { 98 loading_progress_(kLoadingProgressNotStarted) {
96 std::pair<FrameTreeNodeIDMap::iterator, bool> result = 99 std::pair<FrameTreeNodeIDMap::iterator, bool> result =
97 g_frame_tree_node_id_map.Get().insert( 100 g_frame_tree_node_id_map.Get().insert(
98 std::make_pair(frame_tree_node_id_, this)); 101 std::make_pair(frame_tree_node_id_, this));
99 CHECK(result.second); 102 CHECK(result.second);
100 } 103 }
101 104
102 FrameTreeNode::~FrameTreeNode() { 105 FrameTreeNode::~FrameTreeNode() {
103 frame_tree_->FrameRemoved(this); 106 frame_tree_->FrameRemoved(this);
104 FOR_EACH_OBSERVER(Observer, observers_, OnFrameTreeNodeDestroyed(this)); 107 FOR_EACH_OBSERVER(Observer, observers_, OnFrameTreeNodeDestroyed(this));
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 return false; 215 return false;
213 216
214 for (FrameTreeNode* node = parent(); node; node = node->parent()) { 217 for (FrameTreeNode* node = parent(); node; node = node->parent()) {
215 if (node == other) 218 if (node == other)
216 return true; 219 return true;
217 } 220 }
218 221
219 return false; 222 return false;
220 } 223 }
221 224
225 void FrameTreeNode::SetScrollingMode(
226 blink::WebFrameOwnerProperties::ScrollingMode mode) {
227 frame_owner_properties_.scrollingMode = mode;
228 }
229
230 void FrameTreeNode::SetMarginWidth(int margin_width) {
231 frame_owner_properties_.marginWidth = margin_width;
232 }
233
234 void FrameTreeNode::SetMarginHeight(int margin_height) {
235 frame_owner_properties_.marginHeight = margin_height;
236 }
237
222 FrameTreeNode* FrameTreeNode::PreviousSibling() const { 238 FrameTreeNode* FrameTreeNode::PreviousSibling() const {
223 if (!parent_) 239 if (!parent_)
224 return nullptr; 240 return nullptr;
225 241
226 for (size_t i = 0; i < parent_->child_count(); ++i) { 242 for (size_t i = 0; i < parent_->child_count(); ++i) {
227 if (parent_->child_at(i) == this) 243 if (parent_->child_at(i) == this)
228 return (i == 0) ? nullptr : parent_->child_at(i - 1); 244 return (i == 0) ? nullptr : parent_->child_at(i - 1);
229 } 245 }
230 246
231 NOTREACHED() << "FrameTreeNode not found in its parent's children."; 247 NOTREACHED() << "FrameTreeNode not found in its parent's children.";
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 // TODO(nasko): see if child frames should send IPCs in site-per-process 394 // TODO(nasko): see if child frames should send IPCs in site-per-process
379 // mode. 395 // mode.
380 if (!IsMainFrame()) 396 if (!IsMainFrame())
381 return true; 397 return true;
382 398
383 render_manager_.Stop(); 399 render_manager_.Stop();
384 return true; 400 return true;
385 } 401 }
386 402
387 } // namespace content 403 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698