OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 } | 131 } |
132 | 132 |
133 // For regular types we can just append the entry's fullPath to the m_filesy
stemRootURL that should look like 'filesystem:<origin>/<typePrefix>'. | 133 // For regular types we can just append the entry's fullPath to the m_filesy
stemRootURL that should look like 'filesystem:<origin>/<typePrefix>'. |
134 ASSERT(!m_filesystemRootURL.isEmpty()); | 134 ASSERT(!m_filesystemRootURL.isEmpty()); |
135 KURL url = m_filesystemRootURL; | 135 KURL url = m_filesystemRootURL; |
136 // Remove the extra leading slash. | 136 // Remove the extra leading slash. |
137 url.setPath(url.path() + encodeWithURLEscapeSequences(fullPath.substring(1))
); | 137 url.setPath(url.path() + encodeWithURLEscapeSequences(fullPath.substring(1))
); |
138 return url; | 138 return url; |
139 } | 139 } |
140 | 140 |
| 141 bool DOMFileSystemBase::pathToAbsolutePath(FileSystemType type, const EntryBase*
base, String path, String& absolutePath) |
| 142 { |
| 143 ASSERT(base); |
| 144 |
| 145 if (!DOMFilePath::isAbsolute(path)) |
| 146 path = DOMFilePath::append(base->fullPath(), path); |
| 147 absolutePath = DOMFilePath::removeExtraParentReferences(path); |
| 148 |
| 149 if ((type == FileSystemTypeTemporary || type == FileSystemTypePersistent) &&
!DOMFilePath::isValidPath(absolutePath)) |
| 150 return false; |
| 151 return true; |
| 152 } |
| 153 |
141 bool DOMFileSystemBase::getMetadata(const EntryBase* entry, PassRefPtr<MetadataC
allback> successCallback, PassRefPtr<ErrorCallback> errorCallback, SynchronousTy
pe synchronousType) | 154 bool DOMFileSystemBase::getMetadata(const EntryBase* entry, PassRefPtr<MetadataC
allback> successCallback, PassRefPtr<ErrorCallback> errorCallback, SynchronousTy
pe synchronousType) |
142 { | 155 { |
143 OwnPtr<MetadataCallbacks> callbacks(MetadataCallbacks::create(successCallbac
k, errorCallback)); | 156 OwnPtr<MetadataCallbacks> callbacks(MetadataCallbacks::create(successCallbac
k, errorCallback)); |
144 callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous); | 157 callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous); |
145 m_asyncFileSystem->readMetadata(createFileSystemURL(entry), callbacks.releas
e()); | 158 m_asyncFileSystem->readMetadata(createFileSystemURL(entry), callbacks.releas
e()); |
146 return true; | 159 return true; |
147 } | 160 } |
148 | 161 |
149 static bool verifyAndGetDestinationPathForCopyOrMove(const EntryBase* source, En
tryBase* parent, const String& newName, String& destinationPath) | 162 static bool verifyAndGetDestinationPathForCopyOrMove(const EntryBase* source, En
tryBase* parent, const String& newName, String& destinationPath) |
150 { | 163 { |
(...skipping 17 matching lines...) Expand all Loading... |
168 | 181 |
169 destinationPath = parent->fullPath(); | 182 destinationPath = parent->fullPath(); |
170 if (!newName.isEmpty()) | 183 if (!newName.isEmpty()) |
171 destinationPath = DOMFilePath::append(destinationPath, newName); | 184 destinationPath = DOMFilePath::append(destinationPath, newName); |
172 else | 185 else |
173 destinationPath = DOMFilePath::append(destinationPath, source->name()); | 186 destinationPath = DOMFilePath::append(destinationPath, source->name()); |
174 | 187 |
175 return true; | 188 return true; |
176 } | 189 } |
177 | 190 |
178 static bool pathToAbsolutePath(FileSystemType type, const EntryBase* base, Strin
g path, String& absolutePath) | |
179 { | |
180 ASSERT(base); | |
181 | |
182 if (!DOMFilePath::isAbsolute(path)) | |
183 path = DOMFilePath::append(base->fullPath(), path); | |
184 absolutePath = DOMFilePath::removeExtraParentReferences(path); | |
185 | |
186 if ((type == FileSystemTypeTemporary || type == FileSystemTypePersistent) &&
!DOMFilePath::isValidPath(absolutePath)) | |
187 return false; | |
188 return true; | |
189 } | |
190 | |
191 bool DOMFileSystemBase::move(const EntryBase* source, EntryBase* parent, const S
tring& newName, PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallb
ack> errorCallback, SynchronousType synchronousType) | 191 bool DOMFileSystemBase::move(const EntryBase* source, EntryBase* parent, const S
tring& newName, PassRefPtr<EntryCallback> successCallback, PassRefPtr<ErrorCallb
ack> errorCallback, SynchronousType synchronousType) |
192 { | 192 { |
193 String destinationPath; | 193 String destinationPath; |
194 if (!verifyAndGetDestinationPathForCopyOrMove(source, parent, newName, desti
nationPath)) | 194 if (!verifyAndGetDestinationPathForCopyOrMove(source, parent, newName, desti
nationPath)) |
195 return false; | 195 return false; |
196 | 196 |
197 OwnPtr<EntryCallbacks> callbacks(EntryCallbacks::create(successCallback, err
orCallback, parent->filesystem(), destinationPath, source->isDirectory())); | 197 OwnPtr<EntryCallbacks> callbacks(EntryCallbacks::create(successCallback, err
orCallback, parent->filesystem(), destinationPath, source->isDirectory())); |
198 callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous); | 198 callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous); |
199 | 199 |
200 m_asyncFileSystem->move(createFileSystemURL(source), parent->filesystem()->c
reateFileSystemURL(destinationPath), callbacks.release()); | 200 m_asyncFileSystem->move(createFileSystemURL(source), parent->filesystem()->c
reateFileSystemURL(destinationPath), callbacks.release()); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 ASSERT(DOMFilePath::isAbsolute(path)); | 288 ASSERT(DOMFilePath::isAbsolute(path)); |
289 | 289 |
290 OwnPtr<EntriesCallbacks> callbacks(EntriesCallbacks::create(successCallback,
errorCallback, reader, path)); | 290 OwnPtr<EntriesCallbacks> callbacks(EntriesCallbacks::create(successCallback,
errorCallback, reader, path)); |
291 callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous); | 291 callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous); |
292 | 292 |
293 m_asyncFileSystem->readDirectory(createFileSystemURL(path), callbacks.releas
e()); | 293 m_asyncFileSystem->readDirectory(createFileSystemURL(path), callbacks.releas
e()); |
294 return true; | 294 return true; |
295 } | 295 } |
296 | 296 |
297 } // namespace WebCore | 297 } // namespace WebCore |
OLD | NEW |