summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/FileAPI
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-05-24 08:28:08 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-05-24 08:28:08 +0000
commita4e969f4965059196ca948db781e52f7cfebf19e (patch)
tree6ca352808c8fdc52006a0f33f6ae3c593b23867d /Source/WebKit2/WebProcess/FileAPI
parent41386e9cb918eed93b3f13648cbef387e371e451 (diff)
downloadWebKitGtk-tarball-a4e969f4965059196ca948db781e52f7cfebf19e.tar.gz
webkitgtk-2.12.3webkitgtk-2.12.3
Diffstat (limited to 'Source/WebKit2/WebProcess/FileAPI')
-rw-r--r--Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp39
-rw-r--r--Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h11
2 files changed, 31 insertions, 19 deletions
diff --git a/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp b/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp
index ab0ea4d67..f78c990d1 100644
--- a/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp
+++ b/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp
@@ -26,40 +26,53 @@
#include "config.h"
#include "BlobRegistryProxy.h"
-#if ENABLE(BLOB) && ENABLE(NETWORK_PROCESS)
-
-#include "BlobRegistrationData.h"
#include "NetworkConnectionToWebProcessMessages.h"
#include "NetworkProcessConnection.h"
#include "WebCoreArgumentCoders.h"
#include "WebProcess.h"
-#include <WebCore/BlobData.h>
+#include <WebCore/BlobDataFileReference.h>
using namespace WebCore;
namespace WebKit {
-void BlobRegistryProxy::registerBlobURL(const URL& url, std::unique_ptr<BlobData> blobData)
+void BlobRegistryProxy::registerFileBlobURL(const WebCore::URL& url, RefPtr<BlobDataFileReference>&& file, const String& contentType)
{
- ASSERT(WebProcess::shared().usesNetworkProcess());
+ SandboxExtension::Handle extensionHandle;
+
+ // File path can be empty when submitting a form file input without a file, see bug 111778.
+ if (!file->path().isEmpty())
+ SandboxExtension::createHandle(file->path(), SandboxExtension::ReadOnly, extensionHandle);
- WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RegisterBlobURL(url, BlobRegistrationData(std::move(blobData))), 0);
+ WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RegisterFileBlobURL(url, file->path(), extensionHandle, contentType), 0);
}
-void BlobRegistryProxy::registerBlobURL(const URL& url, const URL& srcURL)
+void BlobRegistryProxy::registerBlobURL(const URL& url, Vector<BlobPart> blobParts, const String& contentType)
{
- ASSERT(WebProcess::shared().usesNetworkProcess());
+ WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RegisterBlobURL(url, blobParts, contentType), 0);
+}
- WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLFromURL(url, srcURL), 0);
+void BlobRegistryProxy::registerBlobURL(const URL& url, const URL& srcURL)
+{
+ WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLFromURL(url, srcURL), 0);
}
void BlobRegistryProxy::unregisterBlobURL(const URL& url)
{
- ASSERT(WebProcess::shared().usesNetworkProcess());
+ WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::UnregisterBlobURL(url), 0);
+}
- WebProcess::shared().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::UnregisterBlobURL(url), 0);
+void BlobRegistryProxy::registerBlobURLForSlice(const URL& url, const URL& srcURL, long long start, long long end)
+{
+ WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLForSlice(url, srcURL, start, end), 0);
}
+unsigned long long BlobRegistryProxy::blobSize(const URL& url)
+{
+ uint64_t resultSize;
+ if (!WebProcess::singleton().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::BlobSize(url), Messages::NetworkConnectionToWebProcess::BlobSize::Reply(resultSize), 0))
+ return 0;
+ return resultSize;
}
-#endif // ENABLE(BLOB) && ENABLE(NETWORK_PROCESS)
+}
diff --git a/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h b/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h
index c322e1e6c..1f7736003 100644
--- a/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h
+++ b/Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h
@@ -26,21 +26,20 @@
#ifndef BlobRegistryProxy_h
#define BlobRegistryProxy_h
-#if ENABLE(BLOB) && ENABLE(NETWORK_PROCESS)
-
#include <WebCore/BlobRegistry.h>
namespace WebKit {
-class BlobRegistryProxy : public WebCore::BlobRegistry {
+class BlobRegistryProxy final : public WebCore::BlobRegistry {
public:
- virtual void registerBlobURL(const WebCore::URL&, std::unique_ptr<WebCore::BlobData>) override;
+ virtual void registerFileBlobURL(const WebCore::URL&, RefPtr<WebCore::BlobDataFileReference>&&, const String& contentType) override;
+ virtual void registerBlobURL(const WebCore::URL&, Vector<WebCore::BlobPart>, const String& contentType) override;
virtual void registerBlobURL(const WebCore::URL&, const WebCore::URL& srcURL) override;
virtual void unregisterBlobURL(const WebCore::URL&) override;
+ virtual void registerBlobURLForSlice(const WebCore::URL&, const WebCore::URL& srcURL, long long start, long long end) override;
+ virtual unsigned long long blobSize(const WebCore::URL&) override;
};
}
-#endif // ENABLE(BLOB) && ENABLE(NETWORK_PROCESS)
-
#endif // BlobRegistryProxy_h