Title: [87015] trunk/Source
Revision
87015
Author
[email protected]
Date
2011-05-21 04:04:19 -0700 (Sat, 21 May 2011)

Log Message

2011-05-21  Jochen Eisinger  <[email protected]>

        Reviewed by Darin Fisher.

        [chromium] add extraData field to resource requests
        https://bugs.webkit.org/show_bug.cgi?id=61033

        * platform/network/chromium/ResourceRequest.h:
        (WebCore::ResourceRequest::ExtraData::~ExtraData):
        (WebCore::ResourceRequest::extraData):
        (WebCore::ResourceRequest::setExtraData):
2011-05-21  Jochen Eisinger  <[email protected]>

        Reviewed by Darin Fisher.

        [chromium] add extraData field to resource requests
        https://bugs.webkit.org/show_bug.cgi?id=61033

        * WebKit.gypi:
        * public/WebURLRequest.h:
        (WebKit::WebURLRequest::ExtraData::~ExtraData):
        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequest::extraData):
        (WebKit::WebURLRequest::setExtraData):
        * tests/WebURLRequestTest.cpp: Added.
        (WebKit::TestExtraData::TestExtraData):
        (WebKit::TestExtraData::~TestExtraData):
        (WebKit::TEST):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (87014 => 87015)


--- trunk/Source/WebCore/ChangeLog	2011-05-21 10:47:54 UTC (rev 87014)
+++ trunk/Source/WebCore/ChangeLog	2011-05-21 11:04:19 UTC (rev 87015)
@@ -1,3 +1,15 @@
+2011-05-21  Jochen Eisinger  <[email protected]>
+
+        Reviewed by Darin Fisher.
+
+        [chromium] add extraData field to resource requests
+        https://bugs.webkit.org/show_bug.cgi?id=61033
+
+        * platform/network/chromium/ResourceRequest.h:
+        (WebCore::ResourceRequest::ExtraData::~ExtraData):
+        (WebCore::ResourceRequest::extraData):
+        (WebCore::ResourceRequest::setExtraData):
+
 2011-05-21  Kent Tamura  <[email protected]>
 
         Reviewed by Dimitri Glazkov.

Modified: trunk/Source/WebCore/platform/network/chromium/ResourceRequest.h (87014 => 87015)


--- trunk/Source/WebCore/platform/network/chromium/ResourceRequest.h	2011-05-21 10:47:54 UTC (rev 87014)
+++ trunk/Source/WebCore/platform/network/chromium/ResourceRequest.h	2011-05-21 11:04:19 UTC (rev 87015)
@@ -30,12 +30,20 @@
 
 #include "ResourceRequestBase.h"
 
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+
 namespace WebCore {
 
     class Frame;
 
     class ResourceRequest : public ResourceRequestBase {
     public:
+        class ExtraData : public RefCounted<ExtraData> {
+        public:
+            virtual ~ExtraData() { }
+        };
+
         ResourceRequest(const String& url) 
             : ResourceRequestBase(KURL(ParsedURLString, url), UseProtocolCachePolicy)
             , m_requestorID(0)
@@ -100,6 +108,10 @@
         bool downloadToFile() const { return m_downloadToFile; }
         void setDownloadToFile(bool downloadToFile) { m_downloadToFile = downloadToFile; }
 
+        // Extra data associated with this request.
+        ExtraData* extraData() const { return m_extraData.get(); }
+        void setExtraData(PassRefPtr<ExtraData> extraData) { m_extraData = extraData; }
+
     private:
         friend class ResourceRequestBase;
 
@@ -114,6 +126,7 @@
         int m_appCacheHostID;
         bool m_hasUserGesture;
         bool m_downloadToFile;
+        RefPtr<ExtraData> m_extraData;
     };
 
     struct CrossThreadResourceRequestData : public CrossThreadResourceRequestDataBase {

Modified: trunk/Source/WebKit/chromium/ChangeLog (87014 => 87015)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-05-21 10:47:54 UTC (rev 87014)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-05-21 11:04:19 UTC (rev 87015)
@@ -1,3 +1,21 @@
+2011-05-21  Jochen Eisinger  <[email protected]>
+
+        Reviewed by Darin Fisher.
+
+        [chromium] add extraData field to resource requests
+        https://bugs.webkit.org/show_bug.cgi?id=61033
+
+        * WebKit.gypi:
+        * public/WebURLRequest.h:
+        (WebKit::WebURLRequest::ExtraData::~ExtraData):
+        * src/WebURLRequest.cpp:
+        (WebKit::WebURLRequest::extraData):
+        (WebKit::WebURLRequest::setExtraData):
+        * tests/WebURLRequestTest.cpp: Added.
+        (WebKit::TestExtraData::TestExtraData):
+        (WebKit::TestExtraData::~TestExtraData):
+        (WebKit::TEST):
+
 2011-05-20  Michael Nordman  <[email protected]>
 
         Reviewed by Darin Fisher.

Modified: trunk/Source/WebKit/chromium/WebKit.gypi (87014 => 87015)


--- trunk/Source/WebKit/chromium/WebKit.gypi	2011-05-21 10:47:54 UTC (rev 87014)
+++ trunk/Source/WebKit/chromium/WebKit.gypi	2011-05-21 11:04:19 UTC (rev 87015)
@@ -68,6 +68,7 @@
             'tests/TreeTestHelpers.cpp',
             'tests/TreeTestHelpers.h',
             'tests/WebFrameTest.cpp',
+            'tests/WebURLRequestTest.cpp',
         ],
 
         'conditions': [

Modified: trunk/Source/WebKit/chromium/public/WebURLRequest.h (87014 => 87015)


--- trunk/Source/WebKit/chromium/public/WebURLRequest.h	2011-05-21 10:47:54 UTC (rev 87014)
+++ trunk/Source/WebKit/chromium/public/WebURLRequest.h	2011-05-21 11:04:19 UTC (rev 87015)
@@ -72,6 +72,11 @@
         TargetIsFavicon = 12,
     };
 
+    class ExtraData {
+    public:
+        virtual ~ExtraData() { }
+    };
+
     ~WebURLRequest() { reset(); }
 
     WebURLRequest() : m_private(0) { }
@@ -164,6 +169,15 @@
     WEBKIT_API bool downloadToFile() const;
     WEBKIT_API void setDownloadToFile(bool);
 
+    // Extra data associated with the underlying resource request. Resource
+    // requests can be copied. If non-null, each copy of a resource requests
+    // holds a pointer to the extra data, and the extra data pointer will be
+    // deleted when the last resource request is destroyed. Setting the extra
+    // data pointer will cause the underlying resource request to be
+    // dissociated from any existing non-null extra data pointer.
+    WEBKIT_API ExtraData* extraData() const;
+    WEBKIT_API void setExtraData(ExtraData*);
+
 #if defined(WEBKIT_IMPLEMENTATION)
     WebCore::ResourceRequest& toMutableResourceRequest();
     const WebCore::ResourceRequest& toResourceRequest() const;

Modified: trunk/Source/WebKit/chromium/src/WebURLRequest.cpp (87014 => 87015)


--- trunk/Source/WebKit/chromium/src/WebURLRequest.cpp	2011-05-21 10:47:54 UTC (rev 87014)
+++ trunk/Source/WebKit/chromium/src/WebURLRequest.cpp	2011-05-21 11:04:19 UTC (rev 87015)
@@ -42,6 +42,27 @@
 
 namespace WebKit {
 
+namespace {
+
+class ExtraDataContainer : public ResourceRequest::ExtraData {
+public:
+    static PassRefPtr<ExtraDataContainer> create(WebURLRequest::ExtraData* extraData) { return adoptRef(new ExtraDataContainer(extraData)); }
+
+    virtual ~ExtraDataContainer() { }
+
+    WebURLRequest::ExtraData* extraData() const { return m_extraData.get(); }
+
+private:
+    explicit ExtraDataContainer(WebURLRequest::ExtraData* extraData)
+        : m_extraData(adoptPtr(extraData))
+    {
+    }
+
+    OwnPtr<WebURLRequest::ExtraData> m_extraData;
+};
+
+} // namespace
+
 // The standard implementation of WebURLRequestPrivate, which maintains
 // ownership of a ResourceRequest instance.
 class WebURLRequestPrivateImpl : public WebURLRequestPrivate {
@@ -276,6 +297,19 @@
     m_private->m_resourceRequest->setDownloadToFile(downloadToFile);
 }
 
+WebURLRequest::ExtraData* WebURLRequest::extraData() const
+{
+    RefPtr<ResourceRequest::ExtraData> data = ""
+    if (!data.get())
+        return 0;
+    return static_cast<ExtraDataContainer*>(data.get())->extraData();
+}
+
+void WebURLRequest::setExtraData(WebURLRequest::ExtraData* extraData)
+{
+    m_private->m_resourceRequest->setExtraData(ExtraDataContainer::create(extraData));
+}
+
 ResourceRequest& WebURLRequest::toMutableResourceRequest()
 {
     ASSERT(m_private);

Added: trunk/Source/WebKit/chromium/tests/WebURLRequestTest.cpp (0 => 87015)


--- trunk/Source/WebKit/chromium/tests/WebURLRequestTest.cpp	                        (rev 0)
+++ trunk/Source/WebKit/chromium/tests/WebURLRequestTest.cpp	2011-05-21 11:04:19 UTC (rev 87015)
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "WebURLRequest.h"
+
+#include <gtest/gtest.h>
+
+using namespace WebKit;
+
+namespace {
+
+class TestExtraData : public WebURLRequest::ExtraData {
+public:
+    explicit TestExtraData(bool* alive)
+        : m_alive(alive)
+    {
+        *alive = true;
+    }
+
+    virtual ~TestExtraData() { *m_alive = false; }
+
+private:
+    bool* m_alive;
+};
+
+TEST(WebURLRequestTest, ExtraData)
+{
+    bool alive = false;
+    {
+        WebURLRequest urlRequest;
+        TestExtraData* extraData = new TestExtraData(&alive);
+        EXPECT_TRUE(alive);
+
+        urlRequest.initialize();
+        urlRequest.setExtraData(extraData);
+        EXPECT_EQ(extraData, urlRequest.extraData());
+        {
+            WebURLRequest otherUrlRequest = urlRequest;
+            EXPECT_TRUE(alive);
+            EXPECT_EQ(extraData, otherUrlRequest.extraData());
+            EXPECT_EQ(extraData, urlRequest.extraData());
+        }
+        EXPECT_TRUE(alive);
+        EXPECT_EQ(extraData, urlRequest.extraData());
+    }
+    EXPECT_FALSE(alive);
+}
+
+} // namespace
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to