[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da

darin at chromium.org darin at chromium.org
Wed Dec 22 18:42:08 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit f07950761e33a4e492ca28d5277fa5efcb2c8e0c
Author: darin at chromium.org <darin at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Dec 16 00:12:46 2010 +0000

    2010-12-14  Darin Fisher  <darin at chromium.org>
    
            Reviewed by Dimitri Glazkov.
    
            [chromium] AssociatedURLLoader leaks m_realLoader to its WebURLLoaderClient.
            https://bugs.webkit.org/show_bug.cgi?id=51062
    
            * src/AssociatedURLLoader.cpp: Intercept WebURLLoaderClient methods and
            forward |this| as the WebURLLoader parameter.
            (WebKit::AssociatedURLLoader::AssociatedURLLoader):
            (WebKit::AssociatedURLLoader::loadSynchronously):
            (WebKit::AssociatedURLLoader::loadAsynchronously):
            (WebKit::AssociatedURLLoader::willSendRequest):
            (WebKit::AssociatedURLLoader::didSendData):
            (WebKit::AssociatedURLLoader::didReceiveResponse):
            (WebKit::AssociatedURLLoader::didDownloadData):
            (WebKit::AssociatedURLLoader::didReceiveData):
            (WebKit::AssociatedURLLoader::didReceiveCachedMetadata):
            (WebKit::AssociatedURLLoader::didFinishLoading):
            (WebKit::AssociatedURLLoader::didFail):
            * src/AssociatedURLLoader.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74161 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 008d901..ec48251 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,25 @@
+2010-12-14  Darin Fisher  <darin at chromium.org>
+
+        Reviewed by Dimitri Glazkov.
+
+        [chromium] AssociatedURLLoader leaks m_realLoader to its WebURLLoaderClient.
+        https://bugs.webkit.org/show_bug.cgi?id=51062
+
+        * src/AssociatedURLLoader.cpp: Intercept WebURLLoaderClient methods and
+        forward |this| as the WebURLLoader parameter.
+        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
+        (WebKit::AssociatedURLLoader::loadSynchronously):
+        (WebKit::AssociatedURLLoader::loadAsynchronously):
+        (WebKit::AssociatedURLLoader::willSendRequest):
+        (WebKit::AssociatedURLLoader::didSendData):
+        (WebKit::AssociatedURLLoader::didReceiveResponse):
+        (WebKit::AssociatedURLLoader::didDownloadData):
+        (WebKit::AssociatedURLLoader::didReceiveData):
+        (WebKit::AssociatedURLLoader::didReceiveCachedMetadata):
+        (WebKit::AssociatedURLLoader::didFinishLoading):
+        (WebKit::AssociatedURLLoader::didFail):
+        * src/AssociatedURLLoader.h:
+
 2010-12-14  Mihai Parparita  <mihaip at chromium.org>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebKit/chromium/src/AssociatedURLLoader.cpp b/WebKit/chromium/src/AssociatedURLLoader.cpp
index f494a0e..34a4055 100644
--- a/WebKit/chromium/src/AssociatedURLLoader.cpp
+++ b/WebKit/chromium/src/AssociatedURLLoader.cpp
@@ -42,7 +42,8 @@ namespace WebKit {
 
 AssociatedURLLoader::AssociatedURLLoader(PassRefPtr<WebFrameImpl> frameImpl)
     : m_frameImpl(frameImpl),
-      m_realLoader(webKitClient()->createURLLoader())
+      m_realLoader(webKitClient()->createURLLoader()),
+      m_realClient(0)
 {
 }
 
@@ -52,6 +53,8 @@ AssociatedURLLoader::~AssociatedURLLoader()
 
 void AssociatedURLLoader::loadSynchronously(const WebURLRequest& request, WebURLResponse& response, WebURLError& error, WebData& data)
 {
+    ASSERT(!m_realClient);
+
     WebURLRequest requestCopy(request);
     prepareRequest(requestCopy);
 
@@ -60,10 +63,13 @@ void AssociatedURLLoader::loadSynchronously(const WebURLRequest& request, WebURL
 
 void AssociatedURLLoader::loadAsynchronously(const WebURLRequest& request, WebURLLoaderClient* client)
 {
+    ASSERT(!m_realClient);
+
     WebURLRequest requestCopy(request);
     prepareRequest(requestCopy);
 
-    m_realLoader->loadAsynchronously(requestCopy, client);
+    m_realClient = client;
+    m_realLoader->loadAsynchronously(requestCopy, this);
 }
 
 void AssociatedURLLoader::cancel()
@@ -84,4 +90,44 @@ void AssociatedURLLoader::prepareRequest(WebURLRequest& request)
     m_frameImpl->dispatchWillSendRequest(request);
 }
 
+void AssociatedURLLoader::willSendRequest(WebURLLoader*, WebURLRequest& newRequest, const WebURLResponse& redirectResponse)
+{
+    m_realClient->willSendRequest(this, newRequest, redirectResponse);
+}
+
+void AssociatedURLLoader::didSendData(WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
+{
+    m_realClient->didSendData(this, bytesSent, totalBytesToBeSent);
+}
+
+void AssociatedURLLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& response)
+{
+    m_realClient->didReceiveResponse(this, response);
+}
+
+void AssociatedURLLoader::didDownloadData(WebURLLoader*, int dataLength)
+{
+    m_realClient->didDownloadData(this, dataLength);
+}
+
+void AssociatedURLLoader::didReceiveData(WebURLLoader*, const char* data, int dataLength)
+{
+    m_realClient->didReceiveData(this, data, dataLength);
+}
+
+void AssociatedURLLoader::didReceiveCachedMetadata(WebURLLoader*, const char* data, int dataLength)
+{
+    m_realClient->didReceiveCachedMetadata(this, data, dataLength);
+}
+
+void AssociatedURLLoader::didFinishLoading(WebURLLoader*, double finishTime)
+{
+    m_realClient->didFinishLoading(this, finishTime);
+}
+
+void AssociatedURLLoader::didFail(WebURLLoader*, const WebURLError& error)
+{
+    m_realClient->didFail(this, error);
+}
+
 } // namespace WebKit
diff --git a/WebKit/chromium/src/AssociatedURLLoader.h b/WebKit/chromium/src/AssociatedURLLoader.h
index 4c9f54e..91cb0bf 100644
--- a/WebKit/chromium/src/AssociatedURLLoader.h
+++ b/WebKit/chromium/src/AssociatedURLLoader.h
@@ -32,6 +32,7 @@
 #define AssociatedURLLoader_h
 
 #include "WebURLLoader.h"
+#include "WebURLLoaderClient.h"
 #include <wtf/OwnPtr.h>
 #include <wtf/RefPtr.h>
 
@@ -41,7 +42,8 @@ class WebFrameImpl;
 
 // This class is used to implement WebFrame::createAssociatedURLLoader.
 // FIXME: Implement in terms of WebCore::SubresourceLoader.
-class AssociatedURLLoader : public WebURLLoader {
+class AssociatedURLLoader : public WebURLLoader,
+                            public WebURLLoaderClient {
 public:
     AssociatedURLLoader(PassRefPtr<WebFrameImpl>);
     ~AssociatedURLLoader();
@@ -52,11 +54,22 @@ public:
     virtual void cancel();
     virtual void setDefersLoading(bool);
 
+    // WebURLLoaderClient methods:
+    virtual void willSendRequest(WebURLLoader*, WebURLRequest& newRequest, const WebURLResponse& redirectResponse);
+    virtual void didSendData(WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
+    virtual void didReceiveResponse(WebURLLoader*, const WebURLResponse&);
+    virtual void didDownloadData(WebURLLoader*, int dataLength);
+    virtual void didReceiveData(WebURLLoader*, const char* data, int dataLength);
+    virtual void didReceiveCachedMetadata(WebURLLoader*, const char* data, int dataLength);
+    virtual void didFinishLoading(WebURLLoader*, double finishTime);
+    virtual void didFail(WebURLLoader*, const WebURLError&);
+
 private:
     void prepareRequest(WebURLRequest&);
 
     RefPtr<WebFrameImpl> m_frameImpl;
     OwnPtr<WebURLLoader> m_realLoader;
+    WebURLLoaderClient* m_realClient;
 };
 
 } // namespace WebKit

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list