Title: [172502] trunk/Source
- Revision
- 172502
- Author
- [email protected]
- Date
- 2014-08-12 15:50:40 -0700 (Tue, 12 Aug 2014)
Log Message
Cached file backed resources don't make it to the Web Process when NETWORK_CFDATA_ARRAY_CALLBACK is enabled
https://bugs.webkit.org/show_bug.cgi?id=135727
<rdar://problem/17947880>
Reviewed by Darin Adler.
Source/WebCore:
Add SharedBuffer::existingCFData() which returns CFDataRef if it has one. Refactor
this code out of createCFData().
* WebCore.exp.in:
* platform/SharedBuffer.h:
* platform/mac/SharedBufferMac.mm:
(WebCore::SharedBuffer::existingCFData): Added.
(WebCore::SharedBuffer::createCFData):
Source/WebKit2:
tryGetShareableHandleFromSharedBuffer() assumed that we have a file backed resource only if
we had a CFDataRef (platformData()) in SharedBuffer. This is wrong when we use the data
array callbacks since the file backed buffer could be in the data array. Instead of relying
on hasPlatformData(), explicitly ask the SharedBuffer to give us a CFDataRef if it has one
so that SharedBuffer can take care of the data array case.
* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (172501 => 172502)
--- trunk/Source/WebCore/ChangeLog 2014-08-12 22:48:36 UTC (rev 172501)
+++ trunk/Source/WebCore/ChangeLog 2014-08-12 22:50:40 UTC (rev 172502)
@@ -1,3 +1,20 @@
+2014-08-12 Pratik Solanki <[email protected]>
+
+ Cached file backed resources don't make it to the Web Process when NETWORK_CFDATA_ARRAY_CALLBACK is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=135727
+ <rdar://problem/17947880>
+
+ Reviewed by Darin Adler.
+
+ Add SharedBuffer::existingCFData() which returns CFDataRef if it has one. Refactor
+ this code out of createCFData().
+
+ * WebCore.exp.in:
+ * platform/SharedBuffer.h:
+ * platform/mac/SharedBufferMac.mm:
+ (WebCore::SharedBuffer::existingCFData): Added.
+ (WebCore::SharedBuffer::createCFData):
+
2014-08-12 Tim Horton <[email protected]>
Small region (~1px tall) where you get the selection button instead of the phone number overlay
Modified: trunk/Source/WebCore/WebCore.exp.in (172501 => 172502)
--- trunk/Source/WebCore/WebCore.exp.in 2014-08-12 22:48:36 UTC (rev 172501)
+++ trunk/Source/WebCore/WebCore.exp.in 2014-08-12 22:50:40 UTC (rev 172502)
@@ -242,6 +242,7 @@
__ZN7WebCore12SharedBuffer11adoptVectorERN3WTF6VectorIcLm0ENS1_15CrashOnOverflowEEE
__ZN7WebCore12SharedBuffer12createCFDataEv
__ZN7WebCore12SharedBuffer12createNSDataEv
+__ZN7WebCore12SharedBuffer14existingCFDataEv
__ZN7WebCore12SharedBuffer24createWithContentsOfFileERKN3WTF6StringE
__ZN7WebCore12SharedBuffer6appendEPKcj
__ZN7WebCore12SharedBuffer6appendEPS0_
Modified: trunk/Source/WebCore/platform/SharedBuffer.h (172501 => 172502)
--- trunk/Source/WebCore/platform/SharedBuffer.h 2014-08-12 22:48:36 UTC (rev 172501)
+++ trunk/Source/WebCore/platform/SharedBuffer.h 2014-08-12 22:50:40 UTC (rev 172502)
@@ -74,6 +74,7 @@
#endif
#if USE(CF)
RetainPtr<CFDataRef> createCFData();
+ CFDataRef existingCFData();
static PassRefPtr<SharedBuffer> wrapCFData(CFDataRef);
#endif
Modified: trunk/Source/WebCore/platform/mac/SharedBufferMac.mm (172501 => 172502)
--- trunk/Source/WebCore/platform/mac/SharedBufferMac.mm 2014-08-12 22:48:36 UTC (rev 172501)
+++ trunk/Source/WebCore/platform/mac/SharedBufferMac.mm 2014-08-12 22:50:40 UTC (rev 172502)
@@ -128,16 +128,24 @@
return adoptNS((NSData *)createCFData().leakRef());
}
-RetainPtr<CFDataRef> SharedBuffer::createCFData()
+CFDataRef SharedBuffer::existingCFData()
{
if (m_cfData)
- return m_cfData;
+ return m_cfData.get();
#if USE(NETWORK_CFDATA_ARRAY_CALLBACK)
if (m_dataArray.size() == 1)
- return m_dataArray.at(0);
+ return m_dataArray.at(0).get();
#endif
+ return nullptr;
+}
+
+RetainPtr<CFDataRef> SharedBuffer::createCFData()
+{
+ if (CFDataRef cfData = existingCFData())
+ return cfData;
+
#if ENABLE(DISK_IMAGE_CACHE)
if (isMemoryMapped())
return adoptCF((CFDataRef)adoptNS([[WebCoreSharedBufferData alloc] initWithMemoryMappedSharedBuffer:*this]).leakRef());
Modified: trunk/Source/WebKit2/ChangeLog (172501 => 172502)
--- trunk/Source/WebKit2/ChangeLog 2014-08-12 22:48:36 UTC (rev 172501)
+++ trunk/Source/WebKit2/ChangeLog 2014-08-12 22:50:40 UTC (rev 172502)
@@ -1,3 +1,20 @@
+2014-08-12 Pratik Solanki <[email protected]>
+
+ Cached file backed resources don't make it to the Web Process when NETWORK_CFDATA_ARRAY_CALLBACK is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=135727
+ <rdar://problem/17947880>
+
+ Reviewed by Darin Adler.
+
+ tryGetShareableHandleFromSharedBuffer() assumed that we have a file backed resource only if
+ we had a CFDataRef (platformData()) in SharedBuffer. This is wrong when we use the data
+ array callbacks since the file backed buffer could be in the data array. Instead of relying
+ on hasPlatformData(), explicitly ask the SharedBuffer to give us a CFDataRef if it has one
+ so that SharedBuffer can take care of the data array case.
+
+ * NetworkProcess/mac/NetworkResourceLoaderMac.mm:
+ (WebKit::NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer):
+
2014-08-12 Alexey Proskuryakov <[email protected]>
REGRESSION: WebContent process has a sandbox extension for the entirety of user's temp directory
Modified: trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm (172501 => 172502)
--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm 2014-08-12 22:48:36 UTC (rev 172501)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm 2014-08-12 22:50:40 UTC (rev 172502)
@@ -93,14 +93,14 @@
if (!cache)
return;
- if (!buffer->hasPlatformData())
+ CFDataRef data = ""
+ if (!data)
return;
- RetainPtr<CFDataRef> data = ""
- if (_CFURLCacheIsResponseDataMemMapped(cache, data.get()) == kCFBooleanFalse)
+ if (_CFURLCacheIsResponseDataMemMapped(cache, data) == kCFBooleanFalse)
return;
- tryGetShareableHandleFromCFData(handle, data.get());
+ tryGetShareableHandleFromCFData(handle, data);
}
#endif // __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes