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

Side by Side Diff: net/base/file_stream_unittest.cc

Issue 23872004: Remove base::WorkerPool use from FileStream tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: do not spawn thread Created 7 years, 3 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 | « no previous file | 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 (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 "net/base/file_stream.h" 5 #include "net/base/file_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/path_service.h" 11 #include "base/path_service.h"
12 #include "base/platform_file.h" 12 #include "base/platform_file.h"
13 #include "base/run_loop.h"
13 #include "base/synchronization/waitable_event.h" 14 #include "base/synchronization/waitable_event.h"
15 #include "base/task_runner.h"
14 #include "base/test/test_timeouts.h" 16 #include "base/test/test_timeouts.h"
15 #include "net/base/capturing_net_log.h" 17 #include "net/base/capturing_net_log.h"
16 #include "net/base/io_buffer.h" 18 #include "net/base/io_buffer.h"
17 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
18 #include "net/base/test_completion_callback.h" 20 #include "net/base/test_completion_callback.h"
19 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
20 #include "testing/platform_test.h" 22 #include "testing/platform_test.h"
21 23
22 namespace net { 24 namespace net {
23 25
(...skipping 15 matching lines...) Expand all
39 public: 41 public:
40 virtual void SetUp() { 42 virtual void SetUp() {
41 PlatformTest::SetUp(); 43 PlatformTest::SetUp();
42 44
43 file_util::CreateTemporaryFile(&temp_file_path_); 45 file_util::CreateTemporaryFile(&temp_file_path_);
44 file_util::WriteFile(temp_file_path_, kTestData, kTestDataSize); 46 file_util::WriteFile(temp_file_path_, kTestData, kTestDataSize);
45 } 47 }
46 virtual void TearDown() { 48 virtual void TearDown() {
47 EXPECT_TRUE(base::DeleteFile(temp_file_path_, false)); 49 EXPECT_TRUE(base::DeleteFile(temp_file_path_, false));
48 50
51 base::RunLoop().RunUntilIdle();
Ryan Sleevi 2013/09/06 23:27:28 I'm not really thrilled with adding this to test s
earthdok 2013/09/07 00:20:03 The tasks are posted from async FileStreams on des
49 PlatformTest::TearDown(); 52 PlatformTest::TearDown();
50 } 53 }
51 54
52 const base::FilePath temp_file_path() const { return temp_file_path_; } 55 const base::FilePath temp_file_path() const { return temp_file_path_; }
53 56
57 scoped_refptr<base::TaskRunner> file_task_runner() const {
58 return base::MessageLoop::current()->message_loop_proxy();
Ryan Sleevi 2013/09/06 23:27:28 Just drop this method and use base::MessageLoopPro
59 }
60
54 private: 61 private:
55 base::FilePath temp_file_path_; 62 base::FilePath temp_file_path_;
56 }; 63 };
57 64
58 namespace { 65 namespace {
59 66
60 TEST_F(FileStreamTest, BasicOpenClose) { 67 TEST_F(FileStreamTest, BasicOpenClose) {
61 base::PlatformFile file = base::kInvalidPlatformFileValue; 68 base::PlatformFile file = base::kInvalidPlatformFileValue;
62 { 69 {
63 FileStream stream(NULL); 70 FileStream stream(NULL, file_task_runner());
64 int rv = stream.OpenSync(temp_file_path(), 71 int rv = stream.OpenSync(temp_file_path(),
65 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ); 72 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ);
66 EXPECT_EQ(OK, rv); 73 EXPECT_EQ(OK, rv);
67 EXPECT_TRUE(stream.IsOpen()); 74 EXPECT_TRUE(stream.IsOpen());
68 file = stream.GetPlatformFileForTesting(); 75 file = stream.GetPlatformFileForTesting();
69 } 76 }
70 EXPECT_NE(base::kInvalidPlatformFileValue, file); 77 EXPECT_NE(base::kInvalidPlatformFileValue, file);
71 base::PlatformFileInfo info; 78 base::PlatformFileInfo info;
72 // The file should be closed. 79 // The file should be closed.
73 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info)); 80 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info));
74 } 81 }
75 82
76 TEST_F(FileStreamTest, FileHandleNotLeftOpen) { 83 TEST_F(FileStreamTest, FileHandleNotLeftOpen) {
77 bool created = false; 84 bool created = false;
78 ASSERT_EQ(kTestDataSize, 85 ASSERT_EQ(kTestDataSize,
79 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 86 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
80 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 87 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
81 base::PlatformFile file = base::CreatePlatformFile( 88 base::PlatformFile file = base::CreatePlatformFile(
82 temp_file_path(), flags, &created, NULL); 89 temp_file_path(), flags, &created, NULL);
83 90
84 { 91 {
85 // Seek to the beginning of the file and read. 92 // Seek to the beginning of the file and read.
86 FileStream read_stream(file, flags, NULL); 93 FileStream read_stream(file, flags, NULL, file_task_runner());
87 EXPECT_TRUE(read_stream.IsOpen()); 94 EXPECT_TRUE(read_stream.IsOpen());
88 } 95 }
89 96
90 EXPECT_NE(base::kInvalidPlatformFileValue, file); 97 EXPECT_NE(base::kInvalidPlatformFileValue, file);
91 base::PlatformFileInfo info; 98 base::PlatformFileInfo info;
92 // The file should be closed. 99 // The file should be closed.
93 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info)); 100 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info));
94 } 101 }
95 102
96 // Test the use of FileStream with a file handle provided at construction. 103 // Test the use of FileStream with a file handle provided at construction.
97 TEST_F(FileStreamTest, UseFileHandle) { 104 TEST_F(FileStreamTest, UseFileHandle) {
98 bool created = false; 105 bool created = false;
99 106
100 // 1. Test reading with a file handle. 107 // 1. Test reading with a file handle.
101 ASSERT_EQ(kTestDataSize, 108 ASSERT_EQ(kTestDataSize,
102 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 109 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
103 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 110 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
104 base::PlatformFile file = base::CreatePlatformFile( 111 base::PlatformFile file = base::CreatePlatformFile(
105 temp_file_path(), flags, &created, NULL); 112 temp_file_path(), flags, &created, NULL);
106 113
107 // Seek to the beginning of the file and read. 114 // Seek to the beginning of the file and read.
108 scoped_ptr<FileStream> read_stream(new FileStream(file, flags, NULL)); 115 scoped_ptr<FileStream> read_stream(
116 new FileStream(file, flags, NULL, file_task_runner()));
109 ASSERT_EQ(0, read_stream->SeekSync(FROM_BEGIN, 0)); 117 ASSERT_EQ(0, read_stream->SeekSync(FROM_BEGIN, 0));
110 ASSERT_EQ(kTestDataSize, read_stream->Available()); 118 ASSERT_EQ(kTestDataSize, read_stream->Available());
111 // Read into buffer and compare. 119 // Read into buffer and compare.
112 char buffer[kTestDataSize]; 120 char buffer[kTestDataSize];
113 ASSERT_EQ(kTestDataSize, 121 ASSERT_EQ(kTestDataSize,
114 read_stream->ReadSync(buffer, kTestDataSize)); 122 read_stream->ReadSync(buffer, kTestDataSize));
115 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 123 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
116 read_stream.reset(); 124 read_stream.reset();
117 125
118 // 2. Test writing with a file handle. 126 // 2. Test writing with a file handle.
119 base::DeleteFile(temp_file_path(), false); 127 base::DeleteFile(temp_file_path(), false);
120 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE; 128 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE;
121 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); 129 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL);
122 130
123 scoped_ptr<FileStream> write_stream(new FileStream(file, flags, NULL)); 131 scoped_ptr<FileStream> write_stream(
132 new FileStream(file, flags, NULL, file_task_runner()));
124 ASSERT_EQ(0, write_stream->SeekSync(FROM_BEGIN, 0)); 133 ASSERT_EQ(0, write_stream->SeekSync(FROM_BEGIN, 0));
125 ASSERT_EQ(kTestDataSize, 134 ASSERT_EQ(kTestDataSize,
126 write_stream->WriteSync(kTestData, kTestDataSize)); 135 write_stream->WriteSync(kTestData, kTestDataSize));
127 write_stream.reset(); 136 write_stream.reset();
128 137
129 // Read into buffer and compare to make sure the handle worked fine. 138 // Read into buffer and compare to make sure the handle worked fine.
130 ASSERT_EQ(kTestDataSize, 139 ASSERT_EQ(kTestDataSize,
131 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize)); 140 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize));
132 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 141 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
133 } 142 }
134 143
135 TEST_F(FileStreamTest, UseClosedStream) { 144 TEST_F(FileStreamTest, UseClosedStream) {
136 FileStream stream(NULL); 145 FileStream stream(NULL, file_task_runner());
137 146
138 EXPECT_FALSE(stream.IsOpen()); 147 EXPECT_FALSE(stream.IsOpen());
139 148
140 // Try seeking... 149 // Try seeking...
141 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5); 150 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5);
142 EXPECT_EQ(ERR_UNEXPECTED, new_offset); 151 EXPECT_EQ(ERR_UNEXPECTED, new_offset);
143 152
144 // Try available... 153 // Try available...
145 int64 avail = stream.Available(); 154 int64 avail = stream.Available();
146 EXPECT_EQ(ERR_UNEXPECTED, avail); 155 EXPECT_EQ(ERR_UNEXPECTED, avail);
147 156
148 // Try reading... 157 // Try reading...
149 char buf[10]; 158 char buf[10];
150 int rv = stream.ReadSync(buf, arraysize(buf)); 159 int rv = stream.ReadSync(buf, arraysize(buf));
151 EXPECT_EQ(ERR_UNEXPECTED, rv); 160 EXPECT_EQ(ERR_UNEXPECTED, rv);
152 } 161 }
153 162
154 TEST_F(FileStreamTest, BasicRead) { 163 TEST_F(FileStreamTest, BasicRead) {
155 int64 file_size; 164 int64 file_size;
156 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 165 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
157 EXPECT_TRUE(ok); 166 EXPECT_TRUE(ok);
158 167
159 FileStream stream(NULL); 168 FileStream stream(NULL, file_task_runner());
160 int flags = base::PLATFORM_FILE_OPEN | 169 int flags = base::PLATFORM_FILE_OPEN |
161 base::PLATFORM_FILE_READ; 170 base::PLATFORM_FILE_READ;
162 int rv = stream.OpenSync(temp_file_path(), flags); 171 int rv = stream.OpenSync(temp_file_path(), flags);
163 EXPECT_EQ(OK, rv); 172 EXPECT_EQ(OK, rv);
164 173
165 int64 total_bytes_avail = stream.Available(); 174 int64 total_bytes_avail = stream.Available();
166 EXPECT_EQ(file_size, total_bytes_avail); 175 EXPECT_EQ(file_size, total_bytes_avail);
167 176
168 int total_bytes_read = 0; 177 int total_bytes_read = 0;
169 178
170 std::string data_read; 179 std::string data_read;
171 for (;;) { 180 for (;;) {
172 char buf[4]; 181 char buf[4];
173 rv = stream.ReadSync(buf, arraysize(buf)); 182 rv = stream.ReadSync(buf, arraysize(buf));
174 EXPECT_LE(0, rv); 183 EXPECT_LE(0, rv);
175 if (rv <= 0) 184 if (rv <= 0)
176 break; 185 break;
177 total_bytes_read += rv; 186 total_bytes_read += rv;
178 data_read.append(buf, rv); 187 data_read.append(buf, rv);
179 } 188 }
180 EXPECT_EQ(file_size, total_bytes_read); 189 EXPECT_EQ(file_size, total_bytes_read);
181 EXPECT_EQ(kTestData, data_read); 190 EXPECT_EQ(kTestData, data_read);
182 } 191 }
183 192
184 TEST_F(FileStreamTest, AsyncRead) { 193 TEST_F(FileStreamTest, AsyncRead) {
185 int64 file_size; 194 int64 file_size;
186 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 195 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
187 EXPECT_TRUE(ok); 196 EXPECT_TRUE(ok);
188 197
189 FileStream stream(NULL); 198 FileStream stream(NULL, file_task_runner());
190 int flags = base::PLATFORM_FILE_OPEN | 199 int flags = base::PLATFORM_FILE_OPEN |
191 base::PLATFORM_FILE_READ | 200 base::PLATFORM_FILE_READ |
192 base::PLATFORM_FILE_ASYNC; 201 base::PLATFORM_FILE_ASYNC;
193 TestCompletionCallback callback; 202 TestCompletionCallback callback;
194 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 203 int rv = stream.Open(temp_file_path(), flags, callback.callback());
195 EXPECT_EQ(ERR_IO_PENDING, rv); 204 EXPECT_EQ(ERR_IO_PENDING, rv);
196 EXPECT_EQ(OK, callback.WaitForResult()); 205 EXPECT_EQ(OK, callback.WaitForResult());
197 206
198 int64 total_bytes_avail = stream.Available(); 207 int64 total_bytes_avail = stream.Available();
199 EXPECT_EQ(file_size, total_bytes_avail); 208 EXPECT_EQ(file_size, total_bytes_avail);
(...skipping 14 matching lines...) Expand all
214 } 223 }
215 EXPECT_EQ(file_size, total_bytes_read); 224 EXPECT_EQ(file_size, total_bytes_read);
216 EXPECT_EQ(kTestData, data_read); 225 EXPECT_EQ(kTestData, data_read);
217 } 226 }
218 227
219 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) { 228 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) {
220 int64 file_size; 229 int64 file_size;
221 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 230 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
222 EXPECT_TRUE(ok); 231 EXPECT_TRUE(ok);
223 232
224 scoped_ptr<FileStream> stream(new FileStream(NULL)); 233 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
225 int flags = base::PLATFORM_FILE_OPEN | 234 int flags = base::PLATFORM_FILE_OPEN |
226 base::PLATFORM_FILE_READ | 235 base::PLATFORM_FILE_READ |
227 base::PLATFORM_FILE_ASYNC; 236 base::PLATFORM_FILE_ASYNC;
228 TestCompletionCallback callback; 237 TestCompletionCallback callback;
229 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 238 int rv = stream->Open(temp_file_path(), flags, callback.callback());
230 EXPECT_EQ(ERR_IO_PENDING, rv); 239 EXPECT_EQ(ERR_IO_PENDING, rv);
231 EXPECT_EQ(OK, callback.WaitForResult()); 240 EXPECT_EQ(OK, callback.WaitForResult());
232 241
233 int64 total_bytes_avail = stream->Available(); 242 int64 total_bytes_avail = stream->Available();
234 EXPECT_EQ(file_size, total_bytes_avail); 243 EXPECT_EQ(file_size, total_bytes_avail);
235 244
236 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 245 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
237 rv = stream->Read(buf.get(), buf->size(), callback.callback()); 246 rv = stream->Read(buf.get(), buf->size(), callback.callback());
238 stream.reset(); // Delete instead of closing it. 247 stream.reset(); // Delete instead of closing it.
239 if (rv < 0) { 248 if (rv < 0) {
240 EXPECT_EQ(ERR_IO_PENDING, rv); 249 EXPECT_EQ(ERR_IO_PENDING, rv);
241 // The callback should not be called if the request is cancelled. 250 // The callback should not be called if the request is cancelled.
242 base::MessageLoop::current()->RunUntilIdle(); 251 base::RunLoop().RunUntilIdle();
243 EXPECT_FALSE(callback.have_result()); 252 EXPECT_FALSE(callback.have_result());
244 } else { 253 } else {
245 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv)); 254 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv));
246 } 255 }
247 } 256 }
248 257
249 TEST_F(FileStreamTest, BasicRead_FromOffset) { 258 TEST_F(FileStreamTest, BasicRead_FromOffset) {
250 int64 file_size; 259 int64 file_size;
251 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 260 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
252 EXPECT_TRUE(ok); 261 EXPECT_TRUE(ok);
253 262
254 FileStream stream(NULL); 263 FileStream stream(NULL, file_task_runner());
255 int flags = base::PLATFORM_FILE_OPEN | 264 int flags = base::PLATFORM_FILE_OPEN |
256 base::PLATFORM_FILE_READ; 265 base::PLATFORM_FILE_READ;
257 int rv = stream.OpenSync(temp_file_path(), flags); 266 int rv = stream.OpenSync(temp_file_path(), flags);
258 EXPECT_EQ(OK, rv); 267 EXPECT_EQ(OK, rv);
259 268
260 const int64 kOffset = 3; 269 const int64 kOffset = 3;
261 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); 270 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset);
262 EXPECT_EQ(kOffset, new_offset); 271 EXPECT_EQ(kOffset, new_offset);
263 272
264 int64 total_bytes_avail = stream.Available(); 273 int64 total_bytes_avail = stream.Available();
(...skipping 14 matching lines...) Expand all
279 EXPECT_EQ(file_size - kOffset, total_bytes_read); 288 EXPECT_EQ(file_size - kOffset, total_bytes_read);
280 EXPECT_TRUE(data_read == kTestData + kOffset); 289 EXPECT_TRUE(data_read == kTestData + kOffset);
281 EXPECT_EQ(kTestData + kOffset, data_read); 290 EXPECT_EQ(kTestData + kOffset, data_read);
282 } 291 }
283 292
284 TEST_F(FileStreamTest, AsyncRead_FromOffset) { 293 TEST_F(FileStreamTest, AsyncRead_FromOffset) {
285 int64 file_size; 294 int64 file_size;
286 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 295 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
287 EXPECT_TRUE(ok); 296 EXPECT_TRUE(ok);
288 297
289 FileStream stream(NULL); 298 FileStream stream(NULL, file_task_runner());
290 int flags = base::PLATFORM_FILE_OPEN | 299 int flags = base::PLATFORM_FILE_OPEN |
291 base::PLATFORM_FILE_READ | 300 base::PLATFORM_FILE_READ |
292 base::PLATFORM_FILE_ASYNC; 301 base::PLATFORM_FILE_ASYNC;
293 TestCompletionCallback callback; 302 TestCompletionCallback callback;
294 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 303 int rv = stream.Open(temp_file_path(), flags, callback.callback());
295 EXPECT_EQ(ERR_IO_PENDING, rv); 304 EXPECT_EQ(ERR_IO_PENDING, rv);
296 EXPECT_EQ(OK, callback.WaitForResult()); 305 EXPECT_EQ(OK, callback.WaitForResult());
297 306
298 TestInt64CompletionCallback callback64; 307 TestInt64CompletionCallback callback64;
299 const int64 kOffset = 3; 308 const int64 kOffset = 3;
(...skipping 17 matching lines...) Expand all
317 if (rv <= 0) 326 if (rv <= 0)
318 break; 327 break;
319 total_bytes_read += rv; 328 total_bytes_read += rv;
320 data_read.append(buf->data(), rv); 329 data_read.append(buf->data(), rv);
321 } 330 }
322 EXPECT_EQ(file_size - kOffset, total_bytes_read); 331 EXPECT_EQ(file_size - kOffset, total_bytes_read);
323 EXPECT_EQ(kTestData + kOffset, data_read); 332 EXPECT_EQ(kTestData + kOffset, data_read);
324 } 333 }
325 334
326 TEST_F(FileStreamTest, SeekAround) { 335 TEST_F(FileStreamTest, SeekAround) {
327 FileStream stream(NULL); 336 FileStream stream(NULL, file_task_runner());
328 int flags = base::PLATFORM_FILE_OPEN | 337 int flags = base::PLATFORM_FILE_OPEN |
329 base::PLATFORM_FILE_READ; 338 base::PLATFORM_FILE_READ;
330 int rv = stream.OpenSync(temp_file_path(), flags); 339 int rv = stream.OpenSync(temp_file_path(), flags);
331 EXPECT_EQ(OK, rv); 340 EXPECT_EQ(OK, rv);
332 341
333 const int64 kOffset = 3; 342 const int64 kOffset = 3;
334 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); 343 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset);
335 EXPECT_EQ(kOffset, new_offset); 344 EXPECT_EQ(kOffset, new_offset);
336 345
337 new_offset = stream.SeekSync(FROM_CURRENT, kOffset); 346 new_offset = stream.SeekSync(FROM_CURRENT, kOffset);
338 EXPECT_EQ(2 * kOffset, new_offset); 347 EXPECT_EQ(2 * kOffset, new_offset);
339 348
340 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset); 349 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset);
341 EXPECT_EQ(kOffset, new_offset); 350 EXPECT_EQ(kOffset, new_offset);
342 351
343 const int kTestDataLen = arraysize(kTestData) - 1; 352 const int kTestDataLen = arraysize(kTestData) - 1;
344 353
345 new_offset = stream.SeekSync(FROM_END, -kTestDataLen); 354 new_offset = stream.SeekSync(FROM_END, -kTestDataLen);
346 EXPECT_EQ(0, new_offset); 355 EXPECT_EQ(0, new_offset);
347 } 356 }
348 357
349 TEST_F(FileStreamTest, AsyncSeekAround) { 358 TEST_F(FileStreamTest, AsyncSeekAround) {
350 FileStream stream(NULL); 359 FileStream stream(NULL, file_task_runner());
351 int flags = base::PLATFORM_FILE_OPEN | 360 int flags = base::PLATFORM_FILE_OPEN |
352 base::PLATFORM_FILE_ASYNC | 361 base::PLATFORM_FILE_ASYNC |
353 base::PLATFORM_FILE_READ; 362 base::PLATFORM_FILE_READ;
354 TestCompletionCallback callback; 363 TestCompletionCallback callback;
355 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 364 int rv = stream.Open(temp_file_path(), flags, callback.callback());
356 EXPECT_EQ(ERR_IO_PENDING, rv); 365 EXPECT_EQ(ERR_IO_PENDING, rv);
357 EXPECT_EQ(OK, callback.WaitForResult()); 366 EXPECT_EQ(OK, callback.WaitForResult());
358 367
359 TestInt64CompletionCallback callback64; 368 TestInt64CompletionCallback callback64;
360 369
(...skipping 15 matching lines...) Expand all
376 385
377 const int kTestDataLen = arraysize(kTestData) - 1; 386 const int kTestDataLen = arraysize(kTestData) - 1;
378 387
379 rv = stream.Seek(FROM_END, -kTestDataLen, callback64.callback()); 388 rv = stream.Seek(FROM_END, -kTestDataLen, callback64.callback());
380 ASSERT_EQ(ERR_IO_PENDING, rv); 389 ASSERT_EQ(ERR_IO_PENDING, rv);
381 new_offset = callback64.WaitForResult(); 390 new_offset = callback64.WaitForResult();
382 EXPECT_EQ(0, new_offset); 391 EXPECT_EQ(0, new_offset);
383 } 392 }
384 393
385 TEST_F(FileStreamTest, BasicWrite) { 394 TEST_F(FileStreamTest, BasicWrite) {
386 scoped_ptr<FileStream> stream(new FileStream(NULL)); 395 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
387 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 396 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
388 base::PLATFORM_FILE_WRITE; 397 base::PLATFORM_FILE_WRITE;
389 int rv = stream->OpenSync(temp_file_path(), flags); 398 int rv = stream->OpenSync(temp_file_path(), flags);
390 EXPECT_EQ(OK, rv); 399 EXPECT_EQ(OK, rv);
391 400
392 int64 file_size; 401 int64 file_size;
393 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 402 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
394 EXPECT_TRUE(ok); 403 EXPECT_TRUE(ok);
395 EXPECT_EQ(0, file_size); 404 EXPECT_EQ(0, file_size);
396 405
397 rv = stream->WriteSync(kTestData, kTestDataSize); 406 rv = stream->WriteSync(kTestData, kTestDataSize);
398 EXPECT_EQ(kTestDataSize, rv); 407 EXPECT_EQ(kTestDataSize, rv);
399 stream.reset(); 408 stream.reset();
400 409
401 ok = file_util::GetFileSize(temp_file_path(), &file_size); 410 ok = file_util::GetFileSize(temp_file_path(), &file_size);
402 EXPECT_TRUE(ok); 411 EXPECT_TRUE(ok);
403 EXPECT_EQ(kTestDataSize, file_size); 412 EXPECT_EQ(kTestDataSize, file_size);
404 } 413 }
405 414
406 TEST_F(FileStreamTest, AsyncWrite) { 415 TEST_F(FileStreamTest, AsyncWrite) {
407 FileStream stream(NULL); 416 FileStream stream(NULL, file_task_runner());
408 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 417 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
409 base::PLATFORM_FILE_WRITE | 418 base::PLATFORM_FILE_WRITE |
410 base::PLATFORM_FILE_ASYNC; 419 base::PLATFORM_FILE_ASYNC;
411 TestCompletionCallback callback; 420 TestCompletionCallback callback;
412 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 421 int rv = stream.Open(temp_file_path(), flags, callback.callback());
413 EXPECT_EQ(ERR_IO_PENDING, rv); 422 EXPECT_EQ(ERR_IO_PENDING, rv);
414 EXPECT_EQ(OK, callback.WaitForResult()); 423 EXPECT_EQ(OK, callback.WaitForResult());
415 424
416 int64 file_size; 425 int64 file_size;
417 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 426 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
(...skipping 15 matching lines...) Expand all
433 break; 442 break;
434 drainable->DidConsume(rv); 443 drainable->DidConsume(rv);
435 total_bytes_written += rv; 444 total_bytes_written += rv;
436 } 445 }
437 ok = file_util::GetFileSize(temp_file_path(), &file_size); 446 ok = file_util::GetFileSize(temp_file_path(), &file_size);
438 EXPECT_TRUE(ok); 447 EXPECT_TRUE(ok);
439 EXPECT_EQ(file_size, total_bytes_written); 448 EXPECT_EQ(file_size, total_bytes_written);
440 } 449 }
441 450
442 TEST_F(FileStreamTest, AsyncWrite_EarlyDelete) { 451 TEST_F(FileStreamTest, AsyncWrite_EarlyDelete) {
443 scoped_ptr<FileStream> stream(new FileStream(NULL)); 452 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
444 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 453 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
445 base::PLATFORM_FILE_WRITE | 454 base::PLATFORM_FILE_WRITE |
446 base::PLATFORM_FILE_ASYNC; 455 base::PLATFORM_FILE_ASYNC;
447 TestCompletionCallback callback; 456 TestCompletionCallback callback;
448 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 457 int rv = stream->Open(temp_file_path(), flags, callback.callback());
449 EXPECT_EQ(ERR_IO_PENDING, rv); 458 EXPECT_EQ(ERR_IO_PENDING, rv);
450 EXPECT_EQ(OK, callback.WaitForResult()); 459 EXPECT_EQ(OK, callback.WaitForResult());
451 460
452 int64 file_size; 461 int64 file_size;
453 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 462 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
454 EXPECT_TRUE(ok); 463 EXPECT_TRUE(ok);
455 EXPECT_EQ(0, file_size); 464 EXPECT_EQ(0, file_size);
456 465
457 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 466 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
458 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 467 rv = stream->Write(buf.get(), buf->size(), callback.callback());
459 stream.reset(); 468 stream.reset();
460 if (rv < 0) { 469 if (rv < 0) {
461 EXPECT_EQ(ERR_IO_PENDING, rv); 470 EXPECT_EQ(ERR_IO_PENDING, rv);
462 // The callback should not be called if the request is cancelled. 471 // The callback should not be called if the request is cancelled.
463 base::MessageLoop::current()->RunUntilIdle(); 472 base::RunLoop().RunUntilIdle();
464 EXPECT_FALSE(callback.have_result()); 473 EXPECT_FALSE(callback.have_result());
465 } else { 474 } else {
466 ok = file_util::GetFileSize(temp_file_path(), &file_size); 475 ok = file_util::GetFileSize(temp_file_path(), &file_size);
467 EXPECT_TRUE(ok); 476 EXPECT_TRUE(ok);
468 EXPECT_EQ(file_size, rv); 477 EXPECT_EQ(file_size, rv);
469 } 478 }
470 } 479 }
471 480
472 TEST_F(FileStreamTest, BasicWrite_FromOffset) { 481 TEST_F(FileStreamTest, BasicWrite_FromOffset) {
473 scoped_ptr<FileStream> stream(new FileStream(NULL)); 482 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
474 int flags = base::PLATFORM_FILE_OPEN | 483 int flags = base::PLATFORM_FILE_OPEN |
475 base::PLATFORM_FILE_WRITE; 484 base::PLATFORM_FILE_WRITE;
476 int rv = stream->OpenSync(temp_file_path(), flags); 485 int rv = stream->OpenSync(temp_file_path(), flags);
477 EXPECT_EQ(OK, rv); 486 EXPECT_EQ(OK, rv);
478 487
479 int64 file_size; 488 int64 file_size;
480 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 489 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
481 EXPECT_TRUE(ok); 490 EXPECT_TRUE(ok);
482 EXPECT_EQ(kTestDataSize, file_size); 491 EXPECT_EQ(kTestDataSize, file_size);
483 492
484 const int64 kOffset = 0; 493 const int64 kOffset = 0;
485 int64 new_offset = stream->SeekSync(FROM_END, kOffset); 494 int64 new_offset = stream->SeekSync(FROM_END, kOffset);
486 EXPECT_EQ(kTestDataSize, new_offset); 495 EXPECT_EQ(kTestDataSize, new_offset);
487 496
488 rv = stream->WriteSync(kTestData, kTestDataSize); 497 rv = stream->WriteSync(kTestData, kTestDataSize);
489 EXPECT_EQ(kTestDataSize, rv); 498 EXPECT_EQ(kTestDataSize, rv);
490 stream.reset(); 499 stream.reset();
491 500
492 ok = file_util::GetFileSize(temp_file_path(), &file_size); 501 ok = file_util::GetFileSize(temp_file_path(), &file_size);
493 EXPECT_TRUE(ok); 502 EXPECT_TRUE(ok);
494 EXPECT_EQ(kTestDataSize * 2, file_size); 503 EXPECT_EQ(kTestDataSize * 2, file_size);
495 } 504 }
496 505
497 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { 506 TEST_F(FileStreamTest, AsyncWrite_FromOffset) {
498 int64 file_size; 507 int64 file_size;
499 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 508 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
500 EXPECT_TRUE(ok); 509 EXPECT_TRUE(ok);
501 510
502 FileStream stream(NULL); 511 FileStream stream(NULL, file_task_runner());
503 int flags = base::PLATFORM_FILE_OPEN | 512 int flags = base::PLATFORM_FILE_OPEN |
504 base::PLATFORM_FILE_WRITE | 513 base::PLATFORM_FILE_WRITE |
505 base::PLATFORM_FILE_ASYNC; 514 base::PLATFORM_FILE_ASYNC;
506 TestCompletionCallback callback; 515 TestCompletionCallback callback;
507 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 516 int rv = stream.Open(temp_file_path(), flags, callback.callback());
508 EXPECT_EQ(ERR_IO_PENDING, rv); 517 EXPECT_EQ(ERR_IO_PENDING, rv);
509 EXPECT_EQ(OK, callback.WaitForResult()); 518 EXPECT_EQ(OK, callback.WaitForResult());
510 519
511 TestInt64CompletionCallback callback64; 520 TestInt64CompletionCallback callback64;
512 const int64 kOffset = 0; 521 const int64 kOffset = 0;
(...skipping 21 matching lines...) Expand all
534 ok = file_util::GetFileSize(temp_file_path(), &file_size); 543 ok = file_util::GetFileSize(temp_file_path(), &file_size);
535 EXPECT_TRUE(ok); 544 EXPECT_TRUE(ok);
536 EXPECT_EQ(file_size, kTestDataSize * 2); 545 EXPECT_EQ(file_size, kTestDataSize * 2);
537 } 546 }
538 547
539 TEST_F(FileStreamTest, BasicReadWrite) { 548 TEST_F(FileStreamTest, BasicReadWrite) {
540 int64 file_size; 549 int64 file_size;
541 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 550 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
542 EXPECT_TRUE(ok); 551 EXPECT_TRUE(ok);
543 552
544 scoped_ptr<FileStream> stream(new FileStream(NULL)); 553 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
545 int flags = base::PLATFORM_FILE_OPEN | 554 int flags = base::PLATFORM_FILE_OPEN |
546 base::PLATFORM_FILE_READ | 555 base::PLATFORM_FILE_READ |
547 base::PLATFORM_FILE_WRITE; 556 base::PLATFORM_FILE_WRITE;
548 int rv = stream->OpenSync(temp_file_path(), flags); 557 int rv = stream->OpenSync(temp_file_path(), flags);
549 EXPECT_EQ(OK, rv); 558 EXPECT_EQ(OK, rv);
550 559
551 int64 total_bytes_avail = stream->Available(); 560 int64 total_bytes_avail = stream->Available();
552 EXPECT_EQ(file_size, total_bytes_avail); 561 EXPECT_EQ(file_size, total_bytes_avail);
553 562
554 int total_bytes_read = 0; 563 int total_bytes_read = 0;
(...skipping 18 matching lines...) Expand all
573 ok = file_util::GetFileSize(temp_file_path(), &file_size); 582 ok = file_util::GetFileSize(temp_file_path(), &file_size);
574 EXPECT_TRUE(ok); 583 EXPECT_TRUE(ok);
575 EXPECT_EQ(kTestDataSize * 2, file_size); 584 EXPECT_EQ(kTestDataSize * 2, file_size);
576 } 585 }
577 586
578 TEST_F(FileStreamTest, BasicWriteRead) { 587 TEST_F(FileStreamTest, BasicWriteRead) {
579 int64 file_size; 588 int64 file_size;
580 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 589 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
581 EXPECT_TRUE(ok); 590 EXPECT_TRUE(ok);
582 591
583 scoped_ptr<FileStream> stream(new FileStream(NULL)); 592 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
584 int flags = base::PLATFORM_FILE_OPEN | 593 int flags = base::PLATFORM_FILE_OPEN |
585 base::PLATFORM_FILE_READ | 594 base::PLATFORM_FILE_READ |
586 base::PLATFORM_FILE_WRITE; 595 base::PLATFORM_FILE_WRITE;
587 int rv = stream->OpenSync(temp_file_path(), flags); 596 int rv = stream->OpenSync(temp_file_path(), flags);
588 EXPECT_EQ(OK, rv); 597 EXPECT_EQ(OK, rv);
589 598
590 int64 total_bytes_avail = stream->Available(); 599 int64 total_bytes_avail = stream->Available();
591 EXPECT_EQ(file_size, total_bytes_avail); 600 EXPECT_EQ(file_size, total_bytes_avail);
592 601
593 int64 offset = stream->SeekSync(FROM_END, 0); 602 int64 offset = stream->SeekSync(FROM_END, 0);
(...skipping 27 matching lines...) Expand all
621 const std::string kExpectedFileData = 630 const std::string kExpectedFileData =
622 std::string(kTestData) + std::string(kTestData); 631 std::string(kTestData) + std::string(kTestData);
623 EXPECT_EQ(kExpectedFileData, data_read); 632 EXPECT_EQ(kExpectedFileData, data_read);
624 } 633 }
625 634
626 TEST_F(FileStreamTest, BasicAsyncReadWrite) { 635 TEST_F(FileStreamTest, BasicAsyncReadWrite) {
627 int64 file_size; 636 int64 file_size;
628 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 637 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
629 EXPECT_TRUE(ok); 638 EXPECT_TRUE(ok);
630 639
631 scoped_ptr<FileStream> stream(new FileStream(NULL)); 640 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
632 int flags = base::PLATFORM_FILE_OPEN | 641 int flags = base::PLATFORM_FILE_OPEN |
633 base::PLATFORM_FILE_READ | 642 base::PLATFORM_FILE_READ |
634 base::PLATFORM_FILE_WRITE | 643 base::PLATFORM_FILE_WRITE |
635 base::PLATFORM_FILE_ASYNC; 644 base::PLATFORM_FILE_ASYNC;
636 TestCompletionCallback callback; 645 TestCompletionCallback callback;
637 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 646 int rv = stream->Open(temp_file_path(), flags, callback.callback());
638 EXPECT_EQ(ERR_IO_PENDING, rv); 647 EXPECT_EQ(ERR_IO_PENDING, rv);
639 EXPECT_EQ(OK, callback.WaitForResult()); 648 EXPECT_EQ(OK, callback.WaitForResult());
640 649
641 int64 total_bytes_avail = stream->Available(); 650 int64 total_bytes_avail = stream->Available();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 ok = file_util::GetFileSize(temp_file_path(), &file_size); 689 ok = file_util::GetFileSize(temp_file_path(), &file_size);
681 EXPECT_TRUE(ok); 690 EXPECT_TRUE(ok);
682 EXPECT_EQ(kTestDataSize * 2, file_size); 691 EXPECT_EQ(kTestDataSize * 2, file_size);
683 } 692 }
684 693
685 TEST_F(FileStreamTest, BasicAsyncWriteRead) { 694 TEST_F(FileStreamTest, BasicAsyncWriteRead) {
686 int64 file_size; 695 int64 file_size;
687 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 696 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
688 EXPECT_TRUE(ok); 697 EXPECT_TRUE(ok);
689 698
690 scoped_ptr<FileStream> stream(new FileStream(NULL)); 699 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
691 int flags = base::PLATFORM_FILE_OPEN | 700 int flags = base::PLATFORM_FILE_OPEN |
692 base::PLATFORM_FILE_READ | 701 base::PLATFORM_FILE_READ |
693 base::PLATFORM_FILE_WRITE | 702 base::PLATFORM_FILE_WRITE |
694 base::PLATFORM_FILE_ASYNC; 703 base::PLATFORM_FILE_ASYNC;
695 TestCompletionCallback callback; 704 TestCompletionCallback callback;
696 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 705 int rv = stream->Open(temp_file_path(), flags, callback.callback());
697 EXPECT_EQ(ERR_IO_PENDING, rv); 706 EXPECT_EQ(ERR_IO_PENDING, rv);
698 EXPECT_EQ(OK, callback.WaitForResult()); 707 EXPECT_EQ(OK, callback.WaitForResult());
699 708
700 int64 total_bytes_avail = stream->Available(); 709 int64 total_bytes_avail = stream->Available();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 data_read_(data_read), 780 data_read_(data_read),
772 callback_(base::Bind(&TestWriteReadCompletionCallback::OnComplete, 781 callback_(base::Bind(&TestWriteReadCompletionCallback::OnComplete,
773 base::Unretained(this))), 782 base::Unretained(this))),
774 test_data_(CreateTestDataBuffer()), 783 test_data_(CreateTestDataBuffer()),
775 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {} 784 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {}
776 785
777 int WaitForResult() { 786 int WaitForResult() {
778 DCHECK(!waiting_for_result_); 787 DCHECK(!waiting_for_result_);
779 while (!have_result_) { 788 while (!have_result_) {
780 waiting_for_result_ = true; 789 waiting_for_result_ = true;
781 base::MessageLoop::current()->Run(); 790 base::RunLoop().Run();
782 waiting_for_result_ = false; 791 waiting_for_result_ = false;
783 } 792 }
784 have_result_ = false; // auto-reset for next callback 793 have_result_ = false; // auto-reset for next callback
785 return result_; 794 return result_;
786 } 795 }
787 796
788 const CompletionCallback& callback() const { return callback_; } 797 const CompletionCallback& callback() const { return callback_; }
789 798
790 private: 799 private:
791 void OnComplete(int result) { 800 void OnComplete(int result) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 scoped_refptr<DrainableIOBuffer> drainable_; 855 scoped_refptr<DrainableIOBuffer> drainable_;
847 856
848 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback); 857 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback);
849 }; 858 };
850 859
851 TEST_F(FileStreamTest, AsyncWriteRead) { 860 TEST_F(FileStreamTest, AsyncWriteRead) {
852 int64 file_size; 861 int64 file_size;
853 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 862 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
854 EXPECT_TRUE(ok); 863 EXPECT_TRUE(ok);
855 864
856 scoped_ptr<FileStream> stream(new FileStream(NULL)); 865 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
857 int flags = base::PLATFORM_FILE_OPEN | 866 int flags = base::PLATFORM_FILE_OPEN |
858 base::PLATFORM_FILE_READ | 867 base::PLATFORM_FILE_READ |
859 base::PLATFORM_FILE_WRITE | 868 base::PLATFORM_FILE_WRITE |
860 base::PLATFORM_FILE_ASYNC; 869 base::PLATFORM_FILE_ASYNC;
861 TestCompletionCallback open_callback; 870 TestCompletionCallback open_callback;
862 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 871 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
863 EXPECT_EQ(ERR_IO_PENDING, rv); 872 EXPECT_EQ(ERR_IO_PENDING, rv);
864 EXPECT_EQ(OK, open_callback.WaitForResult()); 873 EXPECT_EQ(OK, open_callback.WaitForResult());
865 874
866 int64 total_bytes_avail = stream->Available(); 875 int64 total_bytes_avail = stream->Available();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 total_bytes_written_(total_bytes_written), 913 total_bytes_written_(total_bytes_written),
905 callback_(base::Bind(&TestWriteCloseCompletionCallback::OnComplete, 914 callback_(base::Bind(&TestWriteCloseCompletionCallback::OnComplete,
906 base::Unretained(this))), 915 base::Unretained(this))),
907 test_data_(CreateTestDataBuffer()), 916 test_data_(CreateTestDataBuffer()),
908 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {} 917 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {}
909 918
910 int WaitForResult() { 919 int WaitForResult() {
911 DCHECK(!waiting_for_result_); 920 DCHECK(!waiting_for_result_);
912 while (!have_result_) { 921 while (!have_result_) {
913 waiting_for_result_ = true; 922 waiting_for_result_ = true;
914 base::MessageLoop::current()->Run(); 923 base::RunLoop().Run();
915 waiting_for_result_ = false; 924 waiting_for_result_ = false;
916 } 925 }
917 have_result_ = false; // auto-reset for next callback 926 have_result_ = false; // auto-reset for next callback
918 return result_; 927 return result_;
919 } 928 }
920 929
921 const CompletionCallback& callback() const { return callback_; } 930 const CompletionCallback& callback() const { return callback_; }
922 931
923 private: 932 private:
924 void OnComplete(int result) { 933 void OnComplete(int result) {
(...skipping 30 matching lines...) Expand all
955 scoped_refptr<DrainableIOBuffer> drainable_; 964 scoped_refptr<DrainableIOBuffer> drainable_;
956 965
957 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback); 966 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback);
958 }; 967 };
959 968
960 TEST_F(FileStreamTest, AsyncWriteClose) { 969 TEST_F(FileStreamTest, AsyncWriteClose) {
961 int64 file_size; 970 int64 file_size;
962 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 971 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
963 EXPECT_TRUE(ok); 972 EXPECT_TRUE(ok);
964 973
965 scoped_ptr<FileStream> stream(new FileStream(NULL)); 974 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
966 int flags = base::PLATFORM_FILE_OPEN | 975 int flags = base::PLATFORM_FILE_OPEN |
967 base::PLATFORM_FILE_READ | 976 base::PLATFORM_FILE_READ |
968 base::PLATFORM_FILE_WRITE | 977 base::PLATFORM_FILE_WRITE |
969 base::PLATFORM_FILE_ASYNC; 978 base::PLATFORM_FILE_ASYNC;
970 TestCompletionCallback open_callback; 979 TestCompletionCallback open_callback;
971 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 980 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
972 EXPECT_EQ(ERR_IO_PENDING, rv); 981 EXPECT_EQ(ERR_IO_PENDING, rv);
973 EXPECT_EQ(OK, open_callback.WaitForResult()); 982 EXPECT_EQ(OK, open_callback.WaitForResult());
974 983
975 int64 total_bytes_avail = stream->Available(); 984 int64 total_bytes_avail = stream->Available();
(...skipping 16 matching lines...) Expand all
992 1001
993 ok = file_util::GetFileSize(temp_file_path(), &file_size); 1002 ok = file_util::GetFileSize(temp_file_path(), &file_size);
994 EXPECT_TRUE(ok); 1003 EXPECT_TRUE(ok);
995 EXPECT_EQ(kTestDataSize * 2, file_size); 1004 EXPECT_EQ(kTestDataSize * 2, file_size);
996 } 1005 }
997 1006
998 // Tests truncating a file. 1007 // Tests truncating a file.
999 TEST_F(FileStreamTest, Truncate) { 1008 TEST_F(FileStreamTest, Truncate) {
1000 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE; 1009 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE;
1001 1010
1002 scoped_ptr<FileStream> write_stream(new FileStream(NULL)); 1011 scoped_ptr<FileStream> write_stream(new FileStream(NULL, file_task_runner()));
1003 ASSERT_EQ(OK, write_stream->OpenSync(temp_file_path(), flags)); 1012 ASSERT_EQ(OK, write_stream->OpenSync(temp_file_path(), flags));
1004 1013
1005 // Write some data to the file. 1014 // Write some data to the file.
1006 const char test_data[] = "0123456789"; 1015 const char test_data[] = "0123456789";
1007 write_stream->WriteSync(test_data, arraysize(test_data)); 1016 write_stream->WriteSync(test_data, arraysize(test_data));
1008 1017
1009 // Truncate the file. 1018 // Truncate the file.
1010 ASSERT_EQ(4, write_stream->Truncate(4)); 1019 ASSERT_EQ(4, write_stream->Truncate(4));
1011 1020
1012 // Write again. 1021 // Write again.
1013 write_stream->WriteSync(test_data, 4); 1022 write_stream->WriteSync(test_data, 4);
1014 1023
1015 // Close the stream. 1024 // Close the stream.
1016 write_stream.reset(); 1025 write_stream.reset();
1017 1026
1018 // Read in the contents and make sure we get back what we expected. 1027 // Read in the contents and make sure we get back what we expected.
1019 std::string read_contents; 1028 std::string read_contents;
1020 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &read_contents)); 1029 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &read_contents));
1021 1030
1022 EXPECT_EQ("01230123", read_contents); 1031 EXPECT_EQ("01230123", read_contents);
1023 } 1032 }
1024 1033
1025 TEST_F(FileStreamTest, AsyncOpenAndDelete) { 1034 TEST_F(FileStreamTest, AsyncOpenAndDelete) {
1026 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1035 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
1027 int flags = base::PLATFORM_FILE_OPEN | 1036 int flags = base::PLATFORM_FILE_OPEN |
1028 base::PLATFORM_FILE_WRITE | 1037 base::PLATFORM_FILE_WRITE |
1029 base::PLATFORM_FILE_ASYNC; 1038 base::PLATFORM_FILE_ASYNC;
1030 TestCompletionCallback open_callback; 1039 TestCompletionCallback open_callback;
1031 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 1040 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
1032 EXPECT_EQ(ERR_IO_PENDING, rv); 1041 EXPECT_EQ(ERR_IO_PENDING, rv);
1033 1042
1034 // Delete the stream without waiting for the open operation to be 1043 // Delete the stream without waiting for the open operation to be
1035 // complete. Should be safe. 1044 // complete. Should be safe.
1036 stream.reset(); 1045 stream.reset();
1037 // open_callback won't be called. 1046 // open_callback won't be called.
1038 base::MessageLoop::current()->RunUntilIdle(); 1047 base::RunLoop().RunUntilIdle();
1039 EXPECT_FALSE(open_callback.have_result()); 1048 EXPECT_FALSE(open_callback.have_result());
1040 } 1049 }
1041 1050
1042 // Verify that async Write() errors are mapped correctly. 1051 // Verify that async Write() errors are mapped correctly.
1043 TEST_F(FileStreamTest, AsyncWriteError) { 1052 TEST_F(FileStreamTest, AsyncWriteError) {
1044 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1053 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
1045 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 1054 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
1046 base::PLATFORM_FILE_WRITE | 1055 base::PLATFORM_FILE_WRITE |
1047 base::PLATFORM_FILE_ASYNC; 1056 base::PLATFORM_FILE_ASYNC;
1048 TestCompletionCallback callback; 1057 TestCompletionCallback callback;
1049 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 1058 int rv = stream->Open(temp_file_path(), flags, callback.callback());
1050 EXPECT_EQ(ERR_IO_PENDING, rv); 1059 EXPECT_EQ(ERR_IO_PENDING, rv);
1051 EXPECT_EQ(OK, callback.WaitForResult()); 1060 EXPECT_EQ(OK, callback.WaitForResult());
1052 1061
1053 // Try passing NULL buffer to Write() and check that it fails. 1062 // Try passing NULL buffer to Write() and check that it fails.
1054 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); 1063 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL);
1055 rv = stream->Write(buf.get(), 1, callback.callback()); 1064 rv = stream->Write(buf.get(), 1, callback.callback());
1056 if (rv == ERR_IO_PENDING) 1065 if (rv == ERR_IO_PENDING)
1057 rv = callback.WaitForResult(); 1066 rv = callback.WaitForResult();
1058 EXPECT_LT(rv, 0); 1067 EXPECT_LT(rv, 0);
1059 } 1068 }
1060 1069
1061 // Verify that async Read() errors are mapped correctly. 1070 // Verify that async Read() errors are mapped correctly.
1062 TEST_F(FileStreamTest, AsyncReadError) { 1071 TEST_F(FileStreamTest, AsyncReadError) {
1063 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1072 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
1064 int flags = base::PLATFORM_FILE_OPEN | 1073 int flags = base::PLATFORM_FILE_OPEN |
1065 base::PLATFORM_FILE_READ | 1074 base::PLATFORM_FILE_READ |
1066 base::PLATFORM_FILE_ASYNC; 1075 base::PLATFORM_FILE_ASYNC;
1067 TestCompletionCallback callback; 1076 TestCompletionCallback callback;
1068 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 1077 int rv = stream->Open(temp_file_path(), flags, callback.callback());
1069 EXPECT_EQ(ERR_IO_PENDING, rv); 1078 EXPECT_EQ(ERR_IO_PENDING, rv);
1070 EXPECT_EQ(OK, callback.WaitForResult()); 1079 EXPECT_EQ(OK, callback.WaitForResult());
1071 1080
1072 // Try passing NULL buffer to Read() and check that it fails. 1081 // Try passing NULL buffer to Read() and check that it fails.
1073 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); 1082 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL);
1074 rv = stream->Read(buf.get(), 1, callback.callback()); 1083 rv = stream->Read(buf.get(), 1, callback.callback());
1075 if (rv == ERR_IO_PENDING) 1084 if (rv == ERR_IO_PENDING)
1076 rv = callback.WaitForResult(); 1085 rv = callback.WaitForResult();
1077 EXPECT_LT(rv, 0); 1086 EXPECT_LT(rv, 0);
1078 } 1087 }
1079 1088
1080 } // namespace 1089 } // namespace
1081 1090
1082 } // namespace net 1091 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698