| Index: Source/web/WebFrame.cpp
|
| diff --git a/Source/web/WebFrame.cpp b/Source/web/WebFrame.cpp
|
| index d5498208d7dba748d3c4232433bc605c5315dd42..e5eb22bacb679fc1c1f139ebd6ea93b9d47fc6bf 100644
|
| --- a/Source/web/WebFrame.cpp
|
| +++ b/Source/web/WebFrame.cpp
|
| @@ -42,10 +42,6 @@ bool WebFrame::swap(WebFrame* frame)
|
| if (!oldFrame->host())
|
| return false;
|
|
|
| - // The frame being swapped in should not have a Frame associated
|
| - // with it yet.
|
| - ASSERT(!toCoreFrame(frame));
|
| -
|
| if (m_parent) {
|
| if (m_parent->m_firstChild == this)
|
| m_parent->m_firstChild = frame;
|
| @@ -79,7 +75,11 @@ bool WebFrame::swap(WebFrame* frame)
|
| // increments of connected subframes.
|
| FrameOwner* owner = oldFrame->owner();
|
| oldFrame->disconnectOwnerElement();
|
| - if (frame->isWebLocalFrame()) {
|
| + if (toCoreFrame(frame)) {
|
| + ASSERT(owner == toCoreFrame(frame)->owner());
|
| + if (owner->isLocal())
|
| + toHTMLFrameOwnerElement(owner)->setContentFrame(*toCoreFrame(frame));
|
| + } else if (frame->isWebLocalFrame()) {
|
| toWebLocalFrameImpl(frame)->initializeCoreFrame(oldFrame->host(), owner, oldFrame->tree().name(), nullAtom);
|
| } else {
|
| toWebRemoteFrameImpl(frame)->initializeCoreFrame(oldFrame->host(), owner, oldFrame->tree().name());
|
| @@ -146,6 +146,11 @@ void WebFrame::removeChild(WebFrame* child)
|
| toCoreFrame(this)->host()->decrementSubframeCount();
|
| }
|
|
|
| +void WebFrame::setParent(WebFrame* parent)
|
| +{
|
| + m_parent = parent;
|
| +}
|
| +
|
| WebFrame* WebFrame::parent() const
|
| {
|
| return m_parent;
|
|
|