2008-04-01 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Apr 2008 08:46:48 +0000 (08:46 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Apr 2008 08:46:48 +0000 (08:46 +0000)
        Reviewed by Simon.

        * Do not save a RefPtr to the frame. The FrameLoaderClient, Frame and
        QWebFrame should have the same lifetime everything else is a leak
        or issue.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@31520 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/qt/Api/qwebframe.cpp
WebKit/qt/Api/qwebframe_p.h
WebKit/qt/ChangeLog
WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp

index 8d25025..8d9752b 100644 (file)
@@ -81,9 +81,9 @@ void QWebFramePrivate::init(QWebFrame *qframe, WebCore::Page *webcorePage, QWebF
 
     frameLoaderClient = new FrameLoaderClientQt();
     frame = new Frame(webcorePage, frameData->ownerElement, frameLoaderClient);
-    frameLoaderClient->setFrame(qframe, frame.get());
+    frameLoaderClient->setFrame(qframe, frame);
 
-    FrameView* frameView = new FrameView(frame.get());
+    FrameView* frameView = new FrameView(frame);
     if (!frameData->allowsScrolling)
         frameView->setScrollbarsMode(ScrollbarAlwaysOff);
     if (frameData->marginWidth != -1)
@@ -91,7 +91,7 @@ void QWebFramePrivate::init(QWebFrame *qframe, WebCore::Page *webcorePage, QWebF
     if (frameData->marginHeight != -1)
         frameView->setMarginHeight(frameData->marginHeight);
 
-    frame->setView(frameView.get());
+    frame->setView(frameView);
     frame->init();
     frameView->deref();
 
@@ -168,7 +168,7 @@ QWebFrame::~QWebFrame()
 void QWebFrame::addToJSWindowObject(const QString &name, QObject *object)
 {
       KJS::JSLock lock;
-      JSDOMWindow *window = toJSDOMWindow(d->frame.get());
+      JSDOMWindow *window = toJSDOMWindow(d->frame);
       KJS::Bindings::RootObject *root = d->frame->bindingRootObject();
       if (!window) {
           qDebug() << "Warning: couldn't get window object";
@@ -551,7 +551,7 @@ QString QWebFrame::evaluateJavaScript(const QString& scriptSource)
 
 WebCore::Frame* QWebFramePrivate::core(QWebFrame* webFrame)
 {
-    return webFrame->d->frame.get();
+    return webFrame->d->frame;
 }
 
 QWebFrame* QWebFramePrivate::kit(WebCore::Frame* coreFrame)
index d5741c2..63c8c33 100644 (file)
@@ -82,7 +82,7 @@ public:
 
     QWebFrame *q;
     WebCore::FrameLoaderClientQt *frameLoaderClient;
-    WTF::RefPtr<WebCore::Frame> frame;
+    WebCore::Frame *frame;
     QWebPage *page;
 };
 
index c55ba81..0aa1745 100644 (file)
@@ -2,6 +2,19 @@
 
         Reviewed by Simon.
 
+        * Do not save a RefPtr to the frame. The FrameLoaderClient, Frame and
+        QWebFrame should have the same lifetime everything else is a leak
+        or issue.
+
+        * Api/qwebframe.cpp:
+        (QWebFramePrivate::init):
+        * Api/qwebframe_p.h:
+        * WebCoreSupport/FrameLoaderClientQt.cpp:
+
+2008-04-01  Holger Hans Peter Freyther  <holger.freyther@trolltech.com>
+
+        Reviewed by Simon.
+
         * Do not store the QWebFrame associated with a ScrollView/FrameView
         in the WebCore::Widget.
         * Instead of asking the Widget for the QWebFrame use the QWebFramePrivate::core
index f086eb2..82766a6 100644 (file)
@@ -663,7 +663,7 @@ WebCore::Frame* FrameLoaderClientQt::dispatchCreatePage()
     QWebPage *newPage = m_webFrame->page()->createWindow();
     if (!newPage)
         return 0;
-    return newPage->mainFrame()->d->frame.get();
+    return newPage->mainFrame()->d->frame;
 }
 
 void FrameLoaderClientQt::dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WebCore::String& MIMEType, const WebCore::ResourceRequest&)