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

Side by Side Diff: chrome/browser/chromeos/drive/drive_file_stream_reader_unittest.cc

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/chromeos/drive/drive_file_stream_reader.h" 5 #include "chrome/browser/chromeos/drive/drive_file_stream_reader.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 27 matching lines...) Expand all
38 } // namespace 38 } // namespace
39 39
40 TEST(LocalReaderProxyTest, Read) { 40 TEST(LocalReaderProxyTest, Read) {
41 // Prepare the test content. 41 // Prepare the test content.
42 const base::FilePath kTestFile( 42 const base::FilePath kTestFile(
43 google_apis::test_util::GetTestFilePath("chromeos/drive/applist.json")); 43 google_apis::test_util::GetTestFilePath("chromeos/drive/applist.json"));
44 std::string expected_content; 44 std::string expected_content;
45 ASSERT_TRUE(file_util::ReadFileToString(kTestFile, &expected_content)); 45 ASSERT_TRUE(file_util::ReadFileToString(kTestFile, &expected_content));
46 46
47 // The LocalReaderProxy should live on IO thread. 47 // The LocalReaderProxy should live on IO thread.
48 MessageLoopForIO io_loop; 48 base::MessageLoopForIO io_loop;
49 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop); 49 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop);
50 50
51 { 51 {
52 // Open the file first. 52 // Open the file first.
53 scoped_ptr<net::FileStream> file_stream(new net::FileStream(NULL)); 53 scoped_ptr<net::FileStream> file_stream(new net::FileStream(NULL));
54 net::TestCompletionCallback callback; 54 net::TestCompletionCallback callback;
55 int result = file_stream->Open( 55 int result = file_stream->Open(
56 google_apis::test_util::GetTestFilePath("chromeos/drive/applist.json"), 56 google_apis::test_util::GetTestFilePath("chromeos/drive/applist.json"),
57 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ | 57 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ |
58 base::PLATFORM_FILE_ASYNC, 58 base::PLATFORM_FILE_ASYNC,
(...skipping 24 matching lines...) Expand all
83 EXPECT_EQ(expected_content, concatenated_content); 83 EXPECT_EQ(expected_content, concatenated_content);
84 } 84 }
85 85
86 // For graceful shutdown, we wait for that the FileStream used above is 86 // For graceful shutdown, we wait for that the FileStream used above is
87 // actually closed. 87 // actually closed.
88 test_util::WaitForFileStreamClosed(); 88 test_util::WaitForFileStreamClosed();
89 } 89 }
90 90
91 TEST(NetworkReaderProxyTest, EmptyFile) { 91 TEST(NetworkReaderProxyTest, EmptyFile) {
92 // The NetworkReaderProxy should live on IO thread. 92 // The NetworkReaderProxy should live on IO thread.
93 MessageLoopForIO io_loop; 93 base::MessageLoopForIO io_loop;
94 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop); 94 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop);
95 95
96 NetworkReaderProxy proxy(0, base::Bind(&base::DoNothing)); 96 NetworkReaderProxy proxy(0, base::Bind(&base::DoNothing));
97 97
98 net::TestCompletionCallback callback; 98 net::TestCompletionCallback callback;
99 const int kBufferSize = 10; 99 const int kBufferSize = 10;
100 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); 100 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
101 int result = proxy.Read(buffer.get(), kBufferSize, callback.callback()); 101 int result = proxy.Read(buffer.get(), kBufferSize, callback.callback());
102 102
103 // For empty file, Read() should return 0 immediately. 103 // For empty file, Read() should return 0 immediately.
104 EXPECT_EQ(0, result); 104 EXPECT_EQ(0, result);
105 } 105 }
106 106
107 TEST(NetworkReaderProxyTest, Read) { 107 TEST(NetworkReaderProxyTest, Read) {
108 // The NetworkReaderProxy should live on IO thread. 108 // The NetworkReaderProxy should live on IO thread.
109 MessageLoopForIO io_loop; 109 base::MessageLoopForIO io_loop;
110 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop); 110 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop);
111 111
112 NetworkReaderProxy proxy(10, base::Bind(&base::DoNothing)); 112 NetworkReaderProxy proxy(10, base::Bind(&base::DoNothing));
113 113
114 net::TestCompletionCallback callback; 114 net::TestCompletionCallback callback;
115 const int kBufferSize = 3; 115 const int kBufferSize = 3;
116 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); 116 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
117 117
118 // If no data is available yet, ERR_IO_PENDING should be returned. 118 // If no data is available yet, ERR_IO_PENDING should be returned.
119 int result = proxy.Read(buffer.get(), kBufferSize, callback.callback()); 119 int result = proxy.Read(buffer.get(), kBufferSize, callback.callback());
(...skipping 28 matching lines...) Expand all
148 EXPECT_EQ(2, result); 148 EXPECT_EQ(2, result);
149 EXPECT_EQ("ij", std::string(buffer->data(), result)); 149 EXPECT_EQ("ij", std::string(buffer->data(), result));
150 150
151 // The whole data is read, so Read() should return 0 immediately by then. 151 // The whole data is read, so Read() should return 0 immediately by then.
152 result = proxy.Read(buffer.get(), kBufferSize, callback.callback()); 152 result = proxy.Read(buffer.get(), kBufferSize, callback.callback());
153 EXPECT_EQ(0, result); 153 EXPECT_EQ(0, result);
154 } 154 }
155 155
156 TEST(NetworkReaderProxyTest, ErrorWithPendingCallback) { 156 TEST(NetworkReaderProxyTest, ErrorWithPendingCallback) {
157 // The NetworkReaderProxy should live on IO thread. 157 // The NetworkReaderProxy should live on IO thread.
158 MessageLoopForIO io_loop; 158 base::MessageLoopForIO io_loop;
159 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop); 159 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop);
160 160
161 NetworkReaderProxy proxy(10, base::Bind(&base::DoNothing)); 161 NetworkReaderProxy proxy(10, base::Bind(&base::DoNothing));
162 162
163 net::TestCompletionCallback callback; 163 net::TestCompletionCallback callback;
164 const int kBufferSize = 3; 164 const int kBufferSize = 3;
165 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); 165 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
166 166
167 // Set pending callback. 167 // Set pending callback.
168 int result = proxy.Read(buffer.get(), kBufferSize, callback.callback()); 168 int result = proxy.Read(buffer.get(), kBufferSize, callback.callback());
169 EXPECT_EQ(net::ERR_IO_PENDING, result); 169 EXPECT_EQ(net::ERR_IO_PENDING, result);
170 170
171 // Emulate that an error is found. The callback should be called internally. 171 // Emulate that an error is found. The callback should be called internally.
172 proxy.OnCompleted(FILE_ERROR_FAILED); 172 proxy.OnCompleted(FILE_ERROR_FAILED);
173 result = callback.GetResult(result); 173 result = callback.GetResult(result);
174 EXPECT_EQ(net::ERR_FAILED, result); 174 EXPECT_EQ(net::ERR_FAILED, result);
175 175
176 // The next Read call should also return the same error code. 176 // The next Read call should also return the same error code.
177 EXPECT_EQ(net::ERR_FAILED, 177 EXPECT_EQ(net::ERR_FAILED,
178 proxy.Read(buffer.get(), kBufferSize, callback.callback())); 178 proxy.Read(buffer.get(), kBufferSize, callback.callback()));
179 } 179 }
180 180
181 TEST(NetworkReaderProxyTest, ErrorWithPendingData) { 181 TEST(NetworkReaderProxyTest, ErrorWithPendingData) {
182 // The NetworkReaderProxy should live on IO thread. 182 // The NetworkReaderProxy should live on IO thread.
183 MessageLoopForIO io_loop; 183 base::MessageLoopForIO io_loop;
184 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop); 184 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop);
185 185
186 NetworkReaderProxy proxy(10, base::Bind(&base::DoNothing)); 186 NetworkReaderProxy proxy(10, base::Bind(&base::DoNothing));
187 187
188 net::TestCompletionCallback callback; 188 net::TestCompletionCallback callback;
189 const int kBufferSize = 3; 189 const int kBufferSize = 3;
190 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); 190 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
191 191
192 // Supply the data before an error. 192 // Supply the data before an error.
193 scoped_ptr<std::string> data(new std::string("abcde")); 193 scoped_ptr<std::string> data(new std::string("abcde"));
194 proxy.OnGetContent(data.Pass()); 194 proxy.OnGetContent(data.Pass());
195 195
196 // Emulate that an error is found. 196 // Emulate that an error is found.
197 proxy.OnCompleted(FILE_ERROR_FAILED); 197 proxy.OnCompleted(FILE_ERROR_FAILED);
198 198
199 // The next Read call should return the error code, even if there is 199 // The next Read call should return the error code, even if there is
200 // pending data (the pending data should be released in OnCompleted. 200 // pending data (the pending data should be released in OnCompleted.
201 EXPECT_EQ(net::ERR_FAILED, 201 EXPECT_EQ(net::ERR_FAILED,
202 proxy.Read(buffer.get(), kBufferSize, callback.callback())); 202 proxy.Read(buffer.get(), kBufferSize, callback.callback()));
203 } 203 }
204 204
205 TEST(NetworkReaderProxyTest, CancelJob) { 205 TEST(NetworkReaderProxyTest, CancelJob) {
206 // The NetworkReaderProxy should live on IO thread. 206 // The NetworkReaderProxy should live on IO thread.
207 MessageLoopForIO io_loop; 207 base::MessageLoopForIO io_loop;
208 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop); 208 content::TestBrowserThread io_thread(BrowserThread::IO, &io_loop);
209 209
210 int num_called = 0; 210 int num_called = 0;
211 { 211 {
212 NetworkReaderProxy proxy(0, base::Bind(&IncrementCallback, &num_called)); 212 NetworkReaderProxy proxy(0, base::Bind(&IncrementCallback, &num_called));
213 proxy.OnCompleted(FILE_ERROR_OK); 213 proxy.OnCompleted(FILE_ERROR_OK);
214 // Destroy the instance after the network operation is completed. 214 // Destroy the instance after the network operation is completed.
215 // The cancelling callback shouldn't be called. 215 // The cancelling callback shouldn't be called.
216 } 216 }
217 EXPECT_EQ(0, num_called); 217 EXPECT_EQ(0, num_called);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 278
279 DriveFileSystemInterface* GetDriveFileSystem() { 279 DriveFileSystemInterface* GetDriveFileSystem() {
280 return fake_drive_file_system_.get(); 280 return fake_drive_file_system_.get();
281 } 281 }
282 282
283 DriveFileStreamReader::DriveFileSystemGetter GetDriveFileSystemGetter() { 283 DriveFileStreamReader::DriveFileSystemGetter GetDriveFileSystemGetter() {
284 return base::Bind(&DriveFileStreamReaderTest::GetDriveFileSystem, 284 return base::Bind(&DriveFileStreamReaderTest::GetDriveFileSystem,
285 base::Unretained(this)); 285 base::Unretained(this));
286 } 286 }
287 287
288 MessageLoopForIO message_loop_; 288 base::MessageLoopForIO message_loop_;
289 content::TestBrowserThread ui_thread_; 289 content::TestBrowserThread ui_thread_;
290 content::TestBrowserThread io_thread_; 290 content::TestBrowserThread io_thread_;
291 291
292 scoped_ptr<google_apis::FakeDriveService> fake_drive_service_; 292 scoped_ptr<google_apis::FakeDriveService> fake_drive_service_;
293 scoped_ptr<test_util::FakeDriveFileSystem> fake_drive_file_system_; 293 scoped_ptr<test_util::FakeDriveFileSystem> fake_drive_file_system_;
294 }; 294 };
295 295
296 TEST_F(DriveFileStreamReaderTest, Read) { 296 TEST_F(DriveFileStreamReaderTest, Read) {
297 const base::FilePath kDriveFile = 297 const base::FilePath kDriveFile =
298 util::GetDriveMyDriveRootPath().AppendASCII("File 1.txt"); 298 util::GetDriveMyDriveRootPath().AppendASCII("File 1.txt");
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 result = callback.GetResult(result); 362 result = callback.GetResult(result);
363 ASSERT_GT(result, 0); 363 ASSERT_GT(result, 0);
364 second_content.append(buffer->data(), result); 364 second_content.append(buffer->data(), result);
365 } 365 }
366 366
367 // The same content is expected. 367 // The same content is expected.
368 EXPECT_EQ(first_content, second_content); 368 EXPECT_EQ(first_content, second_content);
369 } 369 }
370 370
371 } // namespace drive 371 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698