Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Side by Side Diff: webkit/fileapi/file_system_operation_unittest.cc

Issue 6833007: More filesystem cleanup: convert URL-encoded-as-FilePath to actual URL, where (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/fileapi/file_system_operation.h" 5 #include "webkit/fileapi/file_system_operation.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/scoped_temp_dir.h" 9 #include "base/memory/scoped_temp_dir.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 entries_ = entries; 49 entries_ = entries;
50 } 50 }
51 const std::vector<base::FileUtilProxy::Entry>& entries() const { 51 const std::vector<base::FileUtilProxy::Entry>& entries() const {
52 return entries_; 52 return entries_;
53 } 53 }
54 54
55 protected: 55 protected:
56 // Common temp base for nondestructive uses. 56 // Common temp base for nondestructive uses.
57 ScopedTempDir base_; 57 ScopedTempDir base_;
58 58
59 GURL URLForRelativePath(const std::string& path) const {
60 // Only the path will actually get used.
61 return GURL("file://").Resolve(base_.path().value()).Resolve(path);
62 }
63
64 GURL URLForPath(const FilePath& path) const {
65 // Only the path will actually get used.
66 return GURL("file://").Resolve(path.value());
67 }
68
59 // For post-operation status. 69 // For post-operation status.
60 int status_; 70 int status_;
61 base::PlatformFileInfo info_; 71 base::PlatformFileInfo info_;
62 FilePath path_; 72 FilePath path_;
63 std::vector<base::FileUtilProxy::Entry> entries_; 73 std::vector<base::FileUtilProxy::Entry> entries_;
64 74
65 DISALLOW_COPY_AND_ASSIGN(FileSystemOperationTest); 75 DISALLOW_COPY_AND_ASSIGN(FileSystemOperationTest);
66 }; 76 };
67 77
68 class MockDispatcher : public FileSystemCallbackDispatcher { 78 class MockDispatcher : public FileSystemCallbackDispatcher {
(...skipping 15 matching lines...) Expand all
84 test_->set_path(platform_path); 94 test_->set_path(platform_path);
85 test_->set_status(kFileOperationSucceeded); 95 test_->set_status(kFileOperationSucceeded);
86 } 96 }
87 97
88 virtual void DidReadDirectory( 98 virtual void DidReadDirectory(
89 const std::vector<base::FileUtilProxy::Entry>& entries, 99 const std::vector<base::FileUtilProxy::Entry>& entries,
90 bool /* has_more */) { 100 bool /* has_more */) {
91 test_->set_entries(entries); 101 test_->set_entries(entries);
92 } 102 }
93 103
94 virtual void DidOpenFileSystem(const std::string&, const FilePath&) { 104 virtual void DidOpenFileSystem(const std::string&, const GURL&) {
95 NOTREACHED(); 105 NOTREACHED();
96 } 106 }
97 107
98 virtual void DidWrite(int64 bytes, bool complete) { 108 virtual void DidWrite(int64 bytes, bool complete) {
99 NOTREACHED(); 109 NOTREACHED();
100 } 110 }
101 111
102 private: 112 private:
103 FileSystemOperationTest* test_; 113 FileSystemOperationTest* test_;
104 }; 114 };
105 115
106 FileSystemOperation* FileSystemOperationTest::operation() { 116 FileSystemOperation* FileSystemOperationTest::operation() {
107 FileSystemOperation* operation = new FileSystemOperation( 117 FileSystemOperation* operation = new FileSystemOperation(
108 new MockDispatcher(this), 118 new MockDispatcher(this),
109 base::MessageLoopProxy::CreateForCurrentThread(), 119 base::MessageLoopProxy::CreateForCurrentThread(),
110 NULL, 120 NULL,
111 FileSystemFileUtil::GetInstance()); 121 FileSystemFileUtil::GetInstance());
112 operation->file_system_operation_context()->set_src_type( 122 operation->file_system_operation_context()->set_src_type(
113 kFileSystemTypeTemporary); 123 kFileSystemTypeTemporary);
114 operation->file_system_operation_context()->set_dest_type( 124 operation->file_system_operation_context()->set_dest_type(
115 kFileSystemTypeTemporary); 125 kFileSystemTypeTemporary);
126 GURL origin_url("fake://fake.foo/");
127 operation->file_system_operation_context()->set_src_origin_url(origin_url);
128 operation->file_system_operation_context()->set_dest_origin_url(origin_url);
116 return operation; 129 return operation;
117 } 130 }
118 131
119 TEST_F(FileSystemOperationTest, TestMoveFailureSrcDoesntExist) { 132 TEST_F(FileSystemOperationTest, TestMoveFailureSrcDoesntExist) {
120 FilePath src(base_.path().Append(FILE_PATH_LITERAL("a"))); 133 GURL src(URLForRelativePath("a"));
121 FilePath dest(base_.path().Append(FILE_PATH_LITERAL("b"))); 134 GURL dest(URLForRelativePath("b"));
122 operation()->Move(src, dest); 135 operation()->Move(src, dest);
123 MessageLoop::current()->RunAllPending(); 136 MessageLoop::current()->RunAllPending();
124 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 137 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
125 } 138 }
126 139
127 TEST_F(FileSystemOperationTest, TestMoveFailureContainsPath) { 140 TEST_F(FileSystemOperationTest, TestMoveFailureContainsPath) {
128 ScopedTempDir src_dir; 141 ScopedTempDir src_dir;
129 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 142 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
130 FilePath dest_dir_path; 143 FilePath dest_dir_path;
131 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(src_dir.path(), 144 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(src_dir.path(),
132 FILE_PATH_LITERAL("child_dir"), 145 FILE_PATH_LITERAL("child_dir"),
133 &dest_dir_path)); 146 &dest_dir_path));
134 operation()->Move(src_dir.path(), dest_dir_path); 147 operation()->Move(URLForPath(src_dir.path()), URLForPath(dest_dir_path));
135 MessageLoop::current()->RunAllPending(); 148 MessageLoop::current()->RunAllPending();
136 EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, status()); 149 EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, status());
137 } 150 }
138 151
139 TEST_F(FileSystemOperationTest, TestMoveFailureSrcDirExistsDestFile) { 152 TEST_F(FileSystemOperationTest, TestMoveFailureSrcDirExistsDestFile) {
140 // Src exists and is dir. Dest is a file. 153 // Src exists and is dir. Dest is a file.
141 ScopedTempDir src_dir; 154 ScopedTempDir src_dir;
142 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 155 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
143 156
144 ScopedTempDir dest_dir; 157 ScopedTempDir dest_dir;
145 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 158 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
146 FilePath dest_file; 159 FilePath dest_file;
147 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file); 160 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file);
148 161
149 operation()->Move(src_dir.path(), dest_file); 162 operation()->Move(URLForPath(src_dir.path()), URLForPath(dest_file));
150 MessageLoop::current()->RunAllPending(); 163 MessageLoop::current()->RunAllPending();
151 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status()); 164 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status());
152 } 165 }
153 166
154 TEST_F(FileSystemOperationTest, TestMoveFailureSrcFileExistsDestNonEmptyDir) { 167 TEST_F(FileSystemOperationTest, TestMoveFailureSrcFileExistsDestNonEmptyDir) {
155 // Src exists and is a directory. Dest is a non-empty directory. 168 // Src exists and is a directory. Dest is a non-empty directory.
156 ScopedTempDir src_dir; 169 ScopedTempDir src_dir;
157 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 170 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
158 171
159 ScopedTempDir dest_dir; 172 ScopedTempDir dest_dir;
160 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 173 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
161 FilePath child_file; 174 FilePath child_file;
162 file_util::CreateTemporaryFileInDir(dest_dir.path(), &child_file); 175 file_util::CreateTemporaryFileInDir(dest_dir.path(), &child_file);
163 176
164 operation()->Move(src_dir.path(), dest_dir.path()); 177 operation()->Move(URLForPath(src_dir.path()), URLForPath(dest_dir.path()));
165 MessageLoop::current()->RunAllPending(); 178 MessageLoop::current()->RunAllPending();
166 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, status()); 179 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, status());
167 } 180 }
168 181
169 TEST_F(FileSystemOperationTest, TestMoveFailureSrcFileExistsDestDir) { 182 TEST_F(FileSystemOperationTest, TestMoveFailureSrcFileExistsDestDir) {
170 // Src exists and is a file. Dest is a directory. 183 // Src exists and is a file. Dest is a directory.
171 ScopedTempDir src_dir; 184 ScopedTempDir src_dir;
172 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 185 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
173 FilePath src_file; 186 FilePath src_file;
174 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file); 187 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
175 188
176 ScopedTempDir dest_dir; 189 ScopedTempDir dest_dir;
177 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 190 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
178 191
179 operation()->Move(src_file, dest_dir.path()); 192 operation()->Move(URLForPath(src_file), URLForPath(dest_dir.path()));
180 MessageLoop::current()->RunAllPending(); 193 MessageLoop::current()->RunAllPending();
181 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status()); 194 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status());
182 } 195 }
183 196
184 TEST_F(FileSystemOperationTest, TestMoveFailureDestParentDoesntExist) { 197 TEST_F(FileSystemOperationTest, TestMoveFailureDestParentDoesntExist) {
185 // Dest. parent path does not exist. 198 // Dest. parent path does not exist.
186 ScopedTempDir src_dir; 199 ScopedTempDir src_dir;
187 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 200 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
188 FilePath nonexisting_file = base_.path().Append( 201 FilePath nonexisting_file = base_.path().Append(
189 FILE_PATH_LITERAL("NonexistingDir")).Append( 202 FILE_PATH_LITERAL("NonexistingDir")).Append(
190 FILE_PATH_LITERAL("NonexistingFile")); 203 FILE_PATH_LITERAL("NonexistingFile"));
191 204
192 operation()->Move(src_dir.path(), nonexisting_file); 205 operation()->Move(URLForPath(src_dir.path()), URLForPath(nonexisting_file));
193 MessageLoop::current()->RunAllPending(); 206 MessageLoop::current()->RunAllPending();
194 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 207 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
195 } 208 }
196 209
197 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcFileAndOverwrite) { 210 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcFileAndOverwrite) {
198 ScopedTempDir src_dir; 211 ScopedTempDir src_dir;
199 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 212 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
200 FilePath src_file; 213 FilePath src_file;
201 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file); 214 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
202 215
203 ScopedTempDir dest_dir; 216 ScopedTempDir dest_dir;
204 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 217 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
205 FilePath dest_file; 218 FilePath dest_file;
206 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file); 219 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file);
207 220
208 operation()->Move(src_file, dest_file); 221 operation()->Move(URLForPath(src_file), URLForPath(dest_file));
209 MessageLoop::current()->RunAllPending(); 222 MessageLoop::current()->RunAllPending();
210 EXPECT_EQ(kFileOperationSucceeded, status()); 223 EXPECT_EQ(kFileOperationSucceeded, status());
211 EXPECT_TRUE(FileExists(dest_file)); 224 EXPECT_TRUE(FileExists(dest_file));
212 } 225 }
213 226
214 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcFileAndNew) { 227 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcFileAndNew) {
215 ScopedTempDir src_dir; 228 ScopedTempDir src_dir;
216 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 229 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
217 FilePath src_file; 230 FilePath src_file;
218 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file); 231 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
219 232
220 ScopedTempDir dest_dir; 233 ScopedTempDir dest_dir;
221 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 234 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
222 FilePath dest_file(dest_dir.path().Append(FILE_PATH_LITERAL("NewFile"))); 235 FilePath dest_file(dest_dir.path().Append(FILE_PATH_LITERAL("NewFile")));
223 236
224 operation()->Move(src_file, dest_file); 237 operation()->Move(URLForPath(src_file), URLForPath(dest_file));
225 MessageLoop::current()->RunAllPending(); 238 MessageLoop::current()->RunAllPending();
226 EXPECT_EQ(kFileOperationSucceeded, status()); 239 EXPECT_EQ(kFileOperationSucceeded, status());
227 EXPECT_TRUE(FileExists(dest_file)); 240 EXPECT_TRUE(FileExists(dest_file));
228 } 241 }
229 242
230 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirAndOverwrite) { 243 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirAndOverwrite) {
231 ScopedTempDir src_dir; 244 ScopedTempDir src_dir;
232 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 245 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
233 246
234 ScopedTempDir dest_dir; 247 ScopedTempDir dest_dir;
235 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 248 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
236 249
237 operation()->Move(src_dir.path(), dest_dir.path()); 250 operation()->Move(URLForPath(src_dir.path()), URLForPath(dest_dir.path()));
238 MessageLoop::current()->RunAllPending(); 251 MessageLoop::current()->RunAllPending();
239 EXPECT_EQ(kFileOperationSucceeded, status()); 252 EXPECT_EQ(kFileOperationSucceeded, status());
240 EXPECT_FALSE(file_util::DirectoryExists(src_dir.path())); 253 EXPECT_FALSE(file_util::DirectoryExists(src_dir.path()));
241 254
242 // Make sure we've overwritten but not moved the source under the |dest_dir|. 255 // Make sure we've overwritten but not moved the source under the |dest_dir|.
243 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path())); 256 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path()));
244 EXPECT_FALSE(file_util::DirectoryExists( 257 EXPECT_FALSE(file_util::DirectoryExists(
245 dest_dir.path().Append(src_dir.path().BaseName()))); 258 dest_dir.path().Append(src_dir.path().BaseName())));
246 } 259 }
247 260
248 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirAndNew) { 261 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirAndNew) {
249 ScopedTempDir src_dir; 262 ScopedTempDir src_dir;
250 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 263 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
251 264
252 ScopedTempDir dir; 265 ScopedTempDir dir;
253 ASSERT_TRUE(dir.CreateUniqueTempDir()); 266 ASSERT_TRUE(dir.CreateUniqueTempDir());
254 FilePath dest_dir_path(dir.path().Append(FILE_PATH_LITERAL("NewDirectory"))); 267 FilePath dest_dir_path(dir.path().Append(FILE_PATH_LITERAL("NewDirectory")));
255 268
256 operation()->Move(src_dir.path(), dest_dir_path); 269 operation()->Move(URLForPath(src_dir.path()), URLForPath(dest_dir_path));
257 MessageLoop::current()->RunAllPending(); 270 MessageLoop::current()->RunAllPending();
258 EXPECT_EQ(kFileOperationSucceeded, status()); 271 EXPECT_EQ(kFileOperationSucceeded, status());
259 EXPECT_FALSE(file_util::DirectoryExists(src_dir.path())); 272 EXPECT_FALSE(file_util::DirectoryExists(src_dir.path()));
260 EXPECT_TRUE(file_util::DirectoryExists(dest_dir_path)); 273 EXPECT_TRUE(file_util::DirectoryExists(dest_dir_path));
261 } 274 }
262 275
263 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirRecursive) { 276 TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirRecursive) {
264 ScopedTempDir src_dir; 277 ScopedTempDir src_dir;
265 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 278 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
266 FilePath child_dir; 279 FilePath child_dir;
267 file_util::CreateTemporaryDirInDir(src_dir.path(), 280 file_util::CreateTemporaryDirInDir(src_dir.path(),
268 FILE_PATH_LITERAL("prefix"), &child_dir); 281 FILE_PATH_LITERAL("prefix"), &child_dir);
269 FilePath grandchild_file; 282 FilePath grandchild_file;
270 file_util::CreateTemporaryFileInDir(child_dir, &grandchild_file); 283 file_util::CreateTemporaryFileInDir(child_dir, &grandchild_file);
271 284
272 ScopedTempDir dest_dir; 285 ScopedTempDir dest_dir;
273 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 286 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
274 287
275 operation()->Move(src_dir.path(), dest_dir.path()); 288 operation()->Move(URLForPath(src_dir.path()), URLForPath(dest_dir.path()));
276 MessageLoop::current()->RunAllPending(); 289 MessageLoop::current()->RunAllPending();
277 EXPECT_EQ(kFileOperationSucceeded, status()); 290 EXPECT_EQ(kFileOperationSucceeded, status());
278 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path().Append( 291 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path().Append(
279 child_dir.BaseName()))); 292 child_dir.BaseName())));
280 EXPECT_TRUE(FileExists(dest_dir.path().Append( 293 EXPECT_TRUE(FileExists(dest_dir.path().Append(
281 child_dir.BaseName()).Append( 294 child_dir.BaseName()).Append(
282 grandchild_file.BaseName()))); 295 grandchild_file.BaseName())));
283 } 296 }
284 297
285 TEST_F(FileSystemOperationTest, TestCopyFailureSrcDoesntExist) { 298 TEST_F(FileSystemOperationTest, TestCopyFailureSrcDoesntExist) {
286 FilePath src(base_.path().Append(FILE_PATH_LITERAL("a"))); 299 operation()->Copy(URLForRelativePath("a"), URLForRelativePath("b"));
287 FilePath dest(base_.path().Append(FILE_PATH_LITERAL("b")));
288 operation()->Copy(src, dest);
289 MessageLoop::current()->RunAllPending(); 300 MessageLoop::current()->RunAllPending();
290 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 301 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
291 } 302 }
292 303
293 TEST_F(FileSystemOperationTest, TestCopyFailureContainsPath) { 304 TEST_F(FileSystemOperationTest, TestCopyFailureContainsPath) {
294 ScopedTempDir src_dir; 305 ScopedTempDir src_dir;
295 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 306 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
296 FilePath dest_dir_path; 307 FilePath dest_dir_path;
297 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(src_dir.path(), 308 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(src_dir.path(),
298 FILE_PATH_LITERAL("child_dir"), 309 FILE_PATH_LITERAL("child_dir"),
299 &dest_dir_path)); 310 &dest_dir_path));
300 operation()->Copy(src_dir.path(), dest_dir_path); 311 operation()->Copy(URLForPath(src_dir.path()), URLForPath(dest_dir_path));
301 MessageLoop::current()->RunAllPending(); 312 MessageLoop::current()->RunAllPending();
302 EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, status()); 313 EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, status());
303 } 314 }
304 315
305 TEST_F(FileSystemOperationTest, TestCopyFailureSrcDirExistsDestFile) { 316 TEST_F(FileSystemOperationTest, TestCopyFailureSrcDirExistsDestFile) {
306 // Src exists and is dir. Dest is a file. 317 // Src exists and is dir. Dest is a file.
307 ScopedTempDir src_dir; 318 ScopedTempDir src_dir;
308 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 319 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
309 320
310 ScopedTempDir dest_dir; 321 ScopedTempDir dest_dir;
311 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 322 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
312 FilePath dest_file; 323 FilePath dest_file;
313 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file); 324 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file);
314 325
315 operation()->Copy(src_dir.path(), dest_file); 326 operation()->Copy(URLForPath(src_dir.path()), URLForPath(dest_file));
316 MessageLoop::current()->RunAllPending(); 327 MessageLoop::current()->RunAllPending();
317 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status()); 328 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status());
318 } 329 }
319 330
320 TEST_F(FileSystemOperationTest, TestCopyFailureSrcFileExistsDestNonEmptyDir) { 331 TEST_F(FileSystemOperationTest, TestCopyFailureSrcFileExistsDestNonEmptyDir) {
321 // Src exists and is a directory. Dest is a non-empty directory. 332 // Src exists and is a directory. Dest is a non-empty directory.
322 ScopedTempDir src_dir; 333 ScopedTempDir src_dir;
323 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 334 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
324 335
325 ScopedTempDir dest_dir; 336 ScopedTempDir dest_dir;
326 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 337 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
327 FilePath child_file; 338 FilePath child_file;
328 file_util::CreateTemporaryFileInDir(dest_dir.path(), &child_file); 339 file_util::CreateTemporaryFileInDir(dest_dir.path(), &child_file);
329 340
330 operation()->Copy(src_dir.path(), dest_dir.path()); 341 operation()->Copy(URLForPath(src_dir.path()), URLForPath(dest_dir.path()));
331 MessageLoop::current()->RunAllPending(); 342 MessageLoop::current()->RunAllPending();
332 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, status()); 343 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, status());
333 } 344 }
334 345
335 TEST_F(FileSystemOperationTest, TestCopyFailureSrcFileExistsDestDir) { 346 TEST_F(FileSystemOperationTest, TestCopyFailureSrcFileExistsDestDir) {
336 // Src exists and is a file. Dest is a directory. 347 // Src exists and is a file. Dest is a directory.
337 ScopedTempDir src_dir; 348 ScopedTempDir src_dir;
338 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 349 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
339 FilePath src_file; 350 FilePath src_file;
340 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file); 351 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
341 352
342 ScopedTempDir dest_dir; 353 ScopedTempDir dest_dir;
343 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 354 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
344 355
345 operation()->Copy(src_file, dest_dir.path()); 356 operation()->Copy(URLForPath(src_file), URLForPath(dest_dir.path()));
346 MessageLoop::current()->RunAllPending(); 357 MessageLoop::current()->RunAllPending();
347 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status()); 358 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status());
348 } 359 }
349 360
350 TEST_F(FileSystemOperationTest, TestCopyFailureDestParentDoesntExist) { 361 TEST_F(FileSystemOperationTest, TestCopyFailureDestParentDoesntExist) {
351 // Dest. parent path does not exist. 362 // Dest. parent path does not exist.
352 ScopedTempDir dir; 363 ScopedTempDir dir;
353 ASSERT_TRUE(dir.CreateUniqueTempDir()); 364 ASSERT_TRUE(dir.CreateUniqueTempDir());
354 FilePath src_dir = dir.path(); 365 FilePath src_dir = dir.path();
355 366
356 FilePath nonexisting(base_.path().Append(FILE_PATH_LITERAL("DontExistDir"))); 367 FilePath nonexisting(base_.path().Append(FILE_PATH_LITERAL("DontExistDir")));
357 file_util::EnsureEndsWithSeparator(&nonexisting); 368 file_util::EnsureEndsWithSeparator(&nonexisting);
358 FilePath nonexisting_file = nonexisting.Append( 369 FilePath nonexisting_file = nonexisting.Append(
359 FILE_PATH_LITERAL("DontExistFile")); 370 FILE_PATH_LITERAL("DontExistFile"));
360 371
361 operation()->Copy(src_dir, nonexisting_file); 372 operation()->Copy(URLForPath(src_dir), URLForPath(nonexisting_file));
362 MessageLoop::current()->RunAllPending(); 373 MessageLoop::current()->RunAllPending();
363 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 374 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
364 } 375 }
365 376
366 TEST_F(FileSystemOperationTest, TestCopySuccessSrcFileAndOverwrite) { 377 TEST_F(FileSystemOperationTest, TestCopySuccessSrcFileAndOverwrite) {
367 ScopedTempDir src_dir; 378 ScopedTempDir src_dir;
368 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 379 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
369 FilePath src_file; 380 FilePath src_file;
370 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file); 381 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
371 382
372 ScopedTempDir dest_dir; 383 ScopedTempDir dest_dir;
373 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 384 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
374 FilePath dest_file; 385 FilePath dest_file;
375 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file); 386 file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file);
376 387
377 operation()->Copy(src_file, dest_file); 388 operation()->Copy(URLForPath(src_file), URLForPath(dest_file));
378 MessageLoop::current()->RunAllPending(); 389 MessageLoop::current()->RunAllPending();
379 EXPECT_EQ(kFileOperationSucceeded, status()); 390 EXPECT_EQ(kFileOperationSucceeded, status());
380 EXPECT_TRUE(FileExists(dest_file)); 391 EXPECT_TRUE(FileExists(dest_file));
381 } 392 }
382 393
383 TEST_F(FileSystemOperationTest, TestCopySuccessSrcFileAndNew) { 394 TEST_F(FileSystemOperationTest, TestCopySuccessSrcFileAndNew) {
384 ScopedTempDir src_dir; 395 ScopedTempDir src_dir;
385 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 396 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
386 FilePath src_file; 397 FilePath src_file;
387 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file); 398 file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
388 399
389 ScopedTempDir dest_dir; 400 ScopedTempDir dest_dir;
390 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 401 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
391 FilePath dest_file(dest_dir.path().Append(FILE_PATH_LITERAL("NewFile"))); 402 FilePath dest_file(dest_dir.path().Append(FILE_PATH_LITERAL("NewFile")));
392 403
393 operation()->Copy(src_file, dest_file); 404 operation()->Copy(URLForPath(src_file), URLForPath(dest_file));
394 MessageLoop::current()->RunAllPending(); 405 MessageLoop::current()->RunAllPending();
395 EXPECT_EQ(kFileOperationSucceeded, status()); 406 EXPECT_EQ(kFileOperationSucceeded, status());
396 EXPECT_TRUE(FileExists(dest_file)); 407 EXPECT_TRUE(FileExists(dest_file));
397 } 408 }
398 409
399 TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndOverwrite) { 410 TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndOverwrite) {
400 ScopedTempDir src_dir; 411 ScopedTempDir src_dir;
401 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 412 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
402 413
403 ScopedTempDir dest_dir; 414 ScopedTempDir dest_dir;
404 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 415 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
405 416
406 operation()->Copy(src_dir.path(), dest_dir.path()); 417 operation()->Copy(URLForPath(src_dir.path()), URLForPath(dest_dir.path()));
407 MessageLoop::current()->RunAllPending(); 418 MessageLoop::current()->RunAllPending();
408 EXPECT_EQ(kFileOperationSucceeded, status()); 419 EXPECT_EQ(kFileOperationSucceeded, status());
409 420
410 // Make sure we've overwritten but not copied the source under the |dest_dir|. 421 // Make sure we've overwritten but not copied the source under the |dest_dir|.
411 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path())); 422 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path()));
412 EXPECT_FALSE(file_util::DirectoryExists( 423 EXPECT_FALSE(file_util::DirectoryExists(
413 dest_dir.path().Append(src_dir.path().BaseName()))); 424 dest_dir.path().Append(src_dir.path().BaseName())));
414 } 425 }
415 426
416 TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndNew) { 427 TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndNew) {
417 ScopedTempDir src_dir; 428 ScopedTempDir src_dir;
418 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 429 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
419 430
420 ScopedTempDir dir; 431 ScopedTempDir dir;
421 ASSERT_TRUE(dir.CreateUniqueTempDir()); 432 ASSERT_TRUE(dir.CreateUniqueTempDir());
422 FilePath dest_dir(dir.path().Append(FILE_PATH_LITERAL("NewDirectory"))); 433 FilePath dest_dir(dir.path().Append(FILE_PATH_LITERAL("NewDirectory")));
423 434
424 operation()->Copy(src_dir.path(), dest_dir); 435 operation()->Copy(URLForPath(src_dir.path()), URLForPath(dest_dir));
425 MessageLoop::current()->RunAllPending(); 436 MessageLoop::current()->RunAllPending();
426 EXPECT_EQ(kFileOperationSucceeded, status()); 437 EXPECT_EQ(kFileOperationSucceeded, status());
427 EXPECT_TRUE(file_util::DirectoryExists(dest_dir)); 438 EXPECT_TRUE(file_util::DirectoryExists(dest_dir));
428 } 439 }
429 440
430 TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirRecursive) { 441 TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirRecursive) {
431 ScopedTempDir src_dir; 442 ScopedTempDir src_dir;
432 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 443 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
433 FilePath child_dir; 444 FilePath child_dir;
434 file_util::CreateTemporaryDirInDir(src_dir.path(), 445 file_util::CreateTemporaryDirInDir(src_dir.path(),
435 FILE_PATH_LITERAL("prefix"), &child_dir); 446 FILE_PATH_LITERAL("prefix"), &child_dir);
436 FilePath grandchild_file; 447 FilePath grandchild_file;
437 file_util::CreateTemporaryFileInDir(child_dir, &grandchild_file); 448 file_util::CreateTemporaryFileInDir(child_dir, &grandchild_file);
438 449
439 ScopedTempDir dest_dir; 450 ScopedTempDir dest_dir;
440 ASSERT_TRUE(dest_dir.CreateUniqueTempDir()); 451 ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
441 452
442 operation()->Copy(src_dir.path(), dest_dir.path()); 453 operation()->Copy(URLForPath(src_dir.path()), URLForPath(dest_dir.path()));
443 MessageLoop::current()->RunAllPending(); 454 MessageLoop::current()->RunAllPending();
444 EXPECT_EQ(kFileOperationSucceeded, status()); 455 EXPECT_EQ(kFileOperationSucceeded, status());
445 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path().Append( 456 EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path().Append(
446 child_dir.BaseName()))); 457 child_dir.BaseName())));
447 EXPECT_TRUE(FileExists(dest_dir.path().Append( 458 EXPECT_TRUE(FileExists(dest_dir.path().Append(
448 child_dir.BaseName()).Append( 459 child_dir.BaseName()).Append(
449 grandchild_file.BaseName()))); 460 grandchild_file.BaseName())));
450 } 461 }
451 462
452 TEST_F(FileSystemOperationTest, TestCreateFileFailure) { 463 TEST_F(FileSystemOperationTest, TestCreateFileFailure) {
453 // Already existing file and exclusive true. 464 // Already existing file and exclusive true.
454 ScopedTempDir dir; 465 ScopedTempDir dir;
455 ASSERT_TRUE(dir.CreateUniqueTempDir()); 466 ASSERT_TRUE(dir.CreateUniqueTempDir());
456 FilePath file; 467 FilePath file;
457 468
458 file_util::CreateTemporaryFileInDir(dir.path(), &file); 469 file_util::CreateTemporaryFileInDir(dir.path(), &file);
459 operation()->CreateFile(file, true); 470 operation()->CreateFile(URLForPath(file), true);
460 MessageLoop::current()->RunAllPending(); 471 MessageLoop::current()->RunAllPending();
461 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, status()); 472 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, status());
462 } 473 }
463 474
464 TEST_F(FileSystemOperationTest, TestCreateFileSuccessFileExists) { 475 TEST_F(FileSystemOperationTest, TestCreateFileSuccessFileExists) {
465 // Already existing file and exclusive false. 476 // Already existing file and exclusive false.
466 ScopedTempDir dir; 477 ScopedTempDir dir;
467 ASSERT_TRUE(dir.CreateUniqueTempDir()); 478 ASSERT_TRUE(dir.CreateUniqueTempDir());
468 FilePath file; 479 FilePath file;
469 file_util::CreateTemporaryFileInDir(dir.path(), &file); 480 file_util::CreateTemporaryFileInDir(dir.path(), &file);
470 481
471 operation()->CreateFile(file, false); 482 operation()->CreateFile(URLForPath(file), false);
472 MessageLoop::current()->RunAllPending(); 483 MessageLoop::current()->RunAllPending();
473 EXPECT_EQ(kFileOperationSucceeded, status()); 484 EXPECT_EQ(kFileOperationSucceeded, status());
474 EXPECT_TRUE(FileExists(file)); 485 EXPECT_TRUE(FileExists(file));
475 } 486 }
476 487
477 TEST_F(FileSystemOperationTest, TestCreateFileSuccessExclusive) { 488 TEST_F(FileSystemOperationTest, TestCreateFileSuccessExclusive) {
478 // File doesn't exist but exclusive is true. 489 // File doesn't exist but exclusive is true.
479 ScopedTempDir dir; 490 ScopedTempDir dir;
480 ASSERT_TRUE(dir.CreateUniqueTempDir()); 491 ASSERT_TRUE(dir.CreateUniqueTempDir());
481 FilePath file = dir.path().Append(FILE_PATH_LITERAL("FileDoesntExist")); 492 FilePath file = dir.path().Append(FILE_PATH_LITERAL("FileDoesntExist"));
482 operation()->CreateFile(file, true); 493 operation()->CreateFile(URLForPath(file), true);
483 MessageLoop::current()->RunAllPending(); 494 MessageLoop::current()->RunAllPending();
484 EXPECT_EQ(kFileOperationSucceeded, status()); 495 EXPECT_EQ(kFileOperationSucceeded, status());
485 EXPECT_TRUE(FileExists(file)); 496 EXPECT_TRUE(FileExists(file));
486 } 497 }
487 498
488 TEST_F(FileSystemOperationTest, TestCreateFileSuccessFileDoesntExist) { 499 TEST_F(FileSystemOperationTest, TestCreateFileSuccessFileDoesntExist) {
489 // Non existing file. 500 // Non existing file.
490 ScopedTempDir dir; 501 ScopedTempDir dir;
491 ASSERT_TRUE(dir.CreateUniqueTempDir()); 502 ASSERT_TRUE(dir.CreateUniqueTempDir());
492 FilePath file = dir.path().Append(FILE_PATH_LITERAL("FileDoesntExist")); 503 FilePath file = dir.path().Append(FILE_PATH_LITERAL("FileDoesntExist"));
493 operation()->CreateFile(file, false); 504 operation()->CreateFile(URLForPath(file), false);
494 MessageLoop::current()->RunAllPending(); 505 MessageLoop::current()->RunAllPending();
495 EXPECT_EQ(kFileOperationSucceeded, status()); 506 EXPECT_EQ(kFileOperationSucceeded, status());
496 } 507 }
497 508
498 TEST_F(FileSystemOperationTest, 509 TEST_F(FileSystemOperationTest,
499 TestCreateDirFailureDestParentDoesntExist) { 510 TestCreateDirFailureDestParentDoesntExist) {
500 // Dest. parent path does not exist. 511 // Dest. parent path does not exist.
501 FilePath nonexisting(base_.path().Append( 512 FilePath nonexisting(base_.path().Append(
502 FILE_PATH_LITERAL("DirDoesntExist"))); 513 FILE_PATH_LITERAL("DirDoesntExist")));
503 FilePath nonexisting_file = nonexisting.Append( 514 FilePath nonexisting_file = nonexisting.Append(
504 FILE_PATH_LITERAL("FileDoesntExist")); 515 FILE_PATH_LITERAL("FileDoesntExist"));
505 operation()->CreateDirectory(nonexisting_file, false, false); 516 operation()->CreateDirectory(URLForPath(nonexisting_file), false, false);
506 MessageLoop::current()->RunAllPending(); 517 MessageLoop::current()->RunAllPending();
507 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 518 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
508 } 519 }
509 520
510 TEST_F(FileSystemOperationTest, TestCreateDirFailureDirExists) { 521 TEST_F(FileSystemOperationTest, TestCreateDirFailureDirExists) {
511 // Exclusive and dir existing at path. 522 // Exclusive and dir existing at path.
512 ScopedTempDir src_dir; 523 ScopedTempDir src_dir;
513 ASSERT_TRUE(src_dir.CreateUniqueTempDir()); 524 ASSERT_TRUE(src_dir.CreateUniqueTempDir());
514 operation()->CreateDirectory(src_dir.path(), true, false); 525 operation()->CreateDirectory(URLForPath(src_dir.path()), true, false);
515 MessageLoop::current()->RunAllPending(); 526 MessageLoop::current()->RunAllPending();
516 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, status()); 527 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, status());
517 } 528 }
518 529
519 TEST_F(FileSystemOperationTest, TestCreateDirFailureFileExists) { 530 TEST_F(FileSystemOperationTest, TestCreateDirFailureFileExists) {
520 // Exclusive true and file existing at path. 531 // Exclusive true and file existing at path.
521 ScopedTempDir dir; 532 ScopedTempDir dir;
522 ASSERT_TRUE(dir.CreateUniqueTempDir()); 533 ASSERT_TRUE(dir.CreateUniqueTempDir());
523 FilePath file; 534 FilePath file;
524 file_util::CreateTemporaryFileInDir(dir.path(), &file); 535 file_util::CreateTemporaryFileInDir(dir.path(), &file);
525 operation()->CreateDirectory(file, true, false); 536 operation()->CreateDirectory(URLForPath(file), true, false);
526 MessageLoop::current()->RunAllPending(); 537 MessageLoop::current()->RunAllPending();
527 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, status()); 538 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, status());
528 } 539 }
529 540
530 TEST_F(FileSystemOperationTest, TestCreateDirSuccess) { 541 TEST_F(FileSystemOperationTest, TestCreateDirSuccess) {
531 // Dir exists and exclusive is false. 542 // Dir exists and exclusive is false.
532 ScopedTempDir dir; 543 ScopedTempDir dir;
533 ASSERT_TRUE(dir.CreateUniqueTempDir()); 544 ASSERT_TRUE(dir.CreateUniqueTempDir());
534 operation()->CreateDirectory(dir.path(), false, false); 545 operation()->CreateDirectory(URLForPath(dir.path()), false, false);
535 MessageLoop::current()->RunAllPending(); 546 MessageLoop::current()->RunAllPending();
536 EXPECT_EQ(kFileOperationSucceeded, status()); 547 EXPECT_EQ(kFileOperationSucceeded, status());
537 548
538 // Dir doesn't exist. 549 // Dir doesn't exist.
539 FilePath nonexisting_dir_path(base_.path().Append( 550 FilePath nonexisting_dir_path(base_.path().Append(
540 FILE_PATH_LITERAL("nonexistingdir"))); 551 FILE_PATH_LITERAL("nonexistingdir")));
541 operation()->CreateDirectory(nonexisting_dir_path, false, false); 552 operation()->CreateDirectory(URLForPath(nonexisting_dir_path), false, false);
542 MessageLoop::current()->RunAllPending(); 553 MessageLoop::current()->RunAllPending();
543 EXPECT_EQ(kFileOperationSucceeded, status()); 554 EXPECT_EQ(kFileOperationSucceeded, status());
544 EXPECT_TRUE(file_util::DirectoryExists(nonexisting_dir_path)); 555 EXPECT_TRUE(file_util::DirectoryExists(nonexisting_dir_path));
545 } 556 }
546 557
547 TEST_F(FileSystemOperationTest, TestCreateDirSuccessExclusive) { 558 TEST_F(FileSystemOperationTest, TestCreateDirSuccessExclusive) {
548 // Dir doesn't exist. 559 // Dir doesn't exist.
549 FilePath nonexisting_dir_path(base_.path().Append( 560 FilePath nonexisting_dir_path(base_.path().Append(
550 FILE_PATH_LITERAL("nonexistingdir"))); 561 FILE_PATH_LITERAL("nonexistingdir")));
551 562
552 operation()->CreateDirectory(nonexisting_dir_path, true, false); 563 operation()->CreateDirectory(URLForPath(nonexisting_dir_path), true, false);
553 MessageLoop::current()->RunAllPending(); 564 MessageLoop::current()->RunAllPending();
554 EXPECT_EQ(kFileOperationSucceeded, status()); 565 EXPECT_EQ(kFileOperationSucceeded, status());
555 EXPECT_TRUE(file_util::DirectoryExists(nonexisting_dir_path)); 566 EXPECT_TRUE(file_util::DirectoryExists(nonexisting_dir_path));
556 } 567 }
557 568
558 TEST_F(FileSystemOperationTest, TestExistsAndMetadataFailure) { 569 TEST_F(FileSystemOperationTest, TestExistsAndMetadataFailure) {
559 FilePath nonexisting_dir_path(base_.path().Append( 570 FilePath nonexisting_dir_path(base_.path().Append(
560 FILE_PATH_LITERAL("nonexistingdir"))); 571 FILE_PATH_LITERAL("nonexistingdir")));
561 operation()->GetMetadata(nonexisting_dir_path); 572 operation()->GetMetadata(URLForPath(nonexisting_dir_path));
562 MessageLoop::current()->RunAllPending(); 573 MessageLoop::current()->RunAllPending();
563 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 574 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
564 575
565 operation()->FileExists(nonexisting_dir_path); 576 operation()->FileExists(URLForPath(nonexisting_dir_path));
566 MessageLoop::current()->RunAllPending(); 577 MessageLoop::current()->RunAllPending();
567 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 578 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
568 579
569 file_util::EnsureEndsWithSeparator(&nonexisting_dir_path); 580 file_util::EnsureEndsWithSeparator(&nonexisting_dir_path);
570 operation()->DirectoryExists(nonexisting_dir_path); 581 operation()->DirectoryExists(URLForPath(nonexisting_dir_path));
571 MessageLoop::current()->RunAllPending(); 582 MessageLoop::current()->RunAllPending();
572 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 583 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
573 } 584 }
574 585
575 TEST_F(FileSystemOperationTest, TestExistsAndMetadataSuccess) { 586 TEST_F(FileSystemOperationTest, TestExistsAndMetadataSuccess) {
576 ScopedTempDir dir; 587 ScopedTempDir dir;
577 ASSERT_TRUE(dir.CreateUniqueTempDir()); 588 ASSERT_TRUE(dir.CreateUniqueTempDir());
578 589
579 operation()->DirectoryExists(dir.path()); 590 operation()->DirectoryExists(URLForPath(dir.path()));
580 MessageLoop::current()->RunAllPending(); 591 MessageLoop::current()->RunAllPending();
581 EXPECT_EQ(kFileOperationSucceeded, status()); 592 EXPECT_EQ(kFileOperationSucceeded, status());
582 593
583 operation()->GetMetadata(dir.path()); 594 operation()->GetMetadata(URLForPath(dir.path()));
584 MessageLoop::current()->RunAllPending(); 595 MessageLoop::current()->RunAllPending();
585 EXPECT_EQ(kFileOperationSucceeded, status()); 596 EXPECT_EQ(kFileOperationSucceeded, status());
586 EXPECT_TRUE(info().is_directory); 597 EXPECT_TRUE(info().is_directory);
587 EXPECT_EQ(dir.path(), path()); 598 EXPECT_EQ(dir.path(), path());
588 599
589 FilePath file; 600 FilePath file;
590 file_util::CreateTemporaryFileInDir(dir.path(), &file); 601 file_util::CreateTemporaryFileInDir(dir.path(), &file);
591 operation()->FileExists(file); 602 operation()->FileExists(URLForPath(file));
592 MessageLoop::current()->RunAllPending(); 603 MessageLoop::current()->RunAllPending();
593 EXPECT_EQ(kFileOperationSucceeded, status()); 604 EXPECT_EQ(kFileOperationSucceeded, status());
594 605
595 operation()->GetMetadata(file); 606 operation()->GetMetadata(URLForPath(file));
596 MessageLoop::current()->RunAllPending(); 607 MessageLoop::current()->RunAllPending();
597 EXPECT_EQ(kFileOperationSucceeded, status()); 608 EXPECT_EQ(kFileOperationSucceeded, status());
598 EXPECT_FALSE(info().is_directory); 609 EXPECT_FALSE(info().is_directory);
599 EXPECT_EQ(file, path()); 610 EXPECT_EQ(file, path());
600 } 611 }
601 612
602 TEST_F(FileSystemOperationTest, TestTypeMismatchErrors) { 613 TEST_F(FileSystemOperationTest, TestTypeMismatchErrors) {
603 ScopedTempDir dir; 614 ScopedTempDir dir;
604 ASSERT_TRUE(dir.CreateUniqueTempDir()); 615 ASSERT_TRUE(dir.CreateUniqueTempDir());
605 operation()->FileExists(dir.path()); 616 operation()->FileExists(URLForPath(dir.path()));
606 MessageLoop::current()->RunAllPending(); 617 MessageLoop::current()->RunAllPending();
607 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status()); 618 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE, status());
608 619
609 FilePath file; 620 FilePath file;
610 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(dir.path(), &file)); 621 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(dir.path(), &file));
611 operation()->DirectoryExists(file); 622 operation()->DirectoryExists(URLForPath(file));
612 MessageLoop::current()->RunAllPending(); 623 MessageLoop::current()->RunAllPending();
613 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status()); 624 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY, status());
614 } 625 }
615 626
616 TEST_F(FileSystemOperationTest, TestReadDirFailure) { 627 TEST_F(FileSystemOperationTest, TestReadDirFailure) {
617 // Path doesn't exist 628 // Path doesn't exist
618 FilePath nonexisting_dir_path(base_.path().Append( 629 FilePath nonexisting_dir_path(base_.path().Append(
619 FILE_PATH_LITERAL("NonExistingDir"))); 630 FILE_PATH_LITERAL("NonExistingDir")));
620 file_util::EnsureEndsWithSeparator(&nonexisting_dir_path); 631 file_util::EnsureEndsWithSeparator(&nonexisting_dir_path);
621 operation()->ReadDirectory(nonexisting_dir_path); 632 operation()->ReadDirectory(URLForPath(nonexisting_dir_path));
622 MessageLoop::current()->RunAllPending(); 633 MessageLoop::current()->RunAllPending();
623 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 634 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
624 635
625 // File exists. 636 // File exists.
626 ScopedTempDir dir; 637 ScopedTempDir dir;
627 ASSERT_TRUE(dir.CreateUniqueTempDir()); 638 ASSERT_TRUE(dir.CreateUniqueTempDir());
628 FilePath file; 639 FilePath file;
629 file_util::CreateTemporaryFileInDir(dir.path(), &file); 640 file_util::CreateTemporaryFileInDir(dir.path(), &file);
630 operation()->ReadDirectory(file); 641 operation()->ReadDirectory(URLForPath(file));
631 MessageLoop::current()->RunAllPending(); 642 MessageLoop::current()->RunAllPending();
632 // TODO(kkanetkar) crbug.com/54309 to change the error code. 643 // TODO(kkanetkar) crbug.com/54309 to change the error code.
633 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 644 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
634 } 645 }
635 646
636 TEST_F(FileSystemOperationTest, TestReadDirSuccess) { 647 TEST_F(FileSystemOperationTest, TestReadDirSuccess) {
637 // parent_dir 648 // parent_dir
638 // | | 649 // | |
639 // child_dir child_file 650 // child_dir child_file
640 // Verify reading parent_dir. 651 // Verify reading parent_dir.
641 ScopedTempDir parent_dir; 652 ScopedTempDir parent_dir;
642 ASSERT_TRUE(parent_dir.CreateUniqueTempDir()); 653 ASSERT_TRUE(parent_dir.CreateUniqueTempDir());
643 FilePath child_file; 654 FilePath child_file;
644 file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file); 655 file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file);
645 FilePath child_dir; 656 FilePath child_dir;
646 ASSERT_TRUE(file_util::CreateTemporaryDirInDir( 657 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(
647 parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir)); 658 parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir));
648 659
649 operation()->ReadDirectory(parent_dir.path()); 660 operation()->ReadDirectory(URLForPath(parent_dir.path()));
650 MessageLoop::current()->RunAllPending(); 661 MessageLoop::current()->RunAllPending();
651 EXPECT_EQ(kFileOperationStatusNotSet, status()); 662 EXPECT_EQ(kFileOperationStatusNotSet, status());
652 EXPECT_EQ(2u, entries().size()); 663 EXPECT_EQ(2u, entries().size());
653 664
654 for (size_t i = 0; i < entries().size(); ++i) { 665 for (size_t i = 0; i < entries().size(); ++i) {
655 if (entries()[i].is_directory) { 666 if (entries()[i].is_directory) {
656 EXPECT_EQ(child_dir.BaseName().value(), 667 EXPECT_EQ(child_dir.BaseName().value(),
657 entries()[i].name); 668 entries()[i].name);
658 } else { 669 } else {
659 EXPECT_EQ(child_file.BaseName().value(), 670 EXPECT_EQ(child_file.BaseName().value(),
660 entries()[i].name); 671 entries()[i].name);
661 } 672 }
662 } 673 }
663 } 674 }
664 675
665 TEST_F(FileSystemOperationTest, TestRemoveFailure) { 676 TEST_F(FileSystemOperationTest, TestRemoveFailure) {
666 // Path doesn't exist. 677 // Path doesn't exist.
667 FilePath nonexisting(base_.path().Append( 678 FilePath nonexisting(base_.path().Append(
668 FILE_PATH_LITERAL("NonExistingDir"))); 679 FILE_PATH_LITERAL("NonExistingDir")));
669 file_util::EnsureEndsWithSeparator(&nonexisting); 680 file_util::EnsureEndsWithSeparator(&nonexisting);
670 681
671 operation()->Remove(nonexisting, false /* recursive */); 682 operation()->Remove(URLForPath(nonexisting), false /* recursive */);
672 MessageLoop::current()->RunAllPending(); 683 MessageLoop::current()->RunAllPending();
673 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status()); 684 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, status());
674 685
675 // It's an error to try to remove a non-empty directory if recursive flag 686 // It's an error to try to remove a non-empty directory if recursive flag
676 // is false. 687 // is false.
677 // parent_dir 688 // parent_dir
678 // | | 689 // | |
679 // child_dir child_file 690 // child_dir child_file
680 // Verify deleting parent_dir. 691 // Verify deleting parent_dir.
681 ScopedTempDir parent_dir; 692 ScopedTempDir parent_dir;
682 ASSERT_TRUE(parent_dir.CreateUniqueTempDir()); 693 ASSERT_TRUE(parent_dir.CreateUniqueTempDir());
683 FilePath child_file; 694 FilePath child_file;
684 file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file); 695 file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file);
685 FilePath child_dir; 696 FilePath child_dir;
686 ASSERT_TRUE(file_util::CreateTemporaryDirInDir( 697 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(
687 parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir)); 698 parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir));
688 699
689 operation()->Remove(parent_dir.path(), false /* recursive */); 700 operation()->Remove(URLForPath(parent_dir.path()), false /* recursive */);
690 MessageLoop::current()->RunAllPending(); 701 MessageLoop::current()->RunAllPending();
691 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, 702 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY,
692 status()); 703 status());
693 } 704 }
694 705
695 TEST_F(FileSystemOperationTest, TestRemoveSuccess) { 706 TEST_F(FileSystemOperationTest, TestRemoveSuccess) {
696 ScopedTempDir empty_dir; 707 ScopedTempDir empty_dir;
697 ASSERT_TRUE(empty_dir.CreateUniqueTempDir()); 708 ASSERT_TRUE(empty_dir.CreateUniqueTempDir());
698 EXPECT_TRUE(file_util::DirectoryExists(empty_dir.path())); 709 EXPECT_TRUE(file_util::DirectoryExists(empty_dir.path()));
699 710
700 operation()->Remove(empty_dir.path(), false /* recursive */); 711 operation()->Remove(URLForPath(empty_dir.path()), false /* recursive */);
701 MessageLoop::current()->RunAllPending(); 712 MessageLoop::current()->RunAllPending();
702 EXPECT_EQ(kFileOperationSucceeded, status()); 713 EXPECT_EQ(kFileOperationSucceeded, status());
703 EXPECT_FALSE(file_util::DirectoryExists(empty_dir.path())); 714 EXPECT_FALSE(file_util::DirectoryExists(empty_dir.path()));
704 715
705 // Removing a non-empty directory with recursive flag == true should be ok. 716 // Removing a non-empty directory with recursive flag == true should be ok.
706 // parent_dir 717 // parent_dir
707 // | | 718 // | |
708 // child_dir child_file 719 // child_dir child_file
709 // Verify deleting parent_dir. 720 // Verify deleting parent_dir.
710 ScopedTempDir parent_dir; 721 ScopedTempDir parent_dir;
711 ASSERT_TRUE(parent_dir.CreateUniqueTempDir()); 722 ASSERT_TRUE(parent_dir.CreateUniqueTempDir());
712 FilePath child_file; 723 FilePath child_file;
713 file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file); 724 file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file);
714 FilePath child_dir; 725 FilePath child_dir;
715 ASSERT_TRUE(file_util::CreateTemporaryDirInDir( 726 ASSERT_TRUE(file_util::CreateTemporaryDirInDir(
716 parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir)); 727 parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir));
717 728
718 operation()->Remove(parent_dir.path(), true /* recursive */); 729 operation()->Remove(URLForPath(parent_dir.path()), true /* recursive */);
719 MessageLoop::current()->RunAllPending(); 730 MessageLoop::current()->RunAllPending();
720 EXPECT_EQ(kFileOperationSucceeded, status()); 731 EXPECT_EQ(kFileOperationSucceeded, status());
721 EXPECT_FALSE(file_util::DirectoryExists(parent_dir.path())); 732 EXPECT_FALSE(file_util::DirectoryExists(parent_dir.path()));
722 } 733 }
723 734
724 TEST_F(FileSystemOperationTest, TestTruncate) { 735 TEST_F(FileSystemOperationTest, TestTruncate) {
725 ScopedTempDir dir; 736 ScopedTempDir dir;
726 ASSERT_TRUE(dir.CreateUniqueTempDir()); 737 ASSERT_TRUE(dir.CreateUniqueTempDir());
727 FilePath file; 738 FilePath file;
728 file_util::CreateTemporaryFileInDir(dir.path(), &file); 739 file_util::CreateTemporaryFileInDir(dir.path(), &file);
729 740
730 char test_data[] = "test data"; 741 char test_data[] = "test data";
731 int data_size = static_cast<int>(sizeof(test_data)); 742 int data_size = static_cast<int>(sizeof(test_data));
732 EXPECT_EQ(data_size, 743 EXPECT_EQ(data_size,
733 file_util::WriteFile(file, test_data, data_size)); 744 file_util::WriteFile(file, test_data, data_size));
734 745
735 // Check that its length is the size of the data written. 746 // Check that its length is the size of the data written.
736 operation()->GetMetadata(file); 747 operation()->GetMetadata(URLForPath(file));
737 MessageLoop::current()->RunAllPending(); 748 MessageLoop::current()->RunAllPending();
738 EXPECT_EQ(kFileOperationSucceeded, status()); 749 EXPECT_EQ(kFileOperationSucceeded, status());
739 EXPECT_FALSE(info().is_directory); 750 EXPECT_FALSE(info().is_directory);
740 EXPECT_EQ(data_size, info().size); 751 EXPECT_EQ(data_size, info().size);
741 752
742 // Extend the file by truncating it. 753 // Extend the file by truncating it.
743 int length = 17; 754 int length = 17;
744 operation()->Truncate(file, length); 755 operation()->Truncate(URLForPath(file), length);
745 MessageLoop::current()->RunAllPending(); 756 MessageLoop::current()->RunAllPending();
746 EXPECT_EQ(kFileOperationSucceeded, status()); 757 EXPECT_EQ(kFileOperationSucceeded, status());
747 758
748 // Check that its length is now 17 and that it's all zeroes after the test 759 // Check that its length is now 17 and that it's all zeroes after the test
749 // data. 760 // data.
750 base::PlatformFileInfo info; 761 base::PlatformFileInfo info;
751 762
752 EXPECT_TRUE(file_util::GetFileInfo(file, &info)); 763 EXPECT_TRUE(file_util::GetFileInfo(file, &info));
753 EXPECT_EQ(length, info.size); 764 EXPECT_EQ(length, info.size);
754 char data[100]; 765 char data[100];
755 EXPECT_EQ(length, file_util::ReadFile(file, data, length)); 766 EXPECT_EQ(length, file_util::ReadFile(file, data, length));
756 for (int i = 0; i < length; ++i) { 767 for (int i = 0; i < length; ++i) {
757 if (i < static_cast<int>(sizeof(test_data))) 768 if (i < static_cast<int>(sizeof(test_data)))
758 EXPECT_EQ(test_data[i], data[i]); 769 EXPECT_EQ(test_data[i], data[i]);
759 else 770 else
760 EXPECT_EQ(0, data[i]); 771 EXPECT_EQ(0, data[i]);
761 } 772 }
762 773
763 // Shorten the file by truncating it. 774 // Shorten the file by truncating it.
764 length = 3; 775 length = 3;
765 operation()->Truncate(file, length); 776 operation()->Truncate(URLForPath(file), length);
766 MessageLoop::current()->RunAllPending(); 777 MessageLoop::current()->RunAllPending();
767 EXPECT_EQ(kFileOperationSucceeded, status()); 778 EXPECT_EQ(kFileOperationSucceeded, status());
768 779
769 // Check that its length is now 3 and that it contains only bits of test data. 780 // Check that its length is now 3 and that it contains only bits of test data.
770 EXPECT_TRUE(file_util::GetFileInfo(file, &info)); 781 EXPECT_TRUE(file_util::GetFileInfo(file, &info));
771 EXPECT_EQ(length, info.size); 782 EXPECT_EQ(length, info.size);
772 EXPECT_EQ(length, file_util::ReadFile(file, data, length)); 783 EXPECT_EQ(length, file_util::ReadFile(file, data, length));
773 for (int i = 0; i < length; ++i) 784 for (int i = 0; i < length; ++i)
774 EXPECT_EQ(test_data[i], data[i]); 785 EXPECT_EQ(test_data[i], data[i]);
775 } 786 }
776 787
777 } // namespace fileapi 788 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/file_system_operation.cc ('k') | webkit/fileapi/file_system_operation_write_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698