Changeset 31521 in webkit
- Timestamp:
- Apr 1, 2008, 1:47:04 AM (17 years ago)
- Location:
- trunk/WebKit/qt
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/qt/Api/qwebframe.cpp
r31520 r31521 154 154 QWebFrame::~QWebFrame() 155 155 { 156 Q_ASSERT(d->frame == 0); 156 if (d->frame && d->frame->loader() && d->frame->loader()->client()) 157 static_cast<FrameLoaderClientQt*>(d->frame->loader()->client())->m_webFrame = 0; 158 157 159 delete d; 158 160 } -
trunk/WebKit/qt/ChangeLog
r31520 r31521 1 2008-04-01 Holger Hans Peter Freyther <holger.freyther@trolltech.com> 2 3 Reviewed by Simon. 4 5 * Get the RefCounting of WebCore::Frame right and make sure that both QWebFrame 6 and WebCore::Frame get destroyed if we leave site with subframes and on the 7 end of the application. 8 * Use adoptRef in FrameLoaderClientQt::createFrame to get the refs right for subframes. We 9 do not want to add an extra reference. Without this we are leaking subframes. 10 * Assume that the lifetime of a Frame and FrameLoader are the same, when the Frame is gone 11 we want to destroy the QWebFrame (e.g. on a page with subframes). Add delete m_webFrame 12 in the frameLoaderDestroyed method to do that. 13 * If we happen to delete the QWebFrame before the FrameLoaderClientQt we set m_webFrame to 14 zero in the FrameLoaderClientQt to avoid bad things. 15 16 17 * Api/qwebframe.cpp: 18 (QWebFrame::~QWebFrame): 19 * WebCoreSupport/FrameLoaderClientQt.cpp: 20 (WebCore::FrameLoaderClientQt::shouldGoToHistoryItem): 21 (WebCore::FrameLoaderClientQt::objectContentType): 22 * WebCoreSupport/FrameLoaderClientQt.h: 23 1 24 2008-04-01 Holger Hans Peter Freyther <holger.freyther@trolltech.com> 2 25 -
trunk/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
r31520 r31521 191 191 void FrameLoaderClientQt::detachedFromParent4() 192 192 { 193 if (!m_webFrame)194 return;195 m_webFrame->d->frame = 0;196 m_webFrame = 0;197 m_frame = 0;198 193 } 199 194 … … 445 440 void FrameLoaderClientQt::frameLoaderDestroyed() 446 441 { 447 Q_ASSERT(m_webFrame == 0); 448 Q_ASSERT(m_frame == 0); 442 delete m_webFrame; 443 m_frame = 0; 444 m_webFrame = 0; 445 449 446 delete this; 450 447 } … … 735 732 emit m_webFrame->page()->frameCreated(webFrame); 736 733 737 RefPtr<Frame> childFrame = adoptRef(webFrame->d->frame .get());734 RefPtr<Frame> childFrame = adoptRef(webFrame->d->frame); 738 735 739 736 // FIXME: All of the below should probably be moved over into WebCore -
trunk/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
r31516 r31521 2 2 * Copyright (C) 2006 Zack Rusin <zack@kde.org> 3 3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 4 * Copyright (C) 2007-2008 Trolltech ASA 4 5 * 5 6 * All rights reserved. … … 55 56 Q_OBJECT 56 57 58 friend class ::QWebFrame; 57 59 void callPolicyFunction(FramePolicyFunction function, PolicyAction action); 58 60 private slots:
Note:
See TracChangeset
for help on using the changeset viewer.