Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
SharedBuffer::createCFData should return RetainPtr<CFDataRef>
https://bugs.webkit.org/show_bug.cgi?id=121230

Reviewed by Darin Adler.

Source/WebCore:

* loader/ResourceBuffer.cpp:
(WebCore::ResourceBuffer::createCFData):
* loader/ResourceBuffer.h:
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createPropertyListRepresentation):
(WebCore::LegacyWebArchive::create):
* platform/SharedBuffer.h:
* platform/cf/SharedBufferCF.cpp:
(WebCore::SharedBuffer::createCFData):
* platform/graphics/cg/ImageSourceCG.cpp:
(WebCore::ImageSource::setData):
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::createPDFDocument):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::createFontCustomPlatformData):
* platform/mac/SharedBufferMac.mm:
(WebCore::SharedBuffer::createCFData):

Source/WebKit2:

* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer):
* Shared/WebArchiveResource.cpp:
(WebKit::WebArchiveResource::data):

Canonical link: https://commits.webkit.org/139186@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@155629 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
Anders Carlsson committed Sep 12, 2013
1 parent c8d55b3 commit 1ae1027
Show file tree
Hide file tree
Showing 13 changed files with 54 additions and 21 deletions.
25 changes: 25 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,28 @@
2013-09-12 Anders Carlsson <andersca@apple.com>

SharedBuffer::createCFData should return RetainPtr<CFDataRef>
https://bugs.webkit.org/show_bug.cgi?id=121230

Reviewed by Darin Adler.

* loader/ResourceBuffer.cpp:
(WebCore::ResourceBuffer::createCFData):
* loader/ResourceBuffer.h:
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createPropertyListRepresentation):
(WebCore::LegacyWebArchive::create):
* platform/SharedBuffer.h:
* platform/cf/SharedBufferCF.cpp:
(WebCore::SharedBuffer::createCFData):
* platform/graphics/cg/ImageSourceCG.cpp:
(WebCore::ImageSource::setData):
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::createPDFDocument):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::createFontCustomPlatformData):
* platform/mac/SharedBufferMac.mm:
(WebCore::SharedBuffer::createCFData):

2013-09-12 Zoltan Horvath <zoltan@webkit.org>

Move LineInfo class into LineInfo.h
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/loader/ResourceBuffer.cpp
Expand Up @@ -126,7 +126,7 @@ PassOwnPtr<PurgeableBuffer> ResourceBuffer::releasePurgeableBuffer()
}

#if USE(CF)
CFDataRef ResourceBuffer::createCFData()
RetainPtr<CFDataRef> ResourceBuffer::createCFData()
{
return m_sharedBuffer->createCFData();
}
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/loader/ResourceBuffer.h
Expand Up @@ -79,7 +79,7 @@ class ResourceBuffer : public RefCounted<ResourceBuffer> {
NSData *createNSData();
#endif
#if USE(CF)
CFDataRef createCFData();
RetainPtr<CFDataRef> createCFData();
#endif

protected:
Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
Expand Up @@ -83,7 +83,7 @@ RetainPtr<CFDictionaryRef> LegacyWebArchive::createPropertyListRepresentation(Ar
SharedBuffer* data = resource->data();
RetainPtr<CFDataRef> cfData;
if (data)
cfData = adoptCF(data->createCFData());
cfData = data->createCFData();
else
cfData = adoptCF(CFDataCreate(0, 0, 0));
CFDictionarySetValue(propertyList.get(), LegacyWebArchiveResourceDataKey, cfData.get());
Expand Down Expand Up @@ -268,7 +268,7 @@ PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(const KURL&, SharedBuffer*
if (!data)
return 0;

RetainPtr<CFDataRef> cfData = adoptCF(data->createCFData());
RetainPtr<CFDataRef> cfData = data->createCFData();
if (!cfData)
return 0;

Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/platform/SharedBuffer.h
Expand Up @@ -67,7 +67,7 @@ class SharedBuffer : public RefCounted<SharedBuffer> {
static PassRefPtr<SharedBuffer> wrapNSData(NSData *data);
#endif
#if USE(CF)
CFDataRef createCFData();
RetainPtr<CFDataRef> createCFData();
static PassRefPtr<SharedBuffer> wrapCFData(CFDataRef);
#endif

Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/platform/cf/SharedBufferCF.cpp
Expand Up @@ -41,7 +41,7 @@ SharedBuffer::SharedBuffer(CFDataRef cfData)
// Mac is a CF platform but has an even more efficient version of this method,
// so only use this version for non-Mac
#if !PLATFORM(MAC)
CFDataRef SharedBuffer::createCFData()
RetainPtr<CFDataRef> SharedBuffer::createCFData()
{
if (m_cfData) {
CFRetain(m_cfData.get());
Expand All @@ -50,7 +50,7 @@ CFDataRef SharedBuffer::createCFData()

// Internal data in SharedBuffer can be segmented. We need to get the contiguous buffer.
const Vector<char>& contiguousBuffer = buffer();
return CFDataCreate(0, reinterpret_cast<const UInt8*>(contiguousBuffer.data()), contiguousBuffer.size());
return adoptCF(CFDataCreate(0, reinterpret_cast<const UInt8*>(contiguousBuffer.data()), contiguousBuffer.size()));
}
#endif

Expand Down
3 changes: 1 addition & 2 deletions Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp
Expand Up @@ -133,8 +133,7 @@ void ImageSource::setData(SharedBuffer* data, bool allDataReceived)
m_decoder = CGImageSourceCreateIncremental(0);
// On Mac the NSData inside the SharedBuffer can be secretly appended to without the SharedBuffer's knowledge. We use SharedBuffer's ability
// to wrap itself inside CFData to get around this, ensuring that ImageIO is really looking at the SharedBuffer.
RetainPtr<CFDataRef> cfData = adoptCF(data->createCFData());
CGImageSourceUpdateData(m_decoder, cfData.get(), allDataReceived);
CGImageSourceUpdateData(m_decoder, data->createCFData().get(), allDataReceived);
#else
if (!m_decoder) {
m_decoder = CGImageSourceCreateIncremental(0);
Expand Down
3 changes: 1 addition & 2 deletions Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp
Expand Up @@ -145,8 +145,7 @@ void PDFDocumentImage::draw(GraphicsContext* context, const FloatRect& dstRect,
#if !USE(PDFKIT_FOR_PDFDOCUMENTIMAGE)
void PDFDocumentImage::createPDFDocument()
{
RetainPtr<CFDataRef> data = adoptCF(this->data()->createCFData());
RetainPtr<CGDataProviderRef> dataProvider = adoptCF(CGDataProviderCreateWithCFData(data.get()));
RetainPtr<CGDataProviderRef> dataProvider = adoptCF(CGDataProviderCreateWithCFData(data()->createCFData().get()));
m_document = CGPDFDocumentCreateWithProvider(dataProvider.get());
}

Expand Down
Expand Up @@ -63,7 +63,7 @@ FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer* buffer)

ATSFontContainerRef containerRef = 0;

RetainPtr<CFDataRef> bufferData = adoptCF(buffer->createCFData());
RetainPtr<CFDataRef> bufferData = buffer->createCFData();
RetainPtr<CGDataProviderRef> dataProvider = adoptCF(CGDataProviderCreateWithCFData(bufferData.get()));

RetainPtr<CGFontRef> cgFontRef = adoptCF(CGFontCreateWithDataProvider(dataProvider.get()));
Expand Down
12 changes: 5 additions & 7 deletions Source/WebCore/platform/mac/SharedBufferMac.mm
Expand Up @@ -101,14 +101,12 @@ - (const void *)bytes
return [[WebCoreSharedBufferData alloc] initWithSharedBuffer:this];
}

CFDataRef SharedBuffer::createCFData()
RetainPtr<CFDataRef> SharedBuffer::createCFData()
{
if (m_cfData) {
CFRetain(m_cfData.get());
return m_cfData.get();
}

return (CFDataRef)adoptNS([[WebCoreSharedBufferData alloc] initWithSharedBuffer:this]).leakRef();
if (m_cfData)
return m_cfData;

return adoptCF((CFDataRef)adoptNS([[WebCoreSharedBufferData alloc] initWithSharedBuffer:this]).leakRef());
}

PassRefPtr<SharedBuffer> SharedBuffer::createWithContentsOfFile(const String& filePath)
Expand Down
12 changes: 12 additions & 0 deletions Source/WebKit2/ChangeLog
@@ -1,3 +1,15 @@
2013-09-12 Anders Carlsson <andersca@apple.com>

SharedBuffer::createCFData should return RetainPtr<CFDataRef>
https://bugs.webkit.org/show_bug.cgi?id=121230

Reviewed by Darin Adler.

* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer):
* Shared/WebArchiveResource.cpp:
(WebKit::WebArchiveResource::data):

2013-09-12 Zalan Bujtas <zalan@apple.com>

REGRESSION: Inline PDF that are cached fail to appear in iframe.
Expand Down
Expand Up @@ -88,7 +88,7 @@ static void tryGetShareableHandleFromCFData(ShareableResource::Handle& handle, C
if (!cache)
return;

RetainPtr<CFDataRef> data = adoptCF(buffer->createCFData());
RetainPtr<CFDataRef> data = buffer->createCFData();
if (_CFURLCacheIsResponseDataMemMapped(cache.get(), data.get()) == kCFBooleanFalse)
return;

Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit2/Shared/WebArchiveResource.cpp
Expand Up @@ -69,7 +69,7 @@ static void releaseCFData(unsigned char*, const void* data)

PassRefPtr<WebData> WebArchiveResource::data()
{
RetainPtr<CFDataRef> cfData = adoptCF(m_archiveResource->data()->createCFData());
RetainPtr<CFDataRef> cfData = m_archiveResource->data()->createCFData();

// Balanced by CFRelease in releaseCFData.
CFRetain(cfData.get());
Expand Down

0 comments on commit 1ae1027

Please sign in to comment.