diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/dom/DOMURL.cpp | 20 |
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 |