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

Side by Side Diff: Source/core/page/FrameTree.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase past r182224 conflict Created 6 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 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
3 * Copyright (C) 2006 Apple Computer, Inc. 3 * Copyright (C) 2006 Apple Computer, Inc.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 } // namespace 43 } // namespace
44 44
45 FrameTree::FrameTree(Frame* thisFrame) 45 FrameTree::FrameTree(Frame* thisFrame)
46 : m_thisFrame(thisFrame) 46 : m_thisFrame(thisFrame)
47 , m_scopedChildCount(invalidChildCount) 47 , m_scopedChildCount(invalidChildCount)
48 { 48 {
49 } 49 }
50 50
51 FrameTree::~FrameTree() 51 FrameTree::~FrameTree()
52 { 52 {
53 #if !ENABLE(OILPAN)
Mads Ager (chromium) 2014/09/18 12:00:59 Does this imply that we can avoid doing this non-o
sof 2014/09/18 13:31:15 Maybe, I haven't investigated if the clearing need
53 // FIXME: Why is this here? Doesn't this parallel what we already do in ~Loc alFrame? 54 // FIXME: Why is this here? Doesn't this parallel what we already do in ~Loc alFrame?
54 for (Frame* child = firstChild(); child; child = child->tree().nextSibling() ) { 55 for (Frame* child = firstChild(); child; child = child->tree().nextSibling() ) {
55 if (child->isLocalFrame()) 56 if (child->isLocalFrame())
56 toLocalFrame(child)->setView(nullptr); 57 toLocalFrame(child)->setView(nullptr);
57 else if (child->isRemoteFrame()) 58 else if (child->isRemoteFrame())
58 toRemoteFrame(child)->setView(nullptr); 59 toRemoteFrame(child)->setView(nullptr);
59 } 60 }
61 #endif
60 } 62 }
61 63
62 void FrameTree::setName(const AtomicString& name, const AtomicString& fallbackNa me) 64 void FrameTree::setName(const AtomicString& name, const AtomicString& fallbackNa me)
63 { 65 {
64 m_name = name; 66 m_name = name;
65 if (!parent()) { 67 if (!parent()) {
66 m_uniqueName = name; 68 m_uniqueName = name;
67 return; 69 return;
68 } 70 }
69 m_uniqueName = AtomicString(); // Remove our old frame name so it's not cons idered in uniqueChildName. 71 m_uniqueName = AtomicString(); // Remove our old frame name so it's not cons idered in uniqueChildName.
70 m_uniqueName = parent()->tree().uniqueChildName(name.isEmpty() ? fallbackNam e : name); 72 m_uniqueName = parent()->tree().uniqueChildName(name.isEmpty() ? fallbackNam e : name);
71 } 73 }
72 74
73 Frame* FrameTree::parent() const 75 Frame* FrameTree::parent() const
74 { 76 {
75 if (!m_thisFrame->client()) 77 if (!m_thisFrame->client())
76 return 0; 78 return 0;
77 return m_thisFrame->client()->parent(); 79 return m_thisFrame->client()->parent();
78 } 80 }
79 81
80 Frame* FrameTree::top() const 82 Frame* FrameTree::top() const
81 { 83 {
82 // FIXME: top() should never return null, so here are some hacks to deal 84 // FIXME: top() should never return null, so here are some hacks to deal
83 // with EmptyFrameLoaderClient and cases where the frame is detached 85 // with EmptyFrameLoaderClient and cases where the frame is detached
84 // already... 86 // already...
85 if (!m_thisFrame->client()) 87 if (!m_thisFrame->client())
86 return m_thisFrame; 88 return m_thisFrame;
87 Frame* candidate = m_thisFrame->client()->top(); 89 Frame* candidate = m_thisFrame->client()->top();
88 return candidate ? candidate : m_thisFrame; 90 return candidate ? candidate : m_thisFrame.get();
89 } 91 }
90 92
91 Frame* FrameTree::previousSibling() const 93 Frame* FrameTree::previousSibling() const
92 { 94 {
93 if (!m_thisFrame->client()) 95 if (!m_thisFrame->client())
94 return 0; 96 return 0;
95 return m_thisFrame->client()->previousSibling(); 97 return m_thisFrame->client()->previousSibling();
96 } 98 }
97 99
98 Frame* FrameTree::nextSibling() const 100 Frame* FrameTree::nextSibling() const
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 249
248 Frame* FrameTree::find(const AtomicString& name) const 250 Frame* FrameTree::find(const AtomicString& name) const
249 { 251 {
250 if (name == "_self" || name == "_current" || name.isEmpty()) 252 if (name == "_self" || name == "_current" || name.isEmpty())
251 return m_thisFrame; 253 return m_thisFrame;
252 254
253 if (name == "_top") 255 if (name == "_top")
254 return top(); 256 return top();
255 257
256 if (name == "_parent") 258 if (name == "_parent")
257 return parent() ? parent() : m_thisFrame; 259 return parent() ? parent() : m_thisFrame.get();
258 260
259 // Since "_blank" should never be any frame's name, the following just amoun ts to an optimization. 261 // Since "_blank" should never be any frame's name, the following just amoun ts to an optimization.
260 if (name == "_blank") 262 if (name == "_blank")
261 return 0; 263 return 0;
262 264
263 // Search subtree starting with this frame first. 265 // Search subtree starting with this frame first.
264 for (Frame* frame = m_thisFrame; frame; frame = frame->tree().traverseNext(m _thisFrame)) 266 for (Frame* frame = m_thisFrame; frame; frame = frame->tree().traverseNext(m _thisFrame))
265 if (frame->tree().name() == name) 267 if (frame->tree().name() == name)
266 return frame; 268 return frame;
267 269
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 372
371 Frame* FrameTree::deepLastChild() const 373 Frame* FrameTree::deepLastChild() const
372 { 374 {
373 Frame* result = m_thisFrame; 375 Frame* result = m_thisFrame;
374 for (Frame* last = lastChild(); last; last = last->tree().lastChild()) 376 for (Frame* last = lastChild(); last; last = last->tree().lastChild())
375 result = last; 377 result = last;
376 378
377 return result; 379 return result;
378 } 380 }
379 381
382 void FrameTree::trace(Visitor* visitor)
383 {
384 visitor->trace(m_thisFrame);
385 }
386
380 } // namespace blink 387 } // namespace blink
381 388
382 #ifndef NDEBUG 389 #ifndef NDEBUG
383 390
384 static void printIndent(int indent) 391 static void printIndent(int indent)
385 { 392 {
386 for (int i = 0; i < indent; ++i) 393 for (int i = 0; i < indent; ++i)
387 printf(" "); 394 printf(" ");
388 } 395 }
389 396
(...skipping 24 matching lines...) Expand all
414 { 421 {
415 if (!frame) { 422 if (!frame) {
416 printf("Null input frame\n"); 423 printf("Null input frame\n");
417 return; 424 return;
418 } 425 }
419 426
420 printFrames(frame->tree().top(), frame, 0); 427 printFrames(frame->tree().top(), frame, 0);
421 } 428 }
422 429
423 #endif 430 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698