Title: [151277] trunk/Source/WebCore
Revision
151277
Author
[email protected]
Date
2013-06-06 09:36:59 -0700 (Thu, 06 Jun 2013)

Log Message

ResourceLoader::resourceData() should not return a PassRefPtr
https://bugs.webkit.org/show_bug.cgi?id=117288

Reviewed by Darin Adler.

Change ResourceLoader::resourceData() to return a raw pointer
instead of a PassRefPtr since we don't want to transfer the
ownership of the resource data. Also pass a raw pointer to
CachedResource::data() so that the cached resource can decide
whether to take a reference of the data or not, for example,
CachedRawResource only takes a reference when buffering policy is
BufferData.

* html/ImageDocument.cpp:
(WebCore::ImageDocumentParser::appendBytes):
(WebCore::ImageDocumentParser::finish):
* loader/ResourceLoader.cpp:
* loader/ResourceLoader.h:
(WebCore::ResourceLoader::resourceData):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::sendDataToResource):
* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::data):
* loader/cache/CachedCSSStyleSheet.h:
* loader/cache/CachedFont.cpp:
(WebCore::CachedFont::data):
* loader/cache/CachedFont.h:
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::data):
* loader/cache/CachedImage.h:
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::data):
* loader/cache/CachedRawResource.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::data):
* loader/cache/CachedResource.h:
* loader/cache/CachedSVGDocument.cpp:
(WebCore::CachedSVGDocument::data):
* loader/cache/CachedSVGDocument.h:
* loader/cache/CachedScript.cpp:
(WebCore::CachedScript::data):
* loader/cache/CachedScript.h:
* loader/cache/CachedShader.cpp:
(WebCore::CachedShader::data):
* loader/cache/CachedShader.h:
* loader/cache/CachedTextTrack.cpp:
(WebCore::CachedTextTrack::data):
* loader/cache/CachedTextTrack.h:
* loader/cache/CachedXSLStyleSheet.cpp:
(WebCore::CachedXSLStyleSheet::data):
* loader/cache/CachedXSLStyleSheet.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (151276 => 151277)


--- trunk/Source/WebCore/ChangeLog	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/ChangeLog	2013-06-06 16:36:59 UTC (rev 151277)
@@ -1,3 +1,57 @@
+2013-06-06  Carlos Garcia Campos  <[email protected]>
+
+        ResourceLoader::resourceData() should not return a PassRefPtr
+        https://bugs.webkit.org/show_bug.cgi?id=117288
+
+        Reviewed by Darin Adler.
+
+        Change ResourceLoader::resourceData() to return a raw pointer
+        instead of a PassRefPtr since we don't want to transfer the
+        ownership of the resource data. Also pass a raw pointer to
+        CachedResource::data() so that the cached resource can decide
+        whether to take a reference of the data or not, for example,
+        CachedRawResource only takes a reference when buffering policy is
+        BufferData.
+
+        * html/ImageDocument.cpp:
+        (WebCore::ImageDocumentParser::appendBytes):
+        (WebCore::ImageDocumentParser::finish):
+        * loader/ResourceLoader.cpp:
+        * loader/ResourceLoader.h:
+        (WebCore::ResourceLoader::resourceData):
+        * loader/SubresourceLoader.cpp:
+        (WebCore::SubresourceLoader::sendDataToResource):
+        * loader/cache/CachedCSSStyleSheet.cpp:
+        (WebCore::CachedCSSStyleSheet::data):
+        * loader/cache/CachedCSSStyleSheet.h:
+        * loader/cache/CachedFont.cpp:
+        (WebCore::CachedFont::data):
+        * loader/cache/CachedFont.h:
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::data):
+        * loader/cache/CachedImage.h:
+        * loader/cache/CachedRawResource.cpp:
+        (WebCore::CachedRawResource::data):
+        * loader/cache/CachedRawResource.h:
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::data):
+        * loader/cache/CachedResource.h:
+        * loader/cache/CachedSVGDocument.cpp:
+        (WebCore::CachedSVGDocument::data):
+        * loader/cache/CachedSVGDocument.h:
+        * loader/cache/CachedScript.cpp:
+        (WebCore::CachedScript::data):
+        * loader/cache/CachedScript.h:
+        * loader/cache/CachedShader.cpp:
+        (WebCore::CachedShader::data):
+        * loader/cache/CachedShader.h:
+        * loader/cache/CachedTextTrack.cpp:
+        (WebCore::CachedTextTrack::data):
+        * loader/cache/CachedTextTrack.h:
+        * loader/cache/CachedXSLStyleSheet.cpp:
+        (WebCore::CachedXSLStyleSheet::data):
+        * loader/cache/CachedXSLStyleSheet.h:
+
 2013-06-06  Chris Fleizach  <[email protected]>
 
         AX: iOS ignores ARIA progressbar elements

Modified: trunk/Source/WebCore/html/ImageDocument.cpp (151276 => 151277)


--- trunk/Source/WebCore/html/ImageDocument.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/html/ImageDocument.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -135,7 +135,8 @@
         return;
 
     CachedImage* cachedImage = document()->cachedImage();
-    cachedImage->data(frame->loader()->documentLoader()->mainResourceData(), false);
+    RefPtr<ResourceBuffer> resourceData = frame->loader()->documentLoader()->mainResourceData();
+    cachedImage->data(resourceData.get(), false);
 
     document()->imageUpdated();
 }
@@ -151,7 +152,7 @@
         if (document()->frame()->loader()->documentLoader()->isLoadingMultipartContent())
             data = ""
 
-        cachedImage->data(data.release(), true);
+        cachedImage->data(data.get(), true);
         cachedImage->finish();
 
         cachedImage->setResponse(document()->frame()->loader()->documentLoader()->response());

Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/ResourceLoader.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -52,11 +52,6 @@
 
 namespace WebCore {
 
-PassRefPtr<ResourceBuffer> ResourceLoader::resourceData()
-{
-    return m_resourceData;
-}
-
 ResourceLoader::ResourceLoader(Frame* frame, ResourceLoaderOptions options)
     : m_frame(frame)
     , m_documentLoader(frame->loader()->activeDocumentLoader())

Modified: trunk/Source/WebCore/loader/ResourceLoader.h (151276 => 151277)


--- trunk/Source/WebCore/loader/ResourceLoader.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/ResourceLoader.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -73,7 +73,7 @@
     virtual void releaseResources();
     const ResourceResponse& response() const;
 
-    PassRefPtr<ResourceBuffer> resourceData();
+    ResourceBuffer* resourceData() const { return m_resourceData.get(); }
     void clearResourceData();
     
     virtual bool isSubresourceLoader();

Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/SubresourceLoader.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -266,7 +266,7 @@
     //     that all data has been received yet. 
     if (m_loadingMultipartContent || !resourceData()) { 
         RefPtr<ResourceBuffer> copiedData = ResourceBuffer::create(data, length); 
-        m_resource->data(copiedData.release(), m_loadingMultipartContent);
+        m_resource->data(copiedData.get(), m_loadingMultipartContent);
     } else 
         m_resource->data(resourceData(), false);
 }

Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -93,7 +93,7 @@
     return sheetText;
 }
 
-void CachedCSSStyleSheet::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedCSSStyleSheet::data(ResourceBuffer* data, bool allDataReceived)
 {
     if (!allDataReceived)
         return;

Modified: trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -47,7 +47,7 @@
         
         virtual void setEncoding(const String&);
         virtual String encoding() const;
-        virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+        virtual void data(ResourceBuffer*, bool allDataReceived);
         virtual void destroyDecodedData() OVERRIDE;
 
         PassRefPtr<StyleSheetContents> restoreParsedStyleSheet(const CSSParserContext&);

Modified: trunk/Source/WebCore/loader/cache/CachedFont.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedFont.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedFont.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -75,7 +75,7 @@
         static_cast<CachedFontClient*>(c)->fontLoaded(this);
 }
 
-void CachedFont::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedFont::data(ResourceBuffer* data, bool allDataReceived)
 {
     if (!allDataReceived)
         return;

Modified: trunk/Source/WebCore/loader/cache/CachedFont.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedFont.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedFont.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -48,7 +48,7 @@
     virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
 
     virtual void didAddClient(CachedResourceClient*);
-    virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+    virtual void data(ResourceBuffer*, bool allDataReceived);
 
     virtual void allClientsRemoved();
     void beginLoadIfNeeded(CachedResourceLoader* dl);

Modified: trunk/Source/WebCore/loader/cache/CachedImage.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedImage.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedImage.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -352,7 +352,7 @@
     return settings ? settings->maximumDecodedImageSize() : 0;
 }
 
-void CachedImage::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedImage::data(ResourceBuffer* data, bool allDataReceived)
 {
     m_data = data;
 

Modified: trunk/Source/WebCore/loader/cache/CachedImage.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedImage.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedImage.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -76,7 +76,7 @@
     virtual void allClientsRemoved();
     virtual void destroyDecodedData();
 
-    virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+    virtual void data(ResourceBuffer*, bool allDataReceived);
     virtual void error(CachedResource::Status);
     virtual void responseReceived(const ResourceResponse&);
     

Modified: trunk/Source/WebCore/loader/cache/CachedRawResource.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedRawResource.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedRawResource.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -41,7 +41,7 @@
 {
 }
 
-void CachedRawResource::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedRawResource::data(ResourceBuffer* data, bool allDataReceived)
 {
     CachedResourceHandle<CachedRawResource> protect(this);
     const char* incrementalData = 0;
@@ -68,7 +68,7 @@
         while (CachedRawResourceClient* c = w.next())
             c->dataReceived(this, incrementalData, incrementalDataLength);
     }
-    CachedResource::data(m_data, allDataReceived);
+    CachedResource::data(data, allDataReceived);
 
     if (dataBufferingPolicy == BufferData && m_options.dataBufferingPolicy == DoNotBufferData) {
         if (m_loader)

Modified: trunk/Source/WebCore/loader/cache/CachedRawResource.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedRawResource.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedRawResource.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -50,7 +50,7 @@
 
 private:
     virtual void didAddClient(CachedResourceClient*);
-    virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+    virtual void data(ResourceBuffer*, bool allDataReceived);
 
     virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return true; }
     virtual void allClientsRemoved();

Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedResource.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -362,7 +362,7 @@
         c->notifyFinished(this);
 }
 
-void CachedResource::data(PassRefPtr<ResourceBuffer>, bool allDataReceived)
+void CachedResource::data(ResourceBuffer*, bool allDataReceived)
 {
     if (!allDataReceived)
         return;

Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedResource.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -101,7 +101,7 @@
 
     virtual void setEncoding(const String&) { }
     virtual String encoding() const { return String(); }
-    virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+    virtual void data(ResourceBuffer*, bool allDataReceived);
     virtual void error(CachedResource::Status);
 
     void setResourceError(const ResourceError& error) { m_error = error; }

Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -53,7 +53,7 @@
     return m_decoder->encoding().name();
 }
 
-void CachedSVGDocument::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedSVGDocument::data(ResourceBuffer* data, bool allDataReceived)
 {
     if (!allDataReceived)
         return;

Modified: trunk/Source/WebCore/loader/cache/CachedSVGDocument.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedSVGDocument.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedSVGDocument.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -40,7 +40,7 @@
 
     virtual void setEncoding(const String&);
     virtual String encoding() const;
-    virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+    virtual void data(ResourceBuffer*, bool allDataReceived);
 
 protected:
     RefPtr<SVGDocument> m_document;

Modified: trunk/Source/WebCore/loader/cache/CachedScript.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedScript.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedScript.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -82,7 +82,7 @@
     return m_script;
 }
 
-void CachedScript::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedScript::data(ResourceBuffer* data, bool allDataReceived)
 {
     if (!allDataReceived)
         return;

Modified: trunk/Source/WebCore/loader/cache/CachedScript.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedScript.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedScript.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -42,7 +42,7 @@
 
         virtual void setEncoding(const String&);
         virtual String encoding() const;
-        virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+        virtual void data(ResourceBuffer*, bool allDataReceived);
         String mimeType() const;
 
         virtual void destroyDecodedData();

Modified: trunk/Source/WebCore/loader/cache/CachedShader.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedShader.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedShader.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -60,7 +60,7 @@
     return m_shaderString;
 }
 
-void CachedShader::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedShader::data(ResourceBuffer* data, bool allDataReceived)
 {
     if (allDataReceived)
         m_data = data;

Modified: trunk/Source/WebCore/loader/cache/CachedShader.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedShader.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedShader.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -44,7 +44,7 @@
     virtual ~CachedShader();
     
     const String& shaderString();
-    void data(PassRefPtr<ResourceBuffer>, bool allDataReceived);
+    void data(ResourceBuffer*, bool allDataReceived);
 
 private:
     virtual bool mayTryReplaceEncodedData() const OVERRIDE { return true; }

Modified: trunk/Source/WebCore/loader/cache/CachedTextTrack.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedTextTrack.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedTextTrack.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -48,7 +48,7 @@
 {
 }
 
-void CachedTextTrack::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedTextTrack::data(ResourceBuffer* data, bool allDataReceived)
 {
     m_data = data;
     setEncodedSize(m_data.get() ? m_data->size() : 0);

Modified: trunk/Source/WebCore/loader/cache/CachedTextTrack.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedTextTrack.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedTextTrack.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -38,7 +38,7 @@
     CachedTextTrack(const ResourceRequest&);
     virtual ~CachedTextTrack();
 
-    virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+    virtual void data(ResourceBuffer*, bool allDataReceived);
 
 private:
     virtual bool mayTryReplaceEncodedData() const OVERRIDE { return true; }

Modified: trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp	2013-06-06 16:36:59 UTC (rev 151277)
@@ -63,7 +63,7 @@
     return m_decoder->encoding().name();
 }
 
-void CachedXSLStyleSheet::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
+void CachedXSLStyleSheet::data(ResourceBuffer* data, bool allDataReceived)
 {
     if (!allDataReceived)
         return;

Modified: trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h (151276 => 151277)


--- trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h	2013-06-06 16:29:23 UTC (rev 151276)
+++ trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h	2013-06-06 16:36:59 UTC (rev 151277)
@@ -45,7 +45,7 @@
         
         virtual void setEncoding(const String&);
         virtual String encoding() const;
-        virtual void data(PassRefPtr<ResourceBuffer> data, bool allDataReceived);
+        virtual void data(ResourceBuffer*, bool allDataReceived);
 
     protected:
         virtual void checkNotify();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to