X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2FWebKit%2FSource%2Fmodules%2Ffilesystem%2FDOMFileSystemBase.cpp;h=3368023f83aecb9fe6a111454c1ef4e53d77c2dc;hb=d41e52f18cc3fee3627acf2db026b2a86c2a9d18;hp=13f7aef7e4d1fa1a5dc61d97fb3dcab307112932;hpb=4e9e197c26c34b7055b2c5de6d4a770d317b468c;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/WebKit/Source/modules/filesystem/DOMFileSystemBase.cpp b/src/third_party/WebKit/Source/modules/filesystem/DOMFileSystemBase.cpp index 13f7aef..3368023 100644 --- a/src/third_party/WebKit/Source/modules/filesystem/DOMFileSystemBase.cpp +++ b/src/third_party/WebKit/Source/modules/filesystem/DOMFileSystemBase.cpp @@ -32,6 +32,7 @@ #include "modules/filesystem/DOMFileSystemBase.h" #include "core/dom/ExecutionContext.h" +#include "core/fileapi/File.h" #include "core/fileapi/FileError.h" #include "core/html/VoidCallback.h" #include "modules/filesystem/DOMFilePath.h" @@ -188,6 +189,25 @@ bool DOMFileSystemBase::pathPrefixToFileSystemType(const String& pathPrefix, Fil return false; } +PassRefPtrWillBeRawPtr DOMFileSystemBase::createFile(const FileMetadata& metadata, const KURL& fileSystemURL, FileSystemType type, const String name) +{ + // 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). + // FIXME: We should use the snapshot metadata for all files. + // https://www.w3.org/Bugs/Public/show_bug.cgi?id=17746 + if (type == FileSystemTypeTemporary || type == FileSystemTypePersistent) + return File::createForFileSystemFile(metadata.platformPath, name); + + if (!metadata.platformPath.isEmpty()) { + // If the platformPath in the returned metadata is given, we create a File object for the path. + File::UserVisibility userVisibility = (type == FileSystemTypeExternal) ? File::IsUserVisible : File::IsNotUserVisible; + return File::createForFileSystemFile(name, metadata, userVisibility); + } + + return File::createForFileSystemFile(fileSystemURL, metadata); +} + void DOMFileSystemBase::getMetadata(const EntryBase* entry, PassOwnPtr successCallback, PassOwnPtr errorCallback, SynchronousType synchronousType) { if (!fileSystem()) {