Index: WebCore/Modules/filesystem/DOMFileSystemSync.cpp |
=================================================================== |
--- WebCore/Modules/filesystem/DOMFileSystemSync.cpp (revision 140218) |
+++ WebCore/Modules/filesystem/DOMFileSystemSync.cpp (working copy) |
@@ -113,10 +113,11 @@ |
{ |
} |
- void didReadMetadata(const FileMetadata& metadata) |
+ virtual void didCreateSnapshotFile(const FileMetadata& metadata, PassRefPtr<BlobDataHandle> snapshot) |
{ |
// For regular filesystem types (temporary or persistent), we should not cache file metadata as it could change File semantics. |
- // For other filesystem types (which could be platform-specific ones), there's a chance that the files are on remote filesystem. If the port has returned metadata just pass it to File constructor (so we may cache the metadata). |
+ // For other filesystem types (which could be platform-specific ones), there's a chance that the files are on remote filesystem. |
+ // If the port has returned metadata just pass it to File constructor (so we may cache the metadata). |
// FIXME: We should use the snapshot metadata for all files. |
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=17746 |
if (m_type == FileSystemTypeTemporary || m_type == FileSystemTypePersistent) { |
@@ -128,6 +129,12 @@ |
// Otherwise create a File from the FileSystem URL. |
m_result->m_file = File::createForFileSystemFile(m_url, metadata).get(); |
} |
+ |
+ // We can't directly use the snapshot blob data handle because the content type on it hasn't been set. |
+ // Having a chain of custody thru thread bridging of that instance up until now, *after* we've coined a File with a new handle |
+ // that has the correct type set on it, allows the blob storage system to track when a temp file can and can't |
+ // be safely deleted. |
+ // FIXME: Maybe add a BlobDataHandle/BlobRegistry methods to clone a blob with a new type? |
} |
private: |
CreateFileHelper(PassRefPtr<CreateFileResult> result, const String& name, const KURL& url, FileSystemType type) |