OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/bind.h" | 8 #include "base/bind.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 bool has_more() { return has_more_; } | 49 bool has_more() { return has_more_; } |
50 | 50 |
51 private: | 51 private: |
52 int request_id_; | 52 int request_id_; |
53 scoped_ptr<RequestValue> result_; | 53 scoped_ptr<RequestValue> result_; |
54 bool has_more_; | 54 bool has_more_; |
55 }; | 55 }; |
56 | 56 |
57 class ErrorEvent { | 57 class ErrorEvent { |
58 public: | 58 public: |
59 ErrorEvent(int request_id, base::File::Error error) | 59 ErrorEvent(int request_id, |
60 : request_id_(request_id), error_(error) {} | 60 scoped_ptr<RequestValue> result, |
| 61 base::File::Error error) |
| 62 : request_id_(request_id), result_(result.Pass()), error_(error) {} |
61 virtual ~ErrorEvent() {} | 63 virtual ~ErrorEvent() {} |
62 | 64 |
63 int request_id() { return request_id_; } | 65 int request_id() { return request_id_; } |
| 66 RequestValue* result() { return result_.get(); } |
64 base::File::Error error() { return error_; } | 67 base::File::Error error() { return error_; } |
65 | 68 |
66 private: | 69 private: |
67 int request_id_; | 70 int request_id_; |
| 71 scoped_ptr<RequestValue> result_; |
68 base::File::Error error_; | 72 base::File::Error error_; |
69 }; | 73 }; |
70 | 74 |
71 EventLogger() : weak_ptr_factory_(this) {} | 75 EventLogger() : weak_ptr_factory_(this) {} |
72 virtual ~EventLogger() {} | 76 virtual ~EventLogger() {} |
73 | 77 |
74 void OnExecute(int request_id) { | 78 void OnExecute(int request_id) { |
75 execute_events_.push_back(new ExecuteEvent(request_id)); | 79 execute_events_.push_back(new ExecuteEvent(request_id)); |
76 } | 80 } |
77 | 81 |
78 void OnSuccess(int request_id, | 82 void OnSuccess(int request_id, |
79 scoped_ptr<RequestValue> result, | 83 scoped_ptr<RequestValue> result, |
80 bool has_more) { | 84 bool has_more) { |
81 success_events_.push_back( | 85 success_events_.push_back( |
82 new SuccessEvent(request_id, result.Pass(), has_more)); | 86 new SuccessEvent(request_id, result.Pass(), has_more)); |
83 } | 87 } |
84 | 88 |
85 void OnError(int request_id, base::File::Error error) { | 89 void OnError(int request_id, |
86 error_events_.push_back(new ErrorEvent(request_id, error)); | 90 scoped_ptr<RequestValue> result, |
| 91 base::File::Error error) { |
| 92 error_events_.push_back(new ErrorEvent(request_id, result.Pass(), error)); |
87 } | 93 } |
88 | 94 |
89 ScopedVector<ExecuteEvent>& execute_events() { return execute_events_; } | 95 ScopedVector<ExecuteEvent>& execute_events() { return execute_events_; } |
90 ScopedVector<SuccessEvent>& success_events() { return success_events_; } | 96 ScopedVector<SuccessEvent>& success_events() { return success_events_; } |
91 ScopedVector<ErrorEvent>& error_events() { return error_events_; } | 97 ScopedVector<ErrorEvent>& error_events() { return error_events_; } |
92 | 98 |
93 base::WeakPtr<EventLogger> GetWeakPtr() { | 99 base::WeakPtr<EventLogger> GetWeakPtr() { |
94 return weak_ptr_factory_.GetWeakPtr(); | 100 return weak_ptr_factory_.GetWeakPtr(); |
95 } | 101 } |
96 | 102 |
(...skipping 25 matching lines...) Expand all Loading... |
122 | 128 |
123 // RequestManager::Handler overrides. | 129 // RequestManager::Handler overrides. |
124 virtual void OnSuccess(int request_id, | 130 virtual void OnSuccess(int request_id, |
125 scoped_ptr<RequestValue> result, | 131 scoped_ptr<RequestValue> result, |
126 bool has_more) OVERRIDE { | 132 bool has_more) OVERRIDE { |
127 if (logger_.get()) | 133 if (logger_.get()) |
128 logger_->OnSuccess(request_id, result.Pass(), has_more); | 134 logger_->OnSuccess(request_id, result.Pass(), has_more); |
129 } | 135 } |
130 | 136 |
131 // RequestManager::Handler overrides. | 137 // RequestManager::Handler overrides. |
132 virtual void OnError(int request_id, base::File::Error error) OVERRIDE { | 138 virtual void OnError(int request_id, |
| 139 scoped_ptr<RequestValue> result, |
| 140 base::File::Error error) OVERRIDE { |
133 if (logger_.get()) | 141 if (logger_.get()) |
134 logger_->OnError(request_id, error); | 142 logger_->OnError(request_id, result.Pass(), error); |
135 } | 143 } |
136 | 144 |
137 virtual ~FakeHandler() {} | 145 virtual ~FakeHandler() {} |
138 | 146 |
139 private: | 147 private: |
140 base::WeakPtr<EventLogger> logger_; | 148 base::WeakPtr<EventLogger> logger_; |
141 bool execute_reply_; | 149 bool execute_reply_; |
142 DISALLOW_COPY_AND_ASSIGN(FakeHandler); | 150 DISALLOW_COPY_AND_ASSIGN(FakeHandler); |
143 }; | 151 }; |
144 | 152 |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 { | 336 { |
329 scoped_ptr<RequestValue> response; | 337 scoped_ptr<RequestValue> response; |
330 bool retry = | 338 bool retry = |
331 request_manager_->FulfillRequest(request_id, response.Pass(), has_more); | 339 request_manager_->FulfillRequest(request_id, response.Pass(), has_more); |
332 EXPECT_FALSE(retry); | 340 EXPECT_FALSE(retry); |
333 EXPECT_EQ(1u, observer.fulfilled().size()); | 341 EXPECT_EQ(1u, observer.fulfilled().size()); |
334 } | 342 } |
335 | 343 |
336 // Rejecting should also fail. | 344 // Rejecting should also fail. |
337 { | 345 { |
338 bool retry = request_manager_->RejectRequest(request_id, | 346 bool retry = request_manager_->RejectRequest( |
339 base::File::FILE_ERROR_FAILED); | 347 request_id, |
| 348 scoped_ptr<RequestValue>(new RequestValue()), |
| 349 base::File::FILE_ERROR_FAILED); |
340 EXPECT_FALSE(retry); | 350 EXPECT_FALSE(retry); |
341 EXPECT_EQ(0u, observer.rejected().size()); | 351 EXPECT_EQ(0u, observer.rejected().size()); |
342 } | 352 } |
343 | 353 |
344 ASSERT_EQ(1u, observer.destroyed().size()); | 354 ASSERT_EQ(1u, observer.destroyed().size()); |
345 EXPECT_EQ(request_id, observer.destroyed()[0].request_id()); | 355 EXPECT_EQ(request_id, observer.destroyed()[0].request_id()); |
346 EXPECT_EQ(0u, observer.timeouted().size()); | 356 EXPECT_EQ(0u, observer.timeouted().size()); |
347 | 357 |
348 request_manager_->RemoveObserver(&observer); | 358 request_manager_->RemoveObserver(&observer); |
349 } | 359 } |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 EXPECT_EQ(0u, logger.error_events().size()); | 442 EXPECT_EQ(0u, logger.error_events().size()); |
433 | 443 |
434 ASSERT_EQ(1u, observer.created().size()); | 444 ASSERT_EQ(1u, observer.created().size()); |
435 EXPECT_EQ(request_id, observer.created()[0].request_id()); | 445 EXPECT_EQ(request_id, observer.created()[0].request_id()); |
436 EXPECT_EQ(TESTING, observer.created()[0].type()); | 446 EXPECT_EQ(TESTING, observer.created()[0].type()); |
437 | 447 |
438 ASSERT_EQ(1u, observer.executed().size()); | 448 ASSERT_EQ(1u, observer.executed().size()); |
439 EXPECT_EQ(request_id, observer.executed()[0].request_id()); | 449 EXPECT_EQ(request_id, observer.executed()[0].request_id()); |
440 | 450 |
441 base::File::Error error = base::File::FILE_ERROR_NO_MEMORY; | 451 base::File::Error error = base::File::FILE_ERROR_NO_MEMORY; |
442 bool result = request_manager_->RejectRequest(request_id, error); | 452 bool result = request_manager_->RejectRequest( |
| 453 request_id, scoped_ptr<RequestValue>(new RequestValue()), error); |
443 EXPECT_TRUE(result); | 454 EXPECT_TRUE(result); |
444 | 455 |
445 // Validate if the callback has correct arguments. | 456 // Validate if the callback has correct arguments. |
446 ASSERT_EQ(1u, logger.error_events().size()); | 457 ASSERT_EQ(1u, logger.error_events().size()); |
447 EXPECT_EQ(0u, logger.success_events().size()); | 458 EXPECT_EQ(0u, logger.success_events().size()); |
448 EventLogger::ErrorEvent* event = logger.error_events()[0]; | 459 EventLogger::ErrorEvent* event = logger.error_events()[0]; |
449 EXPECT_EQ(error, event->error()); | 460 EXPECT_EQ(error, event->error()); |
450 | 461 |
451 ASSERT_EQ(1u, observer.rejected().size()); | 462 ASSERT_EQ(1u, observer.rejected().size()); |
452 EXPECT_EQ(request_id, observer.rejected()[0].request_id()); | 463 EXPECT_EQ(request_id, observer.rejected()[0].request_id()); |
453 EXPECT_EQ(error, observer.rejected()[0].error()); | 464 EXPECT_EQ(error, observer.rejected()[0].error()); |
454 | 465 |
455 // Confirm, that the request is removed. Basically, fulfilling again for the | 466 // Confirm, that the request is removed. Basically, fulfilling again for the |
456 // same request, should fail. | 467 // same request, should fail. |
457 { | 468 { |
458 scoped_ptr<RequestValue> response; | 469 scoped_ptr<RequestValue> response; |
459 bool has_more = false; | 470 bool has_more = false; |
460 bool retry = | 471 bool retry = |
461 request_manager_->FulfillRequest(request_id, response.Pass(), has_more); | 472 request_manager_->FulfillRequest(request_id, response.Pass(), has_more); |
462 EXPECT_FALSE(retry); | 473 EXPECT_FALSE(retry); |
463 EXPECT_EQ(0u, observer.fulfilled().size()); | 474 EXPECT_EQ(0u, observer.fulfilled().size()); |
464 } | 475 } |
465 | 476 |
466 // Rejecting should also fail. | 477 // Rejecting should also fail. |
467 { | 478 { |
468 bool retry = request_manager_->RejectRequest(request_id, error); | 479 bool retry = request_manager_->RejectRequest( |
| 480 request_id, scoped_ptr<RequestValue>(new RequestValue()), error); |
469 EXPECT_FALSE(retry); | 481 EXPECT_FALSE(retry); |
470 EXPECT_EQ(1u, observer.rejected().size()); | 482 EXPECT_EQ(1u, observer.rejected().size()); |
471 } | 483 } |
472 | 484 |
473 ASSERT_EQ(1u, observer.destroyed().size()); | 485 ASSERT_EQ(1u, observer.destroyed().size()); |
474 EXPECT_EQ(request_id, observer.destroyed()[0].request_id()); | 486 EXPECT_EQ(request_id, observer.destroyed()[0].request_id()); |
475 EXPECT_EQ(0u, observer.timeouted().size()); | 487 EXPECT_EQ(0u, observer.timeouted().size()); |
476 | 488 |
477 request_manager_->RemoveObserver(&observer); | 489 request_manager_->RemoveObserver(&observer); |
478 } | 490 } |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 EXPECT_EQ(0u, logger.error_events().size()); | 552 EXPECT_EQ(0u, logger.error_events().size()); |
541 | 553 |
542 ASSERT_EQ(1u, observer.created().size()); | 554 ASSERT_EQ(1u, observer.created().size()); |
543 EXPECT_EQ(request_id, observer.created()[0].request_id()); | 555 EXPECT_EQ(request_id, observer.created()[0].request_id()); |
544 EXPECT_EQ(TESTING, observer.created()[0].type()); | 556 EXPECT_EQ(TESTING, observer.created()[0].type()); |
545 | 557 |
546 ASSERT_EQ(1u, observer.executed().size()); | 558 ASSERT_EQ(1u, observer.executed().size()); |
547 EXPECT_EQ(request_id, observer.executed()[0].request_id()); | 559 EXPECT_EQ(request_id, observer.executed()[0].request_id()); |
548 | 560 |
549 base::File::Error error = base::File::FILE_ERROR_NO_MEMORY; | 561 base::File::Error error = base::File::FILE_ERROR_NO_MEMORY; |
550 bool result = request_manager_->RejectRequest(request_id + 1, error); | 562 bool result = request_manager_->RejectRequest( |
| 563 request_id + 1, scoped_ptr<RequestValue>(new RequestValue()), error); |
551 EXPECT_FALSE(result); | 564 EXPECT_FALSE(result); |
552 | 565 |
553 // Callbacks should not be called. | 566 // Callbacks should not be called. |
554 EXPECT_EQ(0u, logger.error_events().size()); | 567 EXPECT_EQ(0u, logger.error_events().size()); |
555 EXPECT_EQ(0u, logger.success_events().size()); | 568 EXPECT_EQ(0u, logger.success_events().size()); |
556 | 569 |
557 EXPECT_EQ(0u, observer.rejected().size()); | 570 EXPECT_EQ(0u, observer.rejected().size()); |
558 | 571 |
559 // Confirm, that the request hasn't been removed, by rejecting it correctly. | 572 // Confirm, that the request hasn't been removed, by rejecting it correctly. |
560 { | 573 { |
561 bool retry = request_manager_->RejectRequest(request_id, error); | 574 bool retry = request_manager_->RejectRequest( |
| 575 request_id, scoped_ptr<RequestValue>(new RequestValue()), error); |
562 EXPECT_TRUE(retry); | 576 EXPECT_TRUE(retry); |
563 EXPECT_EQ(1u, observer.rejected().size()); | 577 EXPECT_EQ(1u, observer.rejected().size()); |
564 } | 578 } |
565 | 579 |
566 request_manager_->RemoveObserver(&observer); | 580 request_manager_->RemoveObserver(&observer); |
567 } | 581 } |
568 | 582 |
569 TEST_F(FileSystemProviderRequestManagerTest, UniqueIds) { | 583 TEST_F(FileSystemProviderRequestManagerTest, UniqueIds) { |
570 EventLogger logger; | 584 EventLogger logger; |
571 | 585 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 ASSERT_EQ(1u, observer.timeouted().size()); | 679 ASSERT_EQ(1u, observer.timeouted().size()); |
666 EXPECT_EQ(request_id, observer.timeouted()[0].request_id()); | 680 EXPECT_EQ(request_id, observer.timeouted()[0].request_id()); |
667 ASSERT_EQ(1u, observer.destroyed().size()); | 681 ASSERT_EQ(1u, observer.destroyed().size()); |
668 EXPECT_EQ(request_id, observer.destroyed()[0].request_id()); | 682 EXPECT_EQ(request_id, observer.destroyed()[0].request_id()); |
669 | 683 |
670 request_manager_->RemoveObserver(&observer); | 684 request_manager_->RemoveObserver(&observer); |
671 } | 685 } |
672 | 686 |
673 } // namespace file_system_provider | 687 } // namespace file_system_provider |
674 } // namespace chromeos | 688 } // namespace chromeos |
OLD | NEW |