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

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

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

Powered by Google App Engine
This is Rietveld 408576698