OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |