Diff
Modified: trunk/Source/WebKit2/ChangeLog (202356 => 202357)
--- trunk/Source/WebKit2/ChangeLog 2016-06-22 23:23:46 UTC (rev 202356)
+++ trunk/Source/WebKit2/ChangeLog 2016-06-22 23:31:42 UTC (rev 202357)
@@ -1,3 +1,25 @@
+2016-06-22 Chris Dumez <[email protected]>
+
+ Stop using PassRefPtr in ShareableResource
+ https://bugs.webkit.org/show_bug.cgi?id=159043
+
+ Reviewed by Alex Christensen.
+
+ Stop using PassRefPtr in ShareableResource.
+
+ * NetworkProcess/cache/NetworkCache.cpp:
+ (WebKit::NetworkCache::Cache::store):
+ * NetworkProcess/cache/NetworkCacheEntry.cpp:
+ (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord):
+ * Shared/ShareableResource.cpp:
+ (WebKit::shareableResourceDeallocate):
+ (WebKit::ShareableResource::wrapInSharedBuffer):
+ (WebKit::ShareableResource::Handle::tryWrapInSharedBuffer):
+ (WebKit::ShareableResource::create):
+ (WebKit::ShareableResource::map):
+ (WebKit::ShareableResource::ShareableResource):
+ * Shared/ShareableResource.h:
+
2016-06-17 Dean Jackson <[email protected]>
REGRESSION: Double tap to zoom does not work on yahoo finance
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp (202356 => 202357)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp 2016-06-22 23:23:46 UTC (rev 202356)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp 2016-06-22 23:31:42 UTC (rev 202357)
@@ -412,8 +412,8 @@
m_storage->store(record, [completionHandler = WTFMove(completionHandler)](const Data& bodyData) {
MappedBody mappedBody;
#if ENABLE(SHAREABLE_RESOURCE)
- if (RefPtr<SharedMemory> sharedMemory = bodyData.tryCreateSharedMemory()) {
- mappedBody.shareableResource = ShareableResource::create(WTFMove(sharedMemory), 0, bodyData.size());
+ if (auto sharedMemory = bodyData.tryCreateSharedMemory()) {
+ mappedBody.shareableResource = ShareableResource::create(sharedMemory.releaseNonNull(), 0, bodyData.size());
ASSERT(mappedBody.shareableResource);
mappedBody.shareableResource->createHandle(mappedBody.shareableResourceHandle);
}
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp (202356 => 202357)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp 2016-06-22 23:23:46 UTC (rev 202356)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp 2016-06-22 23:31:42 UTC (rev 202357)
@@ -149,7 +149,7 @@
if (!sharedMemory)
return;
- auto shareableResource = ShareableResource::create(WTFMove(sharedMemory), 0, m_sourceStorageRecord.body.size());
+ auto shareableResource = ShareableResource::create(sharedMemory.releaseNonNull(), 0, m_sourceStorageRecord.body.size());
shareableResource->createHandle(m_shareableResourceHandle);
}
#endif
Modified: trunk/Source/WebKit2/Shared/ShareableResource.cpp (202356 => 202357)
--- trunk/Source/WebKit2/Shared/ShareableResource.cpp 2016-06-22 23:23:46 UTC (rev 202356)
+++ trunk/Source/WebKit2/Shared/ShareableResource.cpp 2016-06-22 23:31:42 UTC (rev 202357)
@@ -60,7 +60,7 @@
#if USE(CF)
static void shareableResourceDeallocate(void *ptr, void *info)
{
- (static_cast<ShareableResource*>(info))->deref(); // Balanced by ref() in createShareableResourceDeallocator()
+ static_cast<ShareableResource*>(info)->deref(); // Balanced by ref() in createShareableResourceDeallocator()
}
static CFAllocatorRef createShareableResourceDeallocator(ShareableResource* resource)
@@ -80,7 +80,7 @@
}
#endif
-PassRefPtr<SharedBuffer> ShareableResource::wrapInSharedBuffer()
+RefPtr<SharedBuffer> ShareableResource::wrapInSharedBuffer()
{
ref(); // Balanced by deref when SharedBuffer is deallocated.
@@ -96,7 +96,7 @@
#endif
}
-PassRefPtr<SharedBuffer> ShareableResource::Handle::tryWrapInSharedBuffer() const
+RefPtr<SharedBuffer> ShareableResource::Handle::tryWrapInSharedBuffer() const
{
RefPtr<ShareableResource> resource = ShareableResource::map(*this);
if (!resource) {
@@ -107,26 +107,25 @@
return resource->wrapInSharedBuffer();
}
-Ref<ShareableResource> ShareableResource::create(PassRefPtr<SharedMemory> sharedMemory, unsigned offset, unsigned size)
+Ref<ShareableResource> ShareableResource::create(Ref<SharedMemory>&& sharedMemory, unsigned offset, unsigned size)
{
- return adoptRef(*new ShareableResource(sharedMemory, offset, size));
+ return adoptRef(*new ShareableResource(WTFMove(sharedMemory), offset, size));
}
-PassRefPtr<ShareableResource> ShareableResource::map(const Handle& handle)
+RefPtr<ShareableResource> ShareableResource::map(const Handle& handle)
{
auto sharedMemory = SharedMemory::map(handle.m_handle, SharedMemory::Protection::ReadOnly);
if (!sharedMemory)
- return 0;
+ return nullptr;
- return create(WTFMove(sharedMemory), handle.m_offset, handle.m_size);
+ return create(sharedMemory.releaseNonNull(), handle.m_offset, handle.m_size);
}
-ShareableResource::ShareableResource(PassRefPtr<SharedMemory> sharedMemory, unsigned offset, unsigned size)
- : m_sharedMemory(sharedMemory)
+ShareableResource::ShareableResource(Ref<SharedMemory>&& sharedMemory, unsigned offset, unsigned size)
+ : m_sharedMemory(WTFMove(sharedMemory))
, m_offset(offset)
, m_size(size)
{
- ASSERT(m_sharedMemory);
ASSERT(m_offset + m_size <= m_sharedMemory->size());
// FIXME (NetworkProcess): This data was received from another process. If it is bogus, should we assume that process is compromised and we should kill it?
Modified: trunk/Source/WebKit2/Shared/ShareableResource.h (202356 => 202357)
--- trunk/Source/WebKit2/Shared/ShareableResource.h 2016-06-22 23:23:46 UTC (rev 202356)
+++ trunk/Source/WebKit2/Shared/ShareableResource.h 2016-06-22 23:31:42 UTC (rev 202357)
@@ -30,7 +30,6 @@
#include "SharedMemory.h"
-#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
#include <wtf/RetainPtr.h>
@@ -56,7 +55,7 @@
void encode(IPC::ArgumentEncoder&) const;
static bool decode(IPC::ArgumentDecoder&, Handle&);
- PassRefPtr<WebCore::SharedBuffer> tryWrapInSharedBuffer() const;
+ RefPtr<WebCore::SharedBuffer> tryWrapInSharedBuffer() const;
private:
friend class ShareableResource;
@@ -67,10 +66,10 @@
};
// Create a shareable resource that uses malloced memory.
- static Ref<ShareableResource> create(PassRefPtr<SharedMemory>, unsigned offset, unsigned size);
+ static Ref<ShareableResource> create(Ref<SharedMemory>&&, unsigned offset, unsigned size);
// Create a shareable resource from a handle.
- static PassRefPtr<ShareableResource> map(const Handle&);
+ static RefPtr<ShareableResource> map(const Handle&);
// Create a handle.
bool createHandle(Handle&);
@@ -81,10 +80,10 @@
unsigned size() const;
private:
- ShareableResource(PassRefPtr<SharedMemory>, unsigned offset, unsigned size);
- PassRefPtr<WebCore::SharedBuffer> wrapInSharedBuffer();
+ ShareableResource(Ref<SharedMemory>&&, unsigned offset, unsigned size);
+ RefPtr<WebCore::SharedBuffer> wrapInSharedBuffer();
- RefPtr<SharedMemory> m_sharedMemory;
+ Ref<SharedMemory> m_sharedMemory;
unsigned m_offset;
unsigned m_size;