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

Side by Side Diff: webkit/browser/fileapi/file_writer_delegate_unittest.cc

Issue 16311010: Make FileSystemOperation::Write take closure-friendly parameters (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 15 matching lines...) Expand all
26 #include "webkit/browser/fileapi/mock_file_system_context.h" 26 #include "webkit/browser/fileapi/mock_file_system_context.h"
27 #include "webkit/browser/fileapi/sandbox_file_stream_writer.h" 27 #include "webkit/browser/fileapi/sandbox_file_stream_writer.h"
28 28
29 namespace fileapi { 29 namespace fileapi {
30 30
31 namespace { 31 namespace {
32 32
33 const GURL kOrigin("http://example.com"); 33 const GURL kOrigin("http://example.com");
34 const FileSystemType kFileSystemType = kFileSystemTypeTest; 34 const FileSystemType kFileSystemType = kFileSystemTypeTest;
35 35
36 const char kData[] = "The quick brown fox jumps over the lazy dog.\n";
37 const int kDataSize = ARRAYSIZE_UNSAFE(kData) - 1;
38
36 class Result { 39 class Result {
37 public: 40 public:
38 Result() 41 Result()
39 : status_(base::PLATFORM_FILE_OK), 42 : status_(base::PLATFORM_FILE_OK),
40 bytes_written_(0), 43 bytes_written_(0),
41 write_status_(FileWriterDelegate::SUCCESS_IO_PENDING) {} 44 write_status_(FileWriterDelegate::SUCCESS_IO_PENDING) {}
42 45
43 base::PlatformFileError status() const { return status_; } 46 base::PlatformFileError status() const { return status_; }
44 int64 bytes_written() const { return bytes_written_; } 47 int64 bytes_written() const { return bytes_written_; }
45 FileWriterDelegate::WriteProgressStatus write_status() const { 48 FileWriterDelegate::WriteProgressStatus write_status() const {
(...skipping 14 matching lines...) Expand all
60 } 63 }
61 } 64 }
62 65
63 private: 66 private:
64 // For post-operation status. 67 // For post-operation status.
65 base::PlatformFileError status_; 68 base::PlatformFileError status_;
66 int64 bytes_written_; 69 int64 bytes_written_;
67 FileWriterDelegate::WriteProgressStatus write_status_; 70 FileWriterDelegate::WriteProgressStatus write_status_;
68 }; 71 };
69 72
70 const char kData[] = "The quick brown fox jumps over the lazy dog.\n";
71 const int kDataSize = ARRAYSIZE_UNSAFE(kData) - 1;
72
73 } // namespace (anonymous) 73 } // namespace (anonymous)
74 74
75 class FileWriterDelegateTest : public PlatformTest { 75 class FileWriterDelegateTest : public PlatformTest {
76 public: 76 public:
77 FileWriterDelegateTest() 77 FileWriterDelegateTest()
78 : loop_(base::MessageLoop::TYPE_IO) {} 78 : loop_(base::MessageLoop::TYPE_IO) {}
79 79
80 protected: 80 protected:
81 virtual void SetUp() OVERRIDE; 81 virtual void SetUp() OVERRIDE;
82 virtual void TearDown() OVERRIDE; 82 virtual void TearDown() OVERRIDE;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 new FileSystemOperationContext(file_system_context_.get()); 116 new FileSystemOperationContext(file_system_context_.get());
117 context->set_update_observers( 117 context->set_update_observers(
118 *file_system_context_->GetUpdateObservers(kFileSystemType)); 118 *file_system_context_->GetUpdateObservers(kFileSystemType));
119 context->set_root_path(dir_.path()); 119 context->set_root_path(dir_.path());
120 return make_scoped_ptr(context); 120 return make_scoped_ptr(context);
121 } 121 }
122 122
123 FileWriterDelegate* CreateWriterDelegate( 123 FileWriterDelegate* CreateWriterDelegate(
124 const char* test_file_path, 124 const char* test_file_path,
125 int64 offset, 125 int64 offset,
126 int64 allowed_growth, 126 int64 allowed_growth) {
127 Result* result) {
128 SandboxFileStreamWriter* writer = new SandboxFileStreamWriter( 127 SandboxFileStreamWriter* writer = new SandboxFileStreamWriter(
129 file_system_context_.get(), 128 file_system_context_.get(),
130 GetFileSystemURL(test_file_path), 129 GetFileSystemURL(test_file_path),
131 offset, 130 offset,
132 *file_system_context_->GetUpdateObservers(kFileSystemType)); 131 *file_system_context_->GetUpdateObservers(kFileSystemType));
133 writer->set_default_quota(allowed_growth); 132 writer->set_default_quota(allowed_growth);
134 return new FileWriterDelegate( 133 return new FileWriterDelegate(scoped_ptr<FileStreamWriter>(writer));
135 base::Bind(&Result::DidWrite, base::Unretained(result)), 134 }
136 scoped_ptr<FileStreamWriter>(writer)); 135
136 FileWriterDelegate::DelegateWriteCallback GetWriteCallback(Result* result) {
137 return base::Bind(&Result::DidWrite, base::Unretained(result));
137 } 138 }
138 139
139 // Creates and sets up a FileWriterDelegate for writing the given |blob_url|, 140 // Creates and sets up a FileWriterDelegate for writing the given |blob_url|,
140 // and creates a new FileWriterDelegate for the file. 141 // and creates a new FileWriterDelegate for the file.
141 void PrepareForWrite(const char* test_file_path, 142 void PrepareForWrite(const char* test_file_path,
142 const GURL& blob_url, 143 const GURL& blob_url,
143 int64 offset, 144 int64 offset,
144 int64 allowed_growth) { 145 int64 allowed_growth) {
145 result_.reset(new Result());
146 file_writer_delegate_.reset( 146 file_writer_delegate_.reset(
147 CreateWriterDelegate(test_file_path, offset, allowed_growth, 147 CreateWriterDelegate(test_file_path, offset, allowed_growth));
148 result_.get()));
149 request_.reset(empty_context_.CreateRequest( 148 request_.reset(empty_context_.CreateRequest(
150 blob_url, file_writer_delegate_.get())); 149 blob_url, file_writer_delegate_.get()));
151 } 150 }
152 151
153 static net::URLRequest::ProtocolFactory Factory; 152 static net::URLRequest::ProtocolFactory Factory;
154 153
155 // This should be alive until the very end of this instance. 154 // This should be alive until the very end of this instance.
156 base::MessageLoop loop_; 155 base::MessageLoop loop_;
157 156
158 scoped_refptr<FileSystemContext> file_system_context_; 157 scoped_refptr<FileSystemContext> file_system_context_;
159 158
160 net::URLRequestContext empty_context_; 159 net::URLRequestContext empty_context_;
161 scoped_ptr<FileWriterDelegate> file_writer_delegate_; 160 scoped_ptr<FileWriterDelegate> file_writer_delegate_;
162 scoped_ptr<net::URLRequest> request_; 161 scoped_ptr<net::URLRequest> request_;
163 scoped_ptr<Result> result_;
164 162
165 base::ScopedTempDir dir_; 163 base::ScopedTempDir dir_;
166 164
167 static const char* content_; 165 static const char* content_;
168 }; 166 };
169 167
170 const char* FileWriterDelegateTest::content_ = NULL; 168 const char* FileWriterDelegateTest::content_ = NULL;
171 169
172 namespace { 170 namespace {
173 171
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 file_system_context_ = NULL; 250 file_system_context_ = NULL;
253 base::MessageLoop::current()->RunUntilIdle(); 251 base::MessageLoop::current()->RunUntilIdle();
254 } 252 }
255 253
256 TEST_F(FileWriterDelegateTest, WriteSuccessWithoutQuotaLimit) { 254 TEST_F(FileWriterDelegateTest, WriteSuccessWithoutQuotaLimit) {
257 const GURL kBlobURL("blob:nolimit"); 255 const GURL kBlobURL("blob:nolimit");
258 content_ = kData; 256 content_ = kData;
259 257
260 PrepareForWrite("test", kBlobURL, 0, kint64max); 258 PrepareForWrite("test", kBlobURL, 0, kint64max);
261 259
260 Result result;
262 ASSERT_EQ(0, usage()); 261 ASSERT_EQ(0, usage());
263 file_writer_delegate_->Start(request_.Pass()); 262 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
264 base::MessageLoop::current()->Run(); 263 base::MessageLoop::current()->Run();
265 264
266 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 265 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
267 file_writer_delegate_.reset(); 266 file_writer_delegate_.reset();
268 267
269 ASSERT_EQ(kDataSize, usage()); 268 ASSERT_EQ(kDataSize, usage());
270 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 269 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
271 EXPECT_EQ(kDataSize, result_->bytes_written()); 270 EXPECT_EQ(kDataSize, result.bytes_written());
272 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 271 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
273 } 272 }
274 273
275 TEST_F(FileWriterDelegateTest, WriteSuccessWithJustQuota) { 274 TEST_F(FileWriterDelegateTest, WriteSuccessWithJustQuota) {
276 const GURL kBlobURL("blob:just"); 275 const GURL kBlobURL("blob:just");
277 content_ = kData; 276 content_ = kData;
278 const int64 kAllowedGrowth = kDataSize; 277 const int64 kAllowedGrowth = kDataSize;
279 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); 278 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth);
280 279
280 Result result;
281 ASSERT_EQ(0, usage()); 281 ASSERT_EQ(0, usage());
282 file_writer_delegate_->Start(request_.Pass()); 282 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
283 base::MessageLoop::current()->Run(); 283 base::MessageLoop::current()->Run();
284 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 284 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
285 file_writer_delegate_.reset(); 285 file_writer_delegate_.reset();
286 286
287 ASSERT_EQ(kAllowedGrowth, usage()); 287 ASSERT_EQ(kAllowedGrowth, usage());
288 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 288 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
289 289
290 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); 290 EXPECT_EQ(kAllowedGrowth, result.bytes_written());
291 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 291 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
292 } 292 }
293 293
294 TEST_F(FileWriterDelegateTest, DISABLED_WriteFailureByQuota) { 294 TEST_F(FileWriterDelegateTest, DISABLED_WriteFailureByQuota) {
295 const GURL kBlobURL("blob:failure"); 295 const GURL kBlobURL("blob:failure");
296 content_ = kData; 296 content_ = kData;
297 const int64 kAllowedGrowth = kDataSize - 1; 297 const int64 kAllowedGrowth = kDataSize - 1;
298 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); 298 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth);
299 299
300 Result result;
300 ASSERT_EQ(0, usage()); 301 ASSERT_EQ(0, usage());
301 file_writer_delegate_->Start(request_.Pass()); 302 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
302 base::MessageLoop::current()->Run(); 303 base::MessageLoop::current()->Run();
303 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result_->write_status()); 304 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status());
304 file_writer_delegate_.reset(); 305 file_writer_delegate_.reset();
305 306
306 ASSERT_EQ(kAllowedGrowth, usage()); 307 ASSERT_EQ(kAllowedGrowth, usage());
307 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 308 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
308 309
309 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); 310 EXPECT_EQ(kAllowedGrowth, result.bytes_written());
310 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result_->status()); 311 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result.status());
311 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result_->write_status()); 312 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status());
312 } 313 }
313 314
314 TEST_F(FileWriterDelegateTest, WriteZeroBytesSuccessfullyWithZeroQuota) { 315 TEST_F(FileWriterDelegateTest, WriteZeroBytesSuccessfullyWithZeroQuota) {
315 const GURL kBlobURL("blob:zero"); 316 const GURL kBlobURL("blob:zero");
316 content_ = ""; 317 content_ = "";
317 int64 kAllowedGrowth = 0; 318 int64 kAllowedGrowth = 0;
318 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); 319 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth);
319 320
321 Result result;
320 ASSERT_EQ(0, usage()); 322 ASSERT_EQ(0, usage());
321 file_writer_delegate_->Start(request_.Pass()); 323 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
322 base::MessageLoop::current()->Run(); 324 base::MessageLoop::current()->Run();
323 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 325 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
324 file_writer_delegate_.reset(); 326 file_writer_delegate_.reset();
325 327
326 ASSERT_EQ(kAllowedGrowth, usage()); 328 ASSERT_EQ(kAllowedGrowth, usage());
327 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 329 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
328 330
329 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); 331 EXPECT_EQ(kAllowedGrowth, result.bytes_written());
330 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 332 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
331 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 333 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
332 } 334 }
333 335
334 TEST_F(FileWriterDelegateTest, WriteSuccessWithoutQuotaLimitConcurrent) { 336 TEST_F(FileWriterDelegateTest, WriteSuccessWithoutQuotaLimitConcurrent) {
335 scoped_ptr<FileWriterDelegate> file_writer_delegate2; 337 scoped_ptr<FileWriterDelegate> file_writer_delegate2;
336 scoped_ptr<net::URLRequest> request2; 338 scoped_ptr<net::URLRequest> request2;
337 scoped_ptr<Result> result2;
338 339
339 bool created = false; 340 bool created = false;
340 file_util()->EnsureFileExists(NewOperationContext().get(), 341 file_util()->EnsureFileExists(NewOperationContext().get(),
341 GetFileSystemURL("test2"), 342 GetFileSystemURL("test2"),
342 &created); 343 &created);
343 ASSERT_TRUE(created); 344 ASSERT_TRUE(created);
344 345
345 const GURL kBlobURL("blob:nolimitconcurrent"); 346 const GURL kBlobURL("blob:nolimitconcurrent");
346 const GURL kBlobURL2("blob:nolimitconcurrent2"); 347 const GURL kBlobURL2("blob:nolimitconcurrent2");
347 content_ = kData; 348 content_ = kData;
348 349
349 PrepareForWrite("test", kBlobURL, 0, kint64max); 350 PrepareForWrite("test", kBlobURL, 0, kint64max);
350 351
351 // Credate another FileWriterDelegate for concurrent write. 352 // Credate another FileWriterDelegate for concurrent write.
352 result2.reset(new Result()); 353 file_writer_delegate2.reset(CreateWriterDelegate("test2", 0, kint64max));
353 file_writer_delegate2.reset(CreateWriterDelegate(
354 "test2", 0, kint64max, result2.get()));
355 request2.reset(empty_context_.CreateRequest( 354 request2.reset(empty_context_.CreateRequest(
356 kBlobURL2, file_writer_delegate2.get())); 355 kBlobURL2, file_writer_delegate2.get()));
357 356
357 Result result, result2;
358 ASSERT_EQ(0, usage()); 358 ASSERT_EQ(0, usage());
359 file_writer_delegate_->Start(request_.Pass()); 359 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
360 file_writer_delegate2->Start(request2.Pass()); 360 file_writer_delegate2->Start(request2.Pass(), GetWriteCallback(&result2));
361 base::MessageLoop::current()->Run(); 361 base::MessageLoop::current()->Run();
362 if (result_->write_status() == FileWriterDelegate::SUCCESS_IO_PENDING || 362 if (result.write_status() == FileWriterDelegate::SUCCESS_IO_PENDING ||
363 result2->write_status() == FileWriterDelegate::SUCCESS_IO_PENDING) 363 result2.write_status() == FileWriterDelegate::SUCCESS_IO_PENDING)
364 base::MessageLoop::current()->Run(); 364 base::MessageLoop::current()->Run();
365 365
366 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 366 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
367 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result2->write_status()); 367 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result2.write_status());
368 file_writer_delegate_.reset(); 368 file_writer_delegate_.reset();
369 file_writer_delegate2.reset(); 369 file_writer_delegate2.reset();
370 370
371 ASSERT_EQ(kDataSize * 2, usage()); 371 ASSERT_EQ(kDataSize * 2, usage());
372 EXPECT_EQ(GetFileSizeOnDisk("test") + GetFileSizeOnDisk("test2"), usage()); 372 EXPECT_EQ(GetFileSizeOnDisk("test") + GetFileSizeOnDisk("test2"), usage());
373 373
374 EXPECT_EQ(kDataSize, result_->bytes_written()); 374 EXPECT_EQ(kDataSize, result.bytes_written());
375 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 375 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
376 EXPECT_EQ(kDataSize, result2->bytes_written()); 376 EXPECT_EQ(kDataSize, result2.bytes_written());
377 EXPECT_EQ(base::PLATFORM_FILE_OK, result2->status()); 377 EXPECT_EQ(base::PLATFORM_FILE_OK, result2.status());
378 } 378 }
379 379
380 TEST_F(FileWriterDelegateTest, WritesWithQuotaAndOffset) { 380 TEST_F(FileWriterDelegateTest, WritesWithQuotaAndOffset) {
381 const GURL kBlobURL("blob:failure-with-updated-quota"); 381 const GURL kBlobURL("blob:failure-with-updated-quota");
382 content_ = kData; 382 content_ = kData;
383 383
384 // Writing kDataSize (=45) bytes data while allowed_growth is 100. 384 // Writing kDataSize (=45) bytes data while allowed_growth is 100.
385 int64 offset = 0; 385 int64 offset = 0;
386 int64 allowed_growth = 100; 386 int64 allowed_growth = 100;
387 ASSERT_LT(kDataSize, allowed_growth); 387 ASSERT_LT(kDataSize, allowed_growth);
388 PrepareForWrite("test", kBlobURL, offset, allowed_growth); 388 PrepareForWrite("test", kBlobURL, offset, allowed_growth);
389 389
390 ASSERT_EQ(0, usage()); 390 {
391 file_writer_delegate_->Start(request_.Pass()); 391 Result result;
392 base::MessageLoop::current()->Run(); 392 ASSERT_EQ(0, usage());
393 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 393 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
394 file_writer_delegate_.reset(); 394 base::MessageLoop::current()->Run();
395 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
396 file_writer_delegate_.reset();
395 397
396 ASSERT_EQ(kDataSize, usage()); 398 ASSERT_EQ(kDataSize, usage());
397 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 399 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
398 EXPECT_EQ(kDataSize, result_->bytes_written()); 400 EXPECT_EQ(kDataSize, result.bytes_written());
399 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 401 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
402 }
400 403
401 // Trying to overwrite kDataSize bytes data while allowed_growth is 20. 404 // Trying to overwrite kDataSize bytes data while allowed_growth is 20.
402 offset = 0; 405 offset = 0;
403 allowed_growth = 20; 406 allowed_growth = 20;
404 PrepareForWrite("test", kBlobURL, offset, allowed_growth); 407 PrepareForWrite("test", kBlobURL, offset, allowed_growth);
405 408
406 file_writer_delegate_->Start(request_.Pass()); 409 {
407 base::MessageLoop::current()->Run(); 410 Result result;
408 EXPECT_EQ(kDataSize, usage()); 411 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
409 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 412 base::MessageLoop::current()->Run();
410 EXPECT_EQ(kDataSize, result_->bytes_written()); 413 EXPECT_EQ(kDataSize, usage());
411 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 414 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
412 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 415 EXPECT_EQ(kDataSize, result.bytes_written());
416 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
417 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
418 }
413 419
414 // Trying to write kDataSize bytes data from offset 25 while 420 // Trying to write kDataSize bytes data from offset 25 while
415 // allowed_growth is 55. 421 // allowed_growth is 55.
416 offset = 25; 422 offset = 25;
417 allowed_growth = 55; 423 allowed_growth = 55;
418 PrepareForWrite("test", kBlobURL, offset, allowed_growth); 424 PrepareForWrite("test", kBlobURL, offset, allowed_growth);
419 425
420 file_writer_delegate_->Start(request_.Pass()); 426 {
421 base::MessageLoop::current()->Run(); 427 Result result;
422 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 428 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
423 file_writer_delegate_.reset(); 429 base::MessageLoop::current()->Run();
430 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
431 file_writer_delegate_.reset();
424 432
425 EXPECT_EQ(offset + kDataSize, usage()); 433 EXPECT_EQ(offset + kDataSize, usage());
426 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 434 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
427 EXPECT_EQ(kDataSize, result_->bytes_written()); 435 EXPECT_EQ(kDataSize, result.bytes_written());
428 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 436 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
437 }
429 438
430 // Trying to overwrite 45 bytes data while allowed_growth is -20. 439 // Trying to overwrite 45 bytes data while allowed_growth is -20.
431 offset = 0; 440 offset = 0;
432 allowed_growth = -20; 441 allowed_growth = -20;
433 PrepareForWrite("test", kBlobURL, offset, allowed_growth); 442 PrepareForWrite("test", kBlobURL, offset, allowed_growth);
443 int64 pre_write_usage = GetFileSizeOnDisk("test");
434 444
435 int64 pre_write_usage = GetFileSizeOnDisk("test"); 445 {
436 file_writer_delegate_->Start(request_.Pass()); 446 Result result;
437 base::MessageLoop::current()->Run(); 447 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
438 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); 448 base::MessageLoop::current()->Run();
439 file_writer_delegate_.reset(); 449 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status());
450 file_writer_delegate_.reset();
440 451
441 EXPECT_EQ(pre_write_usage, usage()); 452 EXPECT_EQ(pre_write_usage, usage());
442 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 453 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
443 EXPECT_EQ(kDataSize, result_->bytes_written()); 454 EXPECT_EQ(kDataSize, result.bytes_written());
444 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); 455 EXPECT_EQ(base::PLATFORM_FILE_OK, result.status());
456 }
445 457
446 // Trying to overwrite 45 bytes data with offset pre_write_usage - 20, 458 // Trying to overwrite 45 bytes data with offset pre_write_usage - 20,
447 // while allowed_growth is 10. 459 // while allowed_growth is 10.
448 const int kOverlap = 20; 460 const int kOverlap = 20;
449 offset = pre_write_usage - kOverlap; 461 offset = pre_write_usage - kOverlap;
450 allowed_growth = 10; 462 allowed_growth = 10;
451 PrepareForWrite("test", kBlobURL, offset, allowed_growth); 463 PrepareForWrite("test", kBlobURL, offset, allowed_growth);
452 464
453 file_writer_delegate_->Start(request_.Pass()); 465 {
454 base::MessageLoop::current()->Run(); 466 Result result;
455 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result_->write_status()); 467 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result));
456 file_writer_delegate_.reset(); 468 base::MessageLoop::current()->Run();
469 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status());
470 file_writer_delegate_.reset();
457 471
458 EXPECT_EQ(pre_write_usage + allowed_growth, 472 EXPECT_EQ(pre_write_usage + allowed_growth, usage());
459 usage()); 473 EXPECT_EQ(GetFileSizeOnDisk("test"), usage());
460 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); 474 EXPECT_EQ(kOverlap + allowed_growth, result.bytes_written());
461 EXPECT_EQ(kOverlap + allowed_growth, result_->bytes_written()); 475 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result.status());
462 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result_->status()); 476 }
463 } 477 }
464 478
465 } // namespace fileapi 479 } // namespace fileapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698