| Index: Source/core/frame/LocalFrame.cpp
|
| ===================================================================
|
| --- Source/core/frame/LocalFrame.cpp (revision 170478)
|
| +++ Source/core/frame/LocalFrame.cpp (working copy)
|
| @@ -102,6 +102,10 @@
|
| , m_orientation(0)
|
| , m_inViewSourceMode(false)
|
| {
|
| + if (this->ownerElement()) {
|
| + page()->incrementSubframeCount();
|
| + this->ownerElement()->setContentFrame(*this);
|
| + }
|
| }
|
|
|
| PassRefPtr<LocalFrame> LocalFrame::create(FrameLoaderClient* client, FrameHost* host, HTMLFrameOwnerElement* ownerElement)
|
| @@ -118,6 +122,8 @@
|
| setView(nullptr);
|
| loader().clear();
|
| setDOMWindow(nullptr);
|
| +
|
| + disconnectOwnerElement();
|
| }
|
|
|
| bool LocalFrame::inScope(TreeScope* scope) const
|
| @@ -258,6 +264,18 @@
|
| Frame::detachFromFrameHost();
|
| }
|
|
|
| +void LocalFrame::disconnectOwnerElement()
|
| +{
|
| + if (ownerElement()) {
|
| + if (Document* doc = document())
|
| + doc->topDocument().clearAXObjectCache();
|
| + ownerElement()->clearContentFrame();
|
| + if (page())
|
| + page()->decrementSubframeCount();
|
| + }
|
| + m_ownerElement = 0;
|
| +}
|
| +
|
| String LocalFrame::documentTypeString() const
|
| {
|
| if (DocumentType* doctype = document()->doctype())
|
|
|