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

Side by Side Diff: chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc

Issue 335753004: [fsp] Cleanup handling errors for operation requests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 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 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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698