| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
| 3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
| 4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
| 5 * 2000 Simon Hausmann <hausmann@kde.org> | 5 * 2000 Simon Hausmann <hausmann@kde.org> |
| 6 * 2000 Stefan Schimanski <1Stein@gmx.de> | 6 * 2000 Stefan Schimanski <1Stein@gmx.de> |
| 7 * 2001 George Staikos <staikos@kde.org> | 7 * 2001 George Staikos <staikos@kde.org> |
| 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
| 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> | 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> |
| 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 // frame object keep weak references to the frame; those will be | 127 // frame object keep weak references to the frame; those will be |
| 128 // automatically cleared by the garbage collector. Hence, explicit | 128 // automatically cleared by the garbage collector. Hence, explicit |
| 129 // frameDestroyed() notifications aren't needed. | 129 // frameDestroyed() notifications aren't needed. |
| 130 #else | 130 #else |
| 131 // FIXME: follow Oilpan and clear the FrameView and FrameLoader | 131 // FIXME: follow Oilpan and clear the FrameView and FrameLoader |
| 132 // during FrameOwner detachment instead, see LocalFrame::disconnectOwnerElem
ent(). | 132 // during FrameOwner detachment instead, see LocalFrame::disconnectOwnerElem
ent(). |
| 133 setView(nullptr); | 133 setView(nullptr); |
| 134 m_loader.clear(); | 134 m_loader.clear(); |
| 135 setDOMWindow(nullptr); | 135 setDOMWindow(nullptr); |
| 136 | 136 |
| 137 HashSet<RawPtr<FrameDestructionObserver> >::iterator stop = m_destructionObs
ervers.end(); | 137 for (const auto& frameDestructionObserver : m_destructionObservers) |
| 138 for (HashSet<RawPtr<FrameDestructionObserver> >::iterator it = m_destruction
Observers.begin(); it != stop; ++it) | 138 frameDestructionObserver->frameDestroyed(); |
| 139 (*it)->frameDestroyed(); | |
| 140 #endif | 139 #endif |
| 141 } | 140 } |
| 142 | 141 |
| 143 void LocalFrame::trace(Visitor* visitor) | 142 void LocalFrame::trace(Visitor* visitor) |
| 144 { | 143 { |
| 145 #if ENABLE(OILPAN) | 144 #if ENABLE(OILPAN) |
| 146 visitor->trace(m_destructionObservers); | 145 visitor->trace(m_destructionObservers); |
| 147 visitor->trace(m_loader); | 146 visitor->trace(m_loader); |
| 148 visitor->trace(m_navigationScheduler); | 147 visitor->trace(m_navigationScheduler); |
| 149 visitor->trace(m_view); | 148 visitor->trace(m_view); |
| 150 visitor->trace(m_pagePopupOwner); | 149 visitor->trace(m_pagePopupOwner); |
| 151 visitor->trace(m_script); | 150 visitor->trace(m_script); |
| 152 visitor->trace(m_editor); | 151 visitor->trace(m_editor); |
| 153 visitor->trace(m_spellChecker); | 152 visitor->trace(m_spellChecker); |
| 154 visitor->trace(m_selection); | 153 visitor->trace(m_selection); |
| 155 visitor->trace(m_eventHandler); | 154 visitor->trace(m_eventHandler); |
| 156 visitor->trace(m_console); | 155 visitor->trace(m_console); |
| 157 visitor->trace(m_inputMethodController); | 156 visitor->trace(m_inputMethodController); |
| 158 visitor->registerWeakMembers<LocalFrame, &LocalFrame::clearWeakMembers>(this
); | 157 visitor->registerWeakMembers<LocalFrame, &LocalFrame::clearWeakMembers>(this
); |
| 159 HeapSupplementable<LocalFrame>::trace(visitor); | 158 HeapSupplementable<LocalFrame>::trace(visitor); |
| 160 #endif | 159 #endif |
| 161 Frame::trace(visitor); | 160 Frame::trace(visitor); |
| 162 } | 161 } |
| 163 | 162 |
| 164 #if ENABLE(OILPAN) | 163 #if ENABLE(OILPAN) |
| 165 void LocalFrame::clearWeakMembers(Visitor* visitor) | 164 void LocalFrame::clearWeakMembers(Visitor* visitor) |
| 166 { | 165 { |
| 167 Vector<HTMLPlugInElement*> deadPlugins; | 166 Vector<HTMLPlugInElement*> deadPlugins; |
| 168 for (HashSet<HTMLPlugInElement*>::const_iterator it = m_pluginElements.begin
(); it != m_pluginElements.end(); ++it) { | 167 for (const auto& pluginElement : m_pluginElements) { |
| 169 if (!visitor->isAlive(*it)) { | 168 if (!visitor->isAlive(pluginElement)) { |
| 170 (*it)->shouldDisposePlugin(); | 169 pluginElement->shouldDisposePlugin(); |
| 171 deadPlugins.append(*it); | 170 deadPlugins.append(pluginElement); |
| 172 } | 171 } |
| 173 } | 172 } |
| 174 for (unsigned i = 0; i < deadPlugins.size(); ++i) | 173 for (unsigned i = 0; i < deadPlugins.size(); ++i) |
| 175 m_pluginElements.remove(deadPlugins[i]); | 174 m_pluginElements.remove(deadPlugins[i]); |
| 176 } | 175 } |
| 177 #endif | 176 #endif |
| 178 | 177 |
| 179 void LocalFrame::navigate(Document& originDocument, const KURL& url, bool lockBa
ckForwardList) | 178 void LocalFrame::navigate(Document& originDocument, const KURL& url, bool lockBa
ckForwardList) |
| 180 { | 179 { |
| 181 m_navigationScheduler.scheduleLocationChange(&originDocument, url.string(),
lockBackForwardList); | 180 m_navigationScheduler.scheduleLocationChange(&originDocument, url.string(),
lockBackForwardList); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 | 343 |
| 345 void LocalFrame::willDetachFrameHost() | 344 void LocalFrame::willDetachFrameHost() |
| 346 { | 345 { |
| 347 // We should never be detatching the page during a Layout. | 346 // We should never be detatching the page during a Layout. |
| 348 RELEASE_ASSERT(!m_view || !m_view->isInPerformLayout()); | 347 RELEASE_ASSERT(!m_view || !m_view->isInPerformLayout()); |
| 349 | 348 |
| 350 Frame* parent = tree().parent(); | 349 Frame* parent = tree().parent(); |
| 351 if (parent && parent->isLocalFrame()) | 350 if (parent && parent->isLocalFrame()) |
| 352 toLocalFrame(parent)->loader().checkLoadComplete(); | 351 toLocalFrame(parent)->loader().checkLoadComplete(); |
| 353 | 352 |
| 354 WillBeHeapHashSet<RawPtrWillBeWeakMember<FrameDestructionObserver> >::iterat
or stop = m_destructionObservers.end(); | 353 for (const auto& frameDestructionObserver : m_destructionObservers) |
| 355 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<FrameDestructionObserver> >::i
terator it = m_destructionObservers.begin(); it != stop; ++it) | 354 frameDestructionObserver->willDetachFrameHost(); |
| 356 (*it)->willDetachFrameHost(); | |
| 357 | 355 |
| 358 // FIXME: Page should take care of updating focus/scrolling instead of Frame
. | 356 // FIXME: Page should take care of updating focus/scrolling instead of Frame
. |
| 359 // FIXME: It's unclear as to why this is called more than once, but it is, | 357 // FIXME: It's unclear as to why this is called more than once, but it is, |
| 360 // so page() could be null. | 358 // so page() could be null. |
| 361 if (page() && page()->focusController().focusedFrame() == this) | 359 if (page() && page()->focusController().focusedFrame() == this) |
| 362 page()->focusController().setFocusedFrame(nullptr); | 360 page()->focusController().setFocusedFrame(nullptr); |
| 363 script().clearScriptObjects(); | 361 script().clearScriptObjects(); |
| 364 | 362 |
| 365 if (page() && page()->scrollingCoordinator() && m_view) | 363 if (page() && page()->scrollingCoordinator() && m_view) |
| 366 page()->scrollingCoordinator()->willDestroyScrollableArea(m_view.get()); | 364 page()->scrollingCoordinator()->willDestroyScrollableArea(m_view.get()); |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 } | 735 } |
| 738 | 736 |
| 739 void LocalFrame::disconnectOwnerElement() | 737 void LocalFrame::disconnectOwnerElement() |
| 740 { | 738 { |
| 741 if (owner()) { | 739 if (owner()) { |
| 742 if (Document* document = this->document()) | 740 if (Document* document = this->document()) |
| 743 document->topDocument().clearAXObjectCache(); | 741 document->topDocument().clearAXObjectCache(); |
| 744 #if ENABLE(OILPAN) | 742 #if ENABLE(OILPAN) |
| 745 // First give the plugin elements holding persisted, | 743 // First give the plugin elements holding persisted, |
| 746 // renderer-less plugins the opportunity to dispose of them. | 744 // renderer-less plugins the opportunity to dispose of them. |
| 747 for (HashSet<HTMLPlugInElement*>::const_iterator it = m_pluginElements.b
egin(); it != m_pluginElements.end(); ++it) | 745 for (const auto& pluginElement : m_pluginElements) |
| 748 (*it)->disconnectContentFrame(); | 746 pluginElement->disconnectContentFrame(); |
| 749 m_pluginElements.clear(); | 747 m_pluginElements.clear(); |
| 750 | 748 |
| 751 // Clear the FrameView and FrameLoader right here rather than | 749 // Clear the FrameView and FrameLoader right here rather than |
| 752 // during finalization. Too late to access various heap objects | 750 // during finalization. Too late to access various heap objects |
| 753 // at that stage. | 751 // at that stage. |
| 754 setView(nullptr); | 752 setView(nullptr); |
| 755 loader().clear(); | 753 loader().clear(); |
| 756 #endif | 754 #endif |
| 757 } | 755 } |
| 758 Frame::disconnectOwnerElement(); | 756 Frame::disconnectOwnerElement(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 779 } | 777 } |
| 780 | 778 |
| 781 void LocalFrame::unregisterPluginElement(HTMLPlugInElement* plugin) | 779 void LocalFrame::unregisterPluginElement(HTMLPlugInElement* plugin) |
| 782 { | 780 { |
| 783 ASSERT(m_pluginElements.contains(plugin)); | 781 ASSERT(m_pluginElements.contains(plugin)); |
| 784 m_pluginElements.remove(plugin); | 782 m_pluginElements.remove(plugin); |
| 785 } | 783 } |
| 786 #endif | 784 #endif |
| 787 | 785 |
| 788 } // namespace blink | 786 } // namespace blink |
| OLD | NEW |