Changeset 119219 in webkit
- Timestamp:
- Jun 1, 2012 5:30:09 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r119216 r119219 1 2012-06-01 MORITA Hajime <morrita@google.com> 2 3 Frame::willDetachPage() shouldn't be called more than once. 4 https://bugs.webkit.org/show_bug.cgi?id=88056 5 6 Reviewed by Ryosuke Niwa. 7 8 This change moved willDetachPage() to private and calls it from 9 detachFromParent(). Also, it checks m_page and call 10 willDetachPage() only once, if m_page is available. 11 12 No new tests. Covered by existing suites. 13 14 * loader/FrameLoader.cpp: 15 (WebCore::FrameLoader::closeAndRemoveChild): 16 (WebCore::FrameLoader::detachFromParent): 17 * page/Frame.cpp: 18 (WebCore::Frame::detachFromPage): 19 (WebCore): 20 (WebCore::Frame::willDetachPage): 21 * page/Frame.h: 22 (Frame): 23 * page/Page.cpp: 24 (WebCore::Page::~Page): 25 1 26 2012-06-01 Pierre Rossi <pierre.rossi@gmail.com> 2 27 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r118086 r119219 2267 2267 if (child->ownerElement() && child->page()) 2268 2268 child->page()->decrementFrameCount(); 2269 child->willDetachPage();2270 2269 child->detachFromPage(); 2271 2270 … … 2346 2345 } else { 2347 2346 m_frame->setView(0); 2348 m_frame->willDetachPage();2349 2347 m_frame->detachFromPage(); 2350 2348 } -
trunk/Source/WebCore/page/Frame.cpp
r118039 r119219 690 690 } 691 691 692 void Frame:: willDetachPage()692 void Frame::detachFromPage() 693 693 { 694 694 if (Frame* parent = tree()->parent()) 695 695 parent->loader()->checkLoadComplete(); 696 696 if (m_page) 697 willDetachPage(); 698 m_page = 0; 699 } 700 701 702 void Frame::willDetachPage() 703 { 697 704 HashSet<FrameDestructionObserver*>::iterator stop = m_destructionObservers.end(); 698 705 for (HashSet<FrameDestructionObserver*>::iterator it = m_destructionObservers.begin(); it != stop; ++it) 699 706 (*it)->willDetachPage(); 700 707 701 // FIXME: It's unclear as to why this is called more than once, but it is, 702 // so page() could be NULL. 703 if (page() && page()->focusController()->focusedFrame() == this) 708 if (page()->focusController()->focusedFrame() == this) 704 709 page()->focusController()->setFocusedFrame(0); 705 710 -
trunk/Source/WebCore/page/Frame.h
r113466 r119219 92 92 void removeDestructionObserver(FrameDestructionObserver*); 93 93 94 void willDetachPage();95 94 void detachFromPage(); 96 95 void disconnectOwnerElement(); … … 208 207 209 208 void injectUserScriptsForWorld(DOMWrapperWorld*, const UserScriptVector&, UserScriptInjectionTime); 209 void willDetachPage(); 210 210 211 211 HashSet<FrameDestructionObserver*> m_destructionObservers; … … 352 352 } 353 353 354 inline void Frame::detachFromPage()355 {356 m_page = 0;357 }358 359 354 inline EventHandler* Frame::eventHandler() const 360 355 { -
trunk/Source/WebCore/page/Page.cpp
r116574 r119219 188 188 allPages->remove(this); 189 189 190 for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext()) { 191 frame->willDetachPage(); 190 for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext()) 192 191 frame->detachFromPage(); 193 }194 192 195 193 m_editorClient->pageDestroyed();
Note: See TracChangeset
for help on using the changeset viewer.