Handle blob resource.
https://bugs.webkit.org/show_bug.cgi?id=43941
Reviewed by Darin Fisher.
JavaScriptCore:
- JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle.
WebCore:
To provide lower level blob reosurce handling for all possible ports,
BlobResourceHandle derived from ResourceHandle is implemented. It provides
both synchronous and asynchronous resource loading for blob URL.
BlobResourceHandle needs to create a FileStreamProxy instance in order to
asynchronous file stream operation. To achive this, a hook createAsyncFileStream
is added to ResourceHandleClient interface. When ResourceLoader implements
ths hook, it creates and returns FileStreamProxy.
BlobResourceHandle.* is not added to chromium port since it will implement
its own blob resource handling.
- Android.mk:
- CMakeLists.txt:
- GNUmakefile.am:
- WebCore.pro:
- WebCore.vcproj/WebCore.vcproj:
- WebCore.xcodeproj/project.pbxproj:
- loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::createAsyncFileStream): Create and return FileStreamProxy.
- loader/ResourceLoader.h:
- page/SecurityOrigin.cpp: Add the support to get and validate the origin of blob URL.
(WebCore::SecurityOrigin::create):
(WebCore::SecurityOrigin::canLoad):
- platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::appendStorageItems): Fix a bug that the length is not subtracted.
- platform/network/BlobResourceHandle.cpp: Added.
- platform/network/BlobResourceHandle.h: Added.
- platform/network/HTTPParsers.cpp:
(WebCore::parseRange):
- platform/network/HTTPParsers.h:
- platform/network/ResourceHandle.cpp: Hook up with asynchronous blob resource handling.
(WebCore::ResourceHandle::create):
- platform/network/ResourceHandle.h:
- platform/network/ResourceHandleClient.h:
(WebCore::ResourceHandleClient::createAsyncFileStream): Add a hook.
- platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::loadResourceSynchronously): Hook up with synchronous blob resource handling.