summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp b/chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp
index 8881223f724..feba9b94942 100644
--- a/chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp
+++ b/chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp
@@ -63,20 +63,24 @@ void DOMURL::setInput(const String& value)
}
}
-String DOMURL::createObjectURL(ExecutionContext* executionContext, Blob* blob)
+String DOMURL::createObjectURL(ExecutionContext* executionContext, Blob* blob, ExceptionState& exceptionState)
{
if (!executionContext || !blob)
return String();
- return createPublicURL(executionContext, blob);
+ if (blob->hasBeenClosed()) {
+ exceptionState.throwDOMException(InvalidStateError, String(blob->isFile() ? "File" : "Blob") + " has been closed.");
+ return String();
+ }
+ return createPublicURL(executionContext, blob, blob->uuid());
}
-String DOMURL::createPublicURL(ExecutionContext* executionContext, URLRegistrable* registrable)
+String DOMURL::createPublicURL(ExecutionContext* executionContext, URLRegistrable* registrable, const String& uuid)
{
KURL publicURL = BlobURL::createPublicURL(executionContext->securityOrigin());
if (publicURL.isEmpty())
return String();
- executionContext->publicURLManager().registerURL(executionContext->securityOrigin(), publicURL, registrable);
+ executionContext->publicURLManager().registerURL(executionContext->securityOrigin(), publicURL, registrable, uuid);
return publicURL.string();
}
@@ -91,4 +95,12 @@ void DOMURL::revokeObjectURL(ExecutionContext* executionContext, const String& u
executionContext->publicURLManager().revoke(url);
}
+void DOMURL::revokeObjectUUID(ExecutionContext* executionContext, const String& uuid)
+{
+ if (!executionContext)
+ return;
+
+ executionContext->publicURLManager().revoke(uuid);
+}
+
} // namespace WebCore