2010-09-10 Michael Nordman <michaeln@google.com>
Reviewed by Dumitru Daniliuc.
Decouple Blob from ScriptExecutionContext.
https://bugs.webkit.org/show_bug.cgi?id=45410
- Removed ScriptExecutionContext pointers from Blob and File constructors.
- Removed ScriptExecutionContext's collection of Blobs instance in that context.
- Refactored BlobURL to make a distinction between 'public' blob urls and 'internal'
urls that are used solely as identifiers. The former requires a SecurityOrigin to
to manufacture, the latter does not.
- Added a constant and accessor for the blob protocol scheme on the BlobURL class.
No new tests are added since this is a cleanup.
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readFile):
(WebCore::CloneDeserializer::readTerminal):
* bindings/v8/SerializedScriptValue.cpp:
(WebCore::ZigZag::Reader::readBlob):
(WebCore::ZigZag::Reader::readFile):
(WebCore::ZigZag::Reader::readFileList):
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::~ScriptExecutionContext):
(WebCore::ScriptExecutionContext::createPublicBlobURL):
(WebCore::ScriptExecutionContext::revokePublicBlobURL):
* dom/ScriptExecutionContext.h:
* fileapi/Blob.cpp:
(WebCore::Blob::Blob):
(WebCore::Blob::~Blob):
(WebCore::Blob::slice):
* fileapi/Blob.h:
(WebCore::Blob::create):
(WebCore::Blob::url):
* fileapi/Blob.idl:
* fileapi/BlobBuilder.cpp:
(WebCore::BlobBuilder::getBlob):
* fileapi/BlobBuilder.h:
* fileapi/BlobBuilder.idl:
* fileapi/BlobURL.cpp:
(WebCore::BlobURL::createPublicURL):
(WebCore::BlobURL::createInternalURL):
(WebCore::BlobURL::getOrigin):
(WebCore::BlobURL::getIdentifier):
(WebCore::BlobURL::createBlobURL):
* fileapi/BlobURL.h:
(WebCore::BlobURL::blobProtocol):
(WebCore::BlobURL::BlobURL):
* fileapi/File.cpp:
(WebCore::File::File):
* fileapi/File.h:
(WebCore::File::create):
* fileapi/FileReader.cpp: Register a public url to perform the read.
(WebCore::FileReader::cleanup):
(WebCore::FileReader::start):
(WebCore::FileReader::didFinishLoading):
(WebCore::FileReader::failed):
* fileapi/FileReader.h: Added m_urlForReading data member.
* fileapi/FileReaderSync.cpp:
(WebCore::FileReaderSync::read): Register a public url to perform the read.
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::registerBlobURL):
(WebCore::ThreadableBlobRegistry::unregisterBlobURL):
* fileapi/ThreadableBlobRegistry.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::appendFormData):
(WebCore::HTMLInputElement::setFileListFromRenderer):
* page/SecurityOrigin.cpp: Use BlobURL.blobProtocol().
(WebCore::SecurityOrigin::create):
(WebCore::SecurityOrigin::canRequest):
(WebCore::SecurityOrigin::canDisplay):
* platform/chromium/ClipboardChromium.cpp:
(WebCore::ClipboardChromium::files):
* platform/gtk/ClipboardGtk.cpp:
(WebCore::ClipboardGtk::files):
* platform/mac/ClipboardMac.mm:
(WebCore::ClipboardMac::files):
* platform/win/ClipboardWin.cpp:
(WebCore::ClipboardWin::files):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/bindings/js/SerializedScriptValue.cpp b/WebCore/bindings/js/SerializedScriptValue.cpp
index fcd3314..fa8a1ed 100644
--- a/WebCore/bindings/js/SerializedScriptValue.cpp
+++ b/WebCore/bindings/js/SerializedScriptValue.cpp
@@ -974,10 +974,8 @@
Identifier type;
if (!readStringData(type))
return 0;
- if (m_isDOMGlobalObject) {
- ScriptExecutionContext* scriptExecutionContext = static_cast<JSDOMGlobalObject*>(m_exec->lexicalGlobalObject())->scriptExecutionContext();
- file = File::create(scriptExecutionContext, String(path.ustring().impl()), KURL(KURL(), String(url.ustring().impl())), String(type.ustring().impl()));
- }
+ if (m_isDOMGlobalObject)
+ file = File::create(String(path.ustring().impl()), KURL(KURL(), String(url.ustring().impl())), String(type.ustring().impl()));
return true;
}
@@ -1074,9 +1072,7 @@
return JSValue();
if (!m_isDOMGlobalObject)
return jsNull();
- ScriptExecutionContext* scriptExecutionContext = static_cast<JSDOMGlobalObject*>(m_exec->lexicalGlobalObject())->scriptExecutionContext();
- ASSERT(scriptExecutionContext);
- return toJS(m_exec, static_cast<JSDOMGlobalObject*>(m_globalObject), Blob::create(scriptExecutionContext, KURL(KURL(), url.ustring().impl()), String(type.ustring().impl()), size));
+ return toJS(m_exec, static_cast<JSDOMGlobalObject*>(m_globalObject), Blob::create(KURL(KURL(), url.ustring().impl()), String(type.ustring().impl()), size));
}
case StringTag: {
Identifier ident;