Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 | 24 |
| 25 namespace fileapi { | 25 namespace fileapi { |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 class Result { | 29 class Result { |
| 30 public: | 30 public: |
| 31 Result() | 31 Result() |
| 32 : status_(base::PLATFORM_FILE_OK), | 32 : status_(base::PLATFORM_FILE_OK), |
| 33 bytes_written_(0), | 33 bytes_written_(0), |
| 34 complete_(false) {} | 34 write_status_(FileWriterDelegate::SUCCESS_IO_PENDING) {} |
| 35 | 35 |
| 36 base::PlatformFileError status() const { return status_; } | 36 base::PlatformFileError status() const { return status_; } |
| 37 void add_bytes_written(int64 bytes, bool complete) { | |
| 38 bytes_written_ += bytes; | |
| 39 EXPECT_FALSE(complete_); | |
| 40 complete_ = complete; | |
| 41 } | |
| 42 int64 bytes_written() const { return bytes_written_; } | 37 int64 bytes_written() const { return bytes_written_; } |
| 43 bool complete() const { return complete_; } | 38 bool write_status() const { return write_status_; } |
|
kinuko
2012/09/26 06:31:15
should this return WriteProgressStatus?
calvinlo
2012/09/26 07:43:40
Done.
| |
| 44 | 39 |
| 45 void DidWrite(base::PlatformFileError status, int64 bytes, bool complete) { | 40 void DidWrite(base::PlatformFileError status, int64 bytes, |
| 41 FileWriterDelegate::WriteProgressStatus write_status) { | |
| 42 write_status_ = write_status; | |
| 46 if (status == base::PLATFORM_FILE_OK) { | 43 if (status == base::PLATFORM_FILE_OK) { |
| 47 add_bytes_written(bytes, complete); | 44 bytes_written_ += bytes; |
| 48 if (complete) | 45 if (write_status_ != FileWriterDelegate::SUCCESS_IO_PENDING) |
| 49 MessageLoop::current()->Quit(); | 46 MessageLoop::current()->Quit(); |
| 50 } else { | 47 } else { |
| 51 EXPECT_FALSE(complete_); | 48 EXPECT_EQ(base::PLATFORM_FILE_OK, status_); |
| 52 EXPECT_EQ(status_, base::PLATFORM_FILE_OK); | |
| 53 complete_ = true; | |
| 54 status_ = status; | 49 status_ = status; |
| 55 MessageLoop::current()->Quit(); | 50 MessageLoop::current()->Quit(); |
| 56 } | 51 } |
| 57 } | 52 } |
| 58 | 53 |
| 59 private: | 54 private: |
| 60 // For post-operation status. | 55 // For post-operation status. |
| 61 base::PlatformFileError status_; | 56 base::PlatformFileError status_; |
| 62 int64 bytes_written_; | 57 int64 bytes_written_; |
| 63 bool complete_; | 58 FileWriterDelegate::WriteProgressStatus write_status_; |
| 64 }; | 59 }; |
| 65 | 60 |
| 66 const char kData[] = "The quick brown fox jumps over the lazy dog.\n"; | 61 const char kData[] = "The quick brown fox jumps over the lazy dog.\n"; |
| 67 const int kDataSize = ARRAYSIZE_UNSAFE(kData) - 1; | 62 const int kDataSize = ARRAYSIZE_UNSAFE(kData) - 1; |
| 68 | 63 |
| 69 } // namespace (anonymous) | 64 } // namespace (anonymous) |
| 70 | 65 |
| 71 class FileWriterDelegateTest : public PlatformTest { | 66 class FileWriterDelegateTest : public PlatformTest { |
| 72 public: | 67 public: |
| 73 FileWriterDelegateTest() | 68 FileWriterDelegateTest() |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 TEST_F(FileWriterDelegateTest, MAYBE_WriteSuccessWithoutQuotaLimit) { | 225 TEST_F(FileWriterDelegateTest, MAYBE_WriteSuccessWithoutQuotaLimit) { |
| 231 const GURL kBlobURL("blob:nolimit"); | 226 const GURL kBlobURL("blob:nolimit"); |
| 232 content_ = kData; | 227 content_ = kData; |
| 233 | 228 |
| 234 PrepareForWrite(kBlobURL, 0, quota::QuotaManager::kNoLimit); | 229 PrepareForWrite(kBlobURL, 0, quota::QuotaManager::kNoLimit); |
| 235 | 230 |
| 236 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); | 231 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); |
| 237 file_writer_delegate_->Start(request_.Pass()); | 232 file_writer_delegate_->Start(request_.Pass()); |
| 238 MessageLoop::current()->Run(); | 233 MessageLoop::current()->Run(); |
| 239 | 234 |
| 240 ASSERT_TRUE(result_->complete()); | 235 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 241 file_writer_delegate_.reset(); | 236 file_writer_delegate_.reset(); |
| 242 | 237 |
| 243 ASSERT_EQ(kDataSize, test_helper_.GetCachedOriginUsage()); | 238 ASSERT_EQ(kDataSize, test_helper_.GetCachedOriginUsage()); |
| 244 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 239 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 245 EXPECT_EQ(kDataSize, result_->bytes_written()); | 240 EXPECT_EQ(kDataSize, result_->bytes_written()); |
| 246 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 241 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 247 } | 242 } |
| 248 | 243 |
| 249 // FileWriterDelegateTest.WriteSuccessWithJustQuota is flaky on windows | 244 // FileWriterDelegateTest.WriteSuccessWithJustQuota is flaky on windows |
| 250 // http://crbug.com/130401 | 245 // http://crbug.com/130401 |
| 251 #if defined(OS_WIN) | 246 #if defined(OS_WIN) |
| 252 #define MAYBE_WriteSuccessWithJustQuota DISABLED_WriteSuccessWithJustQuota | 247 #define MAYBE_WriteSuccessWithJustQuota DISABLED_WriteSuccessWithJustQuota |
| 253 #else | 248 #else |
| 254 #define MAYBE_WriteSuccessWithJustQuota WriteSuccessWithJustQuota | 249 #define MAYBE_WriteSuccessWithJustQuota WriteSuccessWithJustQuota |
| 255 #endif | 250 #endif |
| 256 | 251 |
| 257 TEST_F(FileWriterDelegateTest, MAYBE_WriteSuccessWithJustQuota) { | 252 TEST_F(FileWriterDelegateTest, MAYBE_WriteSuccessWithJustQuota) { |
| 258 const GURL kBlobURL("blob:just"); | 253 const GURL kBlobURL("blob:just"); |
| 259 content_ = kData; | 254 content_ = kData; |
| 260 const int64 kAllowedGrowth = kDataSize; | 255 const int64 kAllowedGrowth = kDataSize; |
| 261 PrepareForWrite(kBlobURL, 0, kAllowedGrowth); | 256 PrepareForWrite(kBlobURL, 0, kAllowedGrowth); |
| 262 | 257 |
| 263 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); | 258 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); |
| 264 file_writer_delegate_->Start(request_.Pass()); | 259 file_writer_delegate_->Start(request_.Pass()); |
| 265 MessageLoop::current()->Run(); | 260 MessageLoop::current()->Run(); |
| 266 ASSERT_TRUE(result_->complete()); | 261 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 267 file_writer_delegate_.reset(); | 262 file_writer_delegate_.reset(); |
| 268 | 263 |
| 269 ASSERT_EQ(kAllowedGrowth, test_helper_.GetCachedOriginUsage()); | 264 ASSERT_EQ(kAllowedGrowth, test_helper_.GetCachedOriginUsage()); |
| 270 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 265 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 271 | 266 |
| 272 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); | 267 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); |
| 273 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 268 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 274 } | 269 } |
| 275 | 270 |
| 276 TEST_F(FileWriterDelegateTest, DISABLED_WriteFailureByQuota) { | 271 TEST_F(FileWriterDelegateTest, DISABLED_WriteFailureByQuota) { |
| 277 const GURL kBlobURL("blob:failure"); | 272 const GURL kBlobURL("blob:failure"); |
| 278 content_ = kData; | 273 content_ = kData; |
| 279 const int64 kAllowedGrowth = kDataSize - 1; | 274 const int64 kAllowedGrowth = kDataSize - 1; |
| 280 PrepareForWrite(kBlobURL, 0, kAllowedGrowth); | 275 PrepareForWrite(kBlobURL, 0, kAllowedGrowth); |
| 281 | 276 |
| 282 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); | 277 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); |
| 283 file_writer_delegate_->Start(request_.Pass()); | 278 file_writer_delegate_->Start(request_.Pass()); |
| 284 MessageLoop::current()->Run(); | 279 MessageLoop::current()->Run(); |
| 285 ASSERT_TRUE(result_->complete()); | 280 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result_->write_status()); |
| 286 file_writer_delegate_.reset(); | 281 file_writer_delegate_.reset(); |
| 287 | 282 |
| 288 ASSERT_EQ(kAllowedGrowth, test_helper_.GetCachedOriginUsage()); | 283 ASSERT_EQ(kAllowedGrowth, test_helper_.GetCachedOriginUsage()); |
| 289 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 284 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 290 | 285 |
| 291 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); | 286 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); |
| 292 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result_->status()); | 287 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result_->status()); |
| 293 EXPECT_TRUE(result_->complete()); | 288 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result_->write_status()); |
| 294 } | 289 } |
| 295 | 290 |
| 296 TEST_F(FileWriterDelegateTest, WriteZeroBytesSuccessfullyWithZeroQuota) { | 291 TEST_F(FileWriterDelegateTest, WriteZeroBytesSuccessfullyWithZeroQuota) { |
| 297 const GURL kBlobURL("blob:zero"); | 292 const GURL kBlobURL("blob:zero"); |
| 298 content_ = ""; | 293 content_ = ""; |
| 299 int64 kAllowedGrowth = 0; | 294 int64 kAllowedGrowth = 0; |
| 300 PrepareForWrite(kBlobURL, 0, kAllowedGrowth); | 295 PrepareForWrite(kBlobURL, 0, kAllowedGrowth); |
| 301 | 296 |
| 302 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); | 297 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); |
| 303 file_writer_delegate_->Start(request_.Pass()); | 298 file_writer_delegate_->Start(request_.Pass()); |
| 304 MessageLoop::current()->Run(); | 299 MessageLoop::current()->Run(); |
| 305 ASSERT_TRUE(result_->complete()); | 300 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 306 file_writer_delegate_.reset(); | 301 file_writer_delegate_.reset(); |
| 307 | 302 |
| 308 ASSERT_EQ(kAllowedGrowth, test_helper_.GetCachedOriginUsage()); | 303 ASSERT_EQ(kAllowedGrowth, test_helper_.GetCachedOriginUsage()); |
| 309 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 304 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 310 | 305 |
| 311 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); | 306 EXPECT_EQ(kAllowedGrowth, result_->bytes_written()); |
| 312 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 307 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 313 EXPECT_TRUE(result_->complete()); | 308 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 314 } | 309 } |
| 315 | 310 |
| 316 #if defined(OS_WIN) | 311 #if defined(OS_WIN) |
| 317 // See http://crbug.com/129264 | 312 // See http://crbug.com/129264 |
| 318 #define MAYBE_WriteSuccessWithoutQuotaLimitConcurrent \ | 313 #define MAYBE_WriteSuccessWithoutQuotaLimitConcurrent \ |
| 319 DISABLED_WriteSuccessWithoutQuotaLimitConcurrent | 314 DISABLED_WriteSuccessWithoutQuotaLimitConcurrent |
| 320 #else | 315 #else |
| 321 #define MAYBE_WriteSuccessWithoutQuotaLimitConcurrent \ | 316 #define MAYBE_WriteSuccessWithoutQuotaLimitConcurrent \ |
| 322 WriteSuccessWithoutQuotaLimitConcurrent | 317 WriteSuccessWithoutQuotaLimitConcurrent |
| 323 #endif | 318 #endif |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 345 result2.reset(new Result()); | 340 result2.reset(new Result()); |
| 346 file_writer_delegate2.reset(CreateWriterDelegate( | 341 file_writer_delegate2.reset(CreateWriterDelegate( |
| 347 "test2", 0, quota::QuotaManager::kNoLimit, result2.get())); | 342 "test2", 0, quota::QuotaManager::kNoLimit, result2.get())); |
| 348 request2.reset(empty_context_.CreateRequest( | 343 request2.reset(empty_context_.CreateRequest( |
| 349 kBlobURL2, file_writer_delegate2.get())); | 344 kBlobURL2, file_writer_delegate2.get())); |
| 350 | 345 |
| 351 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); | 346 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); |
| 352 file_writer_delegate_->Start(request_.Pass()); | 347 file_writer_delegate_->Start(request_.Pass()); |
| 353 file_writer_delegate2->Start(request2.Pass()); | 348 file_writer_delegate2->Start(request2.Pass()); |
| 354 MessageLoop::current()->Run(); | 349 MessageLoop::current()->Run(); |
| 355 if (!result_->complete() || !result2->complete()) | 350 if (result_->write_status() == FileWriterDelegate::SUCCESS_IO_PENDING || |
| 351 result2->write_status() == FileWriterDelegate::SUCCESS_IO_PENDING) | |
| 356 MessageLoop::current()->Run(); | 352 MessageLoop::current()->Run(); |
| 357 | 353 |
| 358 ASSERT_TRUE(result_->complete()); | 354 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 359 ASSERT_TRUE(result2->complete()); | 355 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result2->write_status()); |
| 360 file_writer_delegate_.reset(); | 356 file_writer_delegate_.reset(); |
| 361 file_writer_delegate2.reset(); | 357 file_writer_delegate2.reset(); |
| 362 | 358 |
| 363 ASSERT_EQ(kDataSize * 2, test_helper_.GetCachedOriginUsage()); | 359 ASSERT_EQ(kDataSize * 2, test_helper_.GetCachedOriginUsage()); |
| 364 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 360 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 365 | 361 |
| 366 EXPECT_EQ(kDataSize, result_->bytes_written()); | 362 EXPECT_EQ(kDataSize, result_->bytes_written()); |
| 367 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 363 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 368 EXPECT_EQ(kDataSize, result2->bytes_written()); | 364 EXPECT_EQ(kDataSize, result2->bytes_written()); |
| 369 EXPECT_EQ(base::PLATFORM_FILE_OK, result2->status()); | 365 EXPECT_EQ(base::PLATFORM_FILE_OK, result2->status()); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 384 | 380 |
| 385 // Writing kDataSize (=45) bytes data while allowed_growth is 100. | 381 // Writing kDataSize (=45) bytes data while allowed_growth is 100. |
| 386 int64 offset = 0; | 382 int64 offset = 0; |
| 387 int64 allowed_growth = 100; | 383 int64 allowed_growth = 100; |
| 388 ASSERT_LT(kDataSize, allowed_growth); | 384 ASSERT_LT(kDataSize, allowed_growth); |
| 389 PrepareForWrite(kBlobURL, offset, allowed_growth); | 385 PrepareForWrite(kBlobURL, offset, allowed_growth); |
| 390 | 386 |
| 391 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); | 387 ASSERT_EQ(0, test_helper_.GetCachedOriginUsage()); |
| 392 file_writer_delegate_->Start(request_.Pass()); | 388 file_writer_delegate_->Start(request_.Pass()); |
| 393 MessageLoop::current()->Run(); | 389 MessageLoop::current()->Run(); |
| 394 ASSERT_TRUE(result_->complete()); | 390 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 395 file_writer_delegate_.reset(); | 391 file_writer_delegate_.reset(); |
| 396 | 392 |
| 397 ASSERT_EQ(kDataSize, test_helper_.GetCachedOriginUsage()); | 393 ASSERT_EQ(kDataSize, test_helper_.GetCachedOriginUsage()); |
| 398 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 394 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 399 EXPECT_EQ(kDataSize, result_->bytes_written()); | 395 EXPECT_EQ(kDataSize, result_->bytes_written()); |
| 400 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 396 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 401 | 397 |
| 402 // Trying to overwrite kDataSize bytes data while allowed_growth is 20. | 398 // Trying to overwrite kDataSize bytes data while allowed_growth is 20. |
| 403 offset = 0; | 399 offset = 0; |
| 404 allowed_growth = 20; | 400 allowed_growth = 20; |
| 405 PrepareForWrite(kBlobURL, offset, allowed_growth); | 401 PrepareForWrite(kBlobURL, offset, allowed_growth); |
| 406 | 402 |
| 407 file_writer_delegate_->Start(request_.Pass()); | 403 file_writer_delegate_->Start(request_.Pass()); |
| 408 MessageLoop::current()->Run(); | 404 MessageLoop::current()->Run(); |
| 409 EXPECT_EQ(kDataSize, test_helper_.GetCachedOriginUsage()); | 405 EXPECT_EQ(kDataSize, test_helper_.GetCachedOriginUsage()); |
| 410 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 406 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 411 EXPECT_EQ(kDataSize, result_->bytes_written()); | 407 EXPECT_EQ(kDataSize, result_->bytes_written()); |
| 412 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 408 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 413 EXPECT_TRUE(result_->complete()); | 409 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 414 | 410 |
| 415 // Trying to write kDataSize bytes data from offset 25 while | 411 // Trying to write kDataSize bytes data from offset 25 while |
| 416 // allowed_growth is 55. | 412 // allowed_growth is 55. |
| 417 offset = 25; | 413 offset = 25; |
| 418 allowed_growth = 55; | 414 allowed_growth = 55; |
| 419 PrepareForWrite(kBlobURL, offset, allowed_growth); | 415 PrepareForWrite(kBlobURL, offset, allowed_growth); |
| 420 | 416 |
| 421 file_writer_delegate_->Start(request_.Pass()); | 417 file_writer_delegate_->Start(request_.Pass()); |
| 422 MessageLoop::current()->Run(); | 418 MessageLoop::current()->Run(); |
| 423 ASSERT_TRUE(result_->complete()); | 419 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 424 file_writer_delegate_.reset(); | 420 file_writer_delegate_.reset(); |
| 425 | 421 |
| 426 EXPECT_EQ(offset + kDataSize, test_helper_.GetCachedOriginUsage()); | 422 EXPECT_EQ(offset + kDataSize, test_helper_.GetCachedOriginUsage()); |
| 427 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 423 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 428 EXPECT_EQ(kDataSize, result_->bytes_written()); | 424 EXPECT_EQ(kDataSize, result_->bytes_written()); |
| 429 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 425 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 430 | 426 |
| 431 // Trying to overwrite 45 bytes data while allowed_growth is -20. | 427 // Trying to overwrite 45 bytes data while allowed_growth is -20. |
| 432 offset = 0; | 428 offset = 0; |
| 433 allowed_growth = -20; | 429 allowed_growth = -20; |
| 434 PrepareForWrite(kBlobURL, offset, allowed_growth); | 430 PrepareForWrite(kBlobURL, offset, allowed_growth); |
| 435 | 431 |
| 436 int64 pre_write_usage = ComputeCurrentOriginUsage(); | 432 int64 pre_write_usage = ComputeCurrentOriginUsage(); |
| 437 file_writer_delegate_->Start(request_.Pass()); | 433 file_writer_delegate_->Start(request_.Pass()); |
| 438 MessageLoop::current()->Run(); | 434 MessageLoop::current()->Run(); |
| 439 ASSERT_TRUE(result_->complete()); | 435 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 440 file_writer_delegate_.reset(); | 436 file_writer_delegate_.reset(); |
| 441 | 437 |
| 442 EXPECT_EQ(pre_write_usage, test_helper_.GetCachedOriginUsage()); | 438 EXPECT_EQ(pre_write_usage, test_helper_.GetCachedOriginUsage()); |
| 443 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 439 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 444 EXPECT_EQ(kDataSize, result_->bytes_written()); | 440 EXPECT_EQ(kDataSize, result_->bytes_written()); |
| 445 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); | 441 EXPECT_EQ(base::PLATFORM_FILE_OK, result_->status()); |
| 446 | 442 |
| 447 // Trying to overwrite 45 bytes data with offset pre_write_usage - 20, | 443 // Trying to overwrite 45 bytes data with offset pre_write_usage - 20, |
| 448 // while allowed_growth is 10. | 444 // while allowed_growth is 10. |
| 449 const int kOverlap = 20; | 445 const int kOverlap = 20; |
| 450 offset = pre_write_usage - kOverlap; | 446 offset = pre_write_usage - kOverlap; |
| 451 allowed_growth = 10; | 447 allowed_growth = 10; |
| 452 PrepareForWrite(kBlobURL, offset, allowed_growth); | 448 PrepareForWrite(kBlobURL, offset, allowed_growth); |
| 453 | 449 |
| 454 file_writer_delegate_->Start(request_.Pass()); | 450 file_writer_delegate_->Start(request_.Pass()); |
| 455 MessageLoop::current()->Run(); | 451 MessageLoop::current()->Run(); |
| 456 ASSERT_TRUE(result_->complete()); | 452 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result_->write_status()); |
| 457 file_writer_delegate_.reset(); | 453 file_writer_delegate_.reset(); |
| 458 | 454 |
| 459 EXPECT_EQ(pre_write_usage + allowed_growth, | 455 EXPECT_EQ(pre_write_usage + allowed_growth, |
| 460 test_helper_.GetCachedOriginUsage()); | 456 test_helper_.GetCachedOriginUsage()); |
| 461 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); | 457 EXPECT_EQ(ComputeCurrentOriginUsage(), test_helper_.GetCachedOriginUsage()); |
| 462 EXPECT_EQ(kOverlap + allowed_growth, result_->bytes_written()); | 458 EXPECT_EQ(kOverlap + allowed_growth, result_->bytes_written()); |
| 463 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result_->status()); | 459 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, result_->status()); |
| 464 } | 460 } |
| 465 | 461 |
| 466 } // namespace fileapi | 462 } // namespace fileapi |
| OLD | NEW |