| Index: Source/core/fileapi/BlobRegistry.cpp
|
| diff --git a/Source/core/fileapi/BlobRegistry.cpp b/Source/core/fileapi/BlobRegistry.cpp
|
| index b649b2697be18fb74ad64bd53abff6d6dc652d6e..bae718f11d4a97f146cbb87bdc4dda050e9d04db 100644
|
| --- a/Source/core/fileapi/BlobRegistry.cpp
|
| +++ b/Source/core/fileapi/BlobRegistry.cpp
|
| @@ -104,7 +104,6 @@ public:
|
|
|
| static WebBlobRegistry* blobRegistry()
|
| {
|
| - ASSERT(isMainThread());
|
| return WebKit::Platform::current()->blobRegistry();
|
| }
|
|
|
| @@ -133,66 +132,31 @@ static void removeFromOriginMap(const KURL& url)
|
| originMap()->remove(url.string());
|
| }
|
|
|
| -static void registerBlobURLTask(void* context)
|
| +void BlobRegistry::registerBlobData(const String& uuid, PassOwnPtr<BlobData> data)
|
| {
|
| - OwnPtr<BlobRegistryContext> blobRegistryContext = adoptPtr(static_cast<BlobRegistryContext*>(context));
|
| - if (WebBlobRegistry* registry = blobRegistry()) {
|
| - WebBlobData webBlobData(blobRegistryContext->blobData.release());
|
| - registry->registerBlobURL(blobRegistryContext->url, webBlobData);
|
| - }
|
| + blobRegistry()->registerBlobData(uuid, WebKit::WebBlobData(data));
|
| }
|
|
|
| -void BlobRegistry::registerBlobURL(const KURL& url, PassOwnPtr<BlobData> blobData)
|
| +void BlobRegistry::addBlobDataRef(const String& uuid)
|
| {
|
| - if (isMainThread()) {
|
| - if (WebBlobRegistry* registry = blobRegistry()) {
|
| - WebBlobData webBlobData(blobData);
|
| - registry->registerBlobURL(url, webBlobData);
|
| - }
|
| - } else {
|
| - OwnPtr<BlobRegistryContext> context = adoptPtr(new BlobRegistryContext(url, blobData));
|
| - callOnMainThread(®isterBlobURLTask, context.leakPtr());
|
| - }
|
| + blobRegistry()->addBlobDataRef(uuid);
|
| }
|
|
|
| -static void registerBlobURLFromTask(void* context)
|
| +void BlobRegistry::removeBlobDataRef(const String& uuid)
|
| {
|
| - OwnPtr<BlobRegistryContext> blobRegistryContext = adoptPtr(static_cast<BlobRegistryContext*>(context));
|
| - if (WebBlobRegistry* registry = blobRegistry())
|
| - registry->registerBlobURL(blobRegistryContext->url, blobRegistryContext->srcURL);
|
| + blobRegistry()->removeBlobDataRef(uuid);
|
| }
|
|
|
| -void BlobRegistry::registerBlobURL(SecurityOrigin* origin, const KURL& url, const KURL& srcURL)
|
| +void BlobRegistry::registerPublicBlobURL(SecurityOrigin* origin, const KURL& url, PassRefPtr<BlobDataHandle> handle)
|
| {
|
| saveToOriginMap(origin, url);
|
| -
|
| - if (isMainThread()) {
|
| - if (WebBlobRegistry* registry = blobRegistry())
|
| - registry->registerBlobURL(url, srcURL);
|
| - } else {
|
| - OwnPtr<BlobRegistryContext> context = adoptPtr(new BlobRegistryContext(url, srcURL));
|
| - callOnMainThread(®isterBlobURLFromTask, context.leakPtr());
|
| - }
|
| -}
|
| -
|
| -static void unregisterBlobURLTask(void* context)
|
| -{
|
| - OwnPtr<BlobRegistryContext> blobRegistryContext = adoptPtr(static_cast<BlobRegistryContext*>(context));
|
| - if (WebBlobRegistry* registry = blobRegistry())
|
| - registry->unregisterBlobURL(blobRegistryContext->url);
|
| + blobRegistry()->registerPublicBlobURL(url, handle->uuid());
|
| }
|
|
|
| -void BlobRegistry::unregisterBlobURL(const KURL& url)
|
| +void BlobRegistry::revokePublicBlobURL(const KURL& url)
|
| {
|
| removeFromOriginMap(url);
|
| -
|
| - if (isMainThread()) {
|
| - if (WebBlobRegistry* registry = blobRegistry())
|
| - registry->unregisterBlobURL(url);
|
| - } else {
|
| - OwnPtr<BlobRegistryContext> context = adoptPtr(new BlobRegistryContext(url));
|
| - callOnMainThread(&unregisterBlobURLTask, context.leakPtr());
|
| - }
|
| + blobRegistry()->revokePublicBlobURL(url);
|
| }
|
|
|
| static void registerStreamURLTask(void* context)
|
|
|