Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "public/web/WebFrame.h" | 6 #include "public/web/WebFrame.h" |
| 7 | 7 |
| 8 #include "web/OpenedFrameTracker.h" | 8 #include "web/OpenedFrameTracker.h" |
| 9 #include <algorithm> | |
| 10 | |
| 9 | 11 |
| 10 namespace blink { | 12 namespace blink { |
| 11 | 13 |
| 14 void WebFrame::swap(WebFrame* frame) | |
| 15 { | |
| 16 using std::swap; | |
| 17 | |
| 18 if (m_parent) { | |
| 19 if (m_parent->m_firstChild == this) | |
|
eseidel
2014/05/08 00:13:01
I probably would have written a overrideIfSetTo(m_
dcheng
2014/05/08 01:54:18
Yeah I think it may not be worth it at the moment.
| |
| 20 m_parent->m_firstChild = frame; | |
| 21 if (m_parent->m_lastChild == this) | |
| 22 m_parent->m_lastChild = frame; | |
| 23 swap(m_parent, frame->m_parent); | |
| 24 } | |
| 25 if (m_previousSibling) { | |
| 26 m_previousSibling->m_nextSibling = frame; | |
| 27 swap(m_previousSibling, frame->m_previousSibling); | |
| 28 } | |
| 29 if (m_nextSibling) { | |
| 30 m_nextSibling->m_previousSibling = frame; | |
| 31 swap(m_nextSibling, frame->m_nextSibling); | |
| 32 } | |
| 33 if (m_opener) { | |
| 34 m_opener->m_openedFrameTracker->remove(this); | |
| 35 m_opener->m_openedFrameTracker->add(frame); | |
| 36 swap(m_opener, frame->m_opener); | |
| 37 } | |
| 38 if (!m_openedFrameTracker->isEmpty()) { | |
| 39 m_openedFrameTracker->updateOpener(frame); | |
| 40 frame->m_openedFrameTracker.reset(m_openedFrameTracker.release()); | |
| 41 } | |
| 42 } | |
| 43 | |
| 12 WebFrame* WebFrame::opener() const | 44 WebFrame* WebFrame::opener() const |
| 13 { | 45 { |
| 14 return m_opener; | 46 return m_opener; |
| 15 } | 47 } |
| 16 | 48 |
| 17 void WebFrame::setOpener(WebFrame* opener) | 49 void WebFrame::setOpener(WebFrame* opener) |
| 18 { | 50 { |
| 19 if (m_opener) | 51 if (m_opener) |
| 20 m_opener->m_openedFrameTracker->remove(this); | 52 m_opener->m_openedFrameTracker->remove(this); |
| 21 if (opener) | 53 if (opener) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 99 , m_openedFrameTracker(new OpenedFrameTracker) | 131 , m_openedFrameTracker(new OpenedFrameTracker) |
| 100 { | 132 { |
| 101 } | 133 } |
| 102 | 134 |
| 103 WebFrame::~WebFrame() | 135 WebFrame::~WebFrame() |
| 104 { | 136 { |
| 105 m_openedFrameTracker.reset(0); | 137 m_openedFrameTracker.reset(0); |
| 106 } | 138 } |
| 107 | 139 |
| 108 } // namespace blink | 140 } // namespace blink |
| OLD | NEW |