| 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 |