PingLoader objects unnecessarily pass through OwnPtr
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Nov 2013 07:10:05 +0000 (07:10 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Nov 2013 07:10:05 +0000 (07:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=122942

Reviewed by Darin Adler.

There's no need to store new PingLoader objects into an OwnPtr just to leak them out a few lines later
into an unused variable. New objects are created through a new helper method and then left unmanaged as
they're guaranteed to destroy themselves when they receive a response of any kind.

* loader/PingLoader.cpp:
(WebCore::PingLoader::loadImage): Call the new createPingLoader method to spawn the PingLoader.
(WebCore::PingLoader::sendPing): Ditto.
(WebCore::PingLoader::sendViolationReport): Ditto.
(WebCore::PingLoader::createPingLoader): A helper method that creates a new PingLoader object
* loader/PingLoader.h: Declare the new PingLoader::createPingLoader method.

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

Source/WebCore/ChangeLog
Source/WebCore/loader/PingLoader.cpp
Source/WebCore/loader/PingLoader.h

index 22736cd..bc3d6e8 100644 (file)
@@ -1,3 +1,21 @@
+2013-11-03  Zan Dobersek  <zdobersek@igalia.com>
+
+        PingLoader objects unnecessarily pass through OwnPtr
+        https://bugs.webkit.org/show_bug.cgi?id=122942
+
+        Reviewed by Darin Adler.
+
+        There's no need to store new PingLoader objects into an OwnPtr just to leak them out a few lines later
+        into an unused variable. New objects are created through a new helper method and then left unmanaged as
+        they're guaranteed to destroy themselves when they receive a response of any kind.
+
+        * loader/PingLoader.cpp:
+        (WebCore::PingLoader::loadImage): Call the new createPingLoader method to spawn the PingLoader.
+        (WebCore::PingLoader::sendPing): Ditto.
+        (WebCore::PingLoader::sendViolationReport): Ditto.
+        (WebCore::PingLoader::createPingLoader): A helper method that creates a new PingLoader object
+        * loader/PingLoader.h: Declare the new PingLoader::createPingLoader method.
+
 2013-11-03  Andreas Kling  <akling@apple.com>
 
         HTMLOptionsCollection is always rooted at a HTMLSelectElement.
index 4b243f7..b5cc7f2 100644 (file)
@@ -45,7 +45,6 @@
 #include "ResourceResponse.h"
 #include "SecurityOrigin.h"
 #include "SecurityPolicy.h"
-#include <wtf/OwnPtr.h>
 #include <wtf/text/CString.h>
 
 namespace WebCore {
@@ -66,11 +65,8 @@ void PingLoader::loadImage(Frame* frame, const URL& url)
     if (!referrer.isEmpty())
         request.setHTTPReferrer(referrer);
     frame->loader().addExtraFieldsToSubresourceRequest(request);
-    OwnPtr<PingLoader> pingLoader = adoptPtr(new PingLoader(frame, request));
 
-    // Leak the ping loader, since it will kill itself as soon as it receives a response.
-    PingLoader* leakedPingLoader = pingLoader.leakPtr();
-    UNUSED_PARAM(leakedPingLoader);
+    createPingLoader(frame, request);
 }
 
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing
@@ -98,11 +94,8 @@ void PingLoader::sendPing(Frame* frame, const URL& pingURL, const URL& destinati
                 request.setHTTPReferrer(referrer);
         }
     }
-    OwnPtr<PingLoader> pingLoader = adoptPtr(new PingLoader(frame, request));
 
-    // Leak the ping loader, since it will kill itself as soon as it receives a response.
-    PingLoader* leakedPingLoader = pingLoader.leakPtr();
-    UNUSED_PARAM(leakedPingLoader);
+    createPingLoader(frame, request);
 }
 
 void PingLoader::sendViolationReport(Frame* frame, const URL& reportURL, PassRefPtr<FormData> report)
@@ -119,11 +112,14 @@ void PingLoader::sendViolationReport(Frame* frame, const URL& reportURL, PassRef
     String referrer = SecurityPolicy::generateReferrerHeader(frame->document()->referrerPolicy(), reportURL, frame->loader().outgoingReferrer());
     if (!referrer.isEmpty())
         request.setHTTPReferrer(referrer);
-    OwnPtr<PingLoader> pingLoader = adoptPtr(new PingLoader(frame, request));
 
-    // Leak the ping loader, since it will kill itself as soon as it receives a response.
-    PingLoader* leakedPingLoader = pingLoader.leakPtr();
-    UNUSED_PARAM(leakedPingLoader);
+    createPingLoader(frame, request);
+}
+
+void PingLoader::createPingLoader(Frame* frame, ResourceRequest& request)
+{
+    // No need to free the PingLoader object or manage it via a smart pointer - it will kill itself as soon as it receives a response.
+    new PingLoader(frame, request);
 }
 
 PingLoader::PingLoader(Frame* frame, ResourceRequest& request)
index 6939a23..b8ac141 100644 (file)
@@ -61,6 +61,7 @@ public:
     virtual ~PingLoader();
 
 private:
+    static void createPingLoader(Frame*, ResourceRequest&);
     PingLoader(Frame*, ResourceRequest&);
 
     virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&) OVERRIDE { delete this; }