| Index: WebCore/platform/network/chromium/BlobRegistryProxy.cpp | 
| =================================================================== | 
| --- WebCore/platform/network/chromium/BlobRegistryProxy.cpp	(revision 140218) | 
| +++ WebCore/platform/network/chromium/BlobRegistryProxy.cpp	(working copy) | 
| @@ -37,6 +37,7 @@ | 
| #include "BlobData.h" | 
| #include "KURL.h" | 
| #include "ResourceHandle.h" | 
| +#include "SecurityOrigin.h" | 
| #include <public/Platform.h> | 
| #include <public/WebBlobData.h> | 
| #include <public/WebBlobRegistry.h> | 
| @@ -46,9 +47,13 @@ | 
|  | 
| namespace WebCore { | 
|  | 
| +// FIXME: ensure webkit::init causes this to be initalized. | 
| +// Alternatively, remove the blobRegistry() accessor from WebKit::Platform and instead | 
| +// define a WebBlobRegistry::setBlobRegistry(WebBlobRegistry*) for embedders to inject | 
| +// and instance pointer into. Injecting these things is frustratingly messy? | 
| BlobRegistry& blobRegistry() | 
| { | 
| -    ASSERT(isMainThread()); | 
| +    // AtomicallyInitializedStatic(BlobRegistryProxy&, intance = *new BlobRegistryProxy); ?? | 
| DEFINE_STATIC_LOCAL(BlobRegistryProxy, instance, ()); | 
| return instance; | 
| } | 
| @@ -56,28 +61,48 @@ | 
| BlobRegistryProxy::BlobRegistryProxy() | 
| : m_webBlobRegistry(WebKit::Platform::current()->blobRegistry()) | 
| { | 
| +    //ASSERT(isMainThread());  // FIXME: restore this assertion or claim this is ok. | 
| } | 
|  | 
| -void BlobRegistryProxy::registerBlobURL(const KURL& url, PassOwnPtr<BlobData> blobData) | 
| +void BlobRegistryProxy::registerBlobData(const String& uuid, PassOwnPtr<BlobData> blobData) | 
| { | 
| if (m_webBlobRegistry) { | 
| WebKit::WebBlobData webBlobData(blobData); | 
| -        m_webBlobRegistry->registerBlobURL(url, webBlobData); | 
| +        m_webBlobRegistry->registerBlobData(uuid, webBlobData); | 
| } | 
| } | 
|  | 
| -void BlobRegistryProxy::registerBlobURL(const KURL& url, const KURL& srcURL) | 
| +void BlobRegistryProxy::addBlobDataRef(const String& uuid) | 
| { | 
| if (m_webBlobRegistry) | 
| -        m_webBlobRegistry->registerBlobURL(url, srcURL); | 
| +        m_webBlobRegistry->addBlobDataRef(uuid); | 
| } | 
|  | 
| -void BlobRegistryProxy::unregisterBlobURL(const KURL& url) | 
| +void BlobRegistryProxy::removeBlobDataRef(const String& uuid) | 
| { | 
| if (m_webBlobRegistry) | 
| -        m_webBlobRegistry->unregisterBlobURL(url); | 
| +        m_webBlobRegistry->removeBlobDataRef(uuid); | 
| } | 
|  | 
| +void BlobRegistryProxy::registerPublicBlobURL(SecurityOrigin* origin, const KURL& url, PassRefPtr<BlobDataHandle> blobDataHandle) | 
| +{ | 
| +    BlobRegistry::setCachedUniqueOrigin(url, origin); | 
| +    if (m_webBlobRegistry) | 
| +        m_webBlobRegistry->registerPublicBlobURL(url, blobDataHandle->uuid()); | 
| +} | 
| + | 
| +void BlobRegistryProxy::revokePublicBlobURL(const KURL& url) | 
| +{ | 
| +    BlobRegistry::clearCachedUniqueOrigin(url); | 
| +    if (m_webBlobRegistry) | 
| +        m_webBlobRegistry->revokePublicBlobURL(url); | 
| +} | 
| + | 
| +PassRefPtr<SecurityOrigin> BlobRegistryProxy::cachedUniqueOrigin(const KURL& url) | 
| +{ | 
| +    return BlobRegistry::getCachedUniqueOrigin(url); | 
| +} | 
| + | 
| } // namespace WebCore | 
|  | 
| #endif | 
|  |