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

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

Issue 241673005: [fsp] Initial implementation of timeout logic for requests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 6 years, 8 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
« no previous file with comments | « chrome/browser/chromeos/file_system_provider/request_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h"
8 #include "base/files/file.h" 9 #include "base/files/file.h"
9 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
10 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/scoped_vector.h" 12 #include "base/memory/scoped_vector.h"
12 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
14 #include "base/run_loop.h"
13 #include "base/values.h" 15 #include "base/values.h"
14 #include "chrome/browser/chromeos/file_system_provider/request_manager.h" 16 #include "chrome/browser/chromeos/file_system_provider/request_manager.h"
17 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
16 19
17 namespace chromeos { 20 namespace chromeos {
18 namespace file_system_provider { 21 namespace file_system_provider {
19 namespace { 22 namespace {
20 23
21 // Logs calls of the success and error callbacks on requests. 24 // Logs calls of the success and error callbacks on requests.
22 class EventLogger { 25 class EventLogger {
23 public: 26 public:
24 class SuccessEvent { 27 class SuccessEvent {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 77
75 class FileSystemProviderRequestManagerTest : public testing::Test { 78 class FileSystemProviderRequestManagerTest : public testing::Test {
76 protected: 79 protected:
77 FileSystemProviderRequestManagerTest() {} 80 FileSystemProviderRequestManagerTest() {}
78 virtual ~FileSystemProviderRequestManagerTest() {} 81 virtual ~FileSystemProviderRequestManagerTest() {}
79 82
80 virtual void SetUp() OVERRIDE { 83 virtual void SetUp() OVERRIDE {
81 request_manager_.reset(new RequestManager()); 84 request_manager_.reset(new RequestManager());
82 } 85 }
83 86
87 content::TestBrowserThreadBundle thread_bundle_;
84 scoped_ptr<RequestManager> request_manager_; 88 scoped_ptr<RequestManager> request_manager_;
85 }; 89 };
86 90
87 TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill) { 91 TEST_F(FileSystemProviderRequestManagerTest, CreateAndFulFill) {
88 EventLogger logger; 92 EventLogger logger;
89 93
90 int request_id = request_manager_->CreateRequest( 94 int request_id = request_manager_->CreateRequest(
91 base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()), 95 base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
92 base::Bind(&EventLogger::OnError, logger.GetWeakPtr())); 96 base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
93 97
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 } 300 }
297 301
298 // All active requests should be aborted in the destructor of RequestManager. 302 // All active requests should be aborted in the destructor of RequestManager.
299 EventLogger::ErrorEvent* event = logger.error_events()[0]; 303 EventLogger::ErrorEvent* event = logger.error_events()[0];
300 ASSERT_EQ(1u, logger.error_events().size()); 304 ASSERT_EQ(1u, logger.error_events().size());
301 EXPECT_EQ(base::File::FILE_ERROR_ABORT, event->error()); 305 EXPECT_EQ(base::File::FILE_ERROR_ABORT, event->error());
302 306
303 EXPECT_EQ(0u, logger.success_events().size()); 307 EXPECT_EQ(0u, logger.success_events().size());
304 } 308 }
305 309
310 TEST_F(FileSystemProviderRequestManagerTest, AbortOnTimeout) {
311 EventLogger logger;
312 base::RunLoop run_loop;
313
314 request_manager_->SetTimeoutForTests(base::TimeDelta::FromSeconds(0));
315 int request_id = request_manager_->CreateRequest(
316 base::Bind(&EventLogger::OnSuccess, logger.GetWeakPtr()),
317 base::Bind(&EventLogger::OnError, logger.GetWeakPtr()));
318 EXPECT_LT(0, request_id);
319
320 // Wait until the request is timeouted.
321 run_loop.RunUntilIdle();
322
323 ASSERT_EQ(1u, logger.error_events().size());
324 EventLogger::ErrorEvent* event = logger.error_events()[0];
325 EXPECT_EQ(base::File::FILE_ERROR_ABORT, event->error());
326 }
327
306 } // namespace file_system_provider 328 } // namespace file_system_provider
307 } // namespace chromeos 329 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/file_system_provider/request_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698