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

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: remove unneeded include 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/message_loop/message_loop_proxy.h"
11 #include "base/path_service.h" 12 #include "base/path_service.h"
12 #include "base/platform_file.h" 13 #include "base/platform_file.h"
14 #include "base/run_loop.h"
13 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.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 {
(...skipping 16 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 // FileStreamContexts must be asynchronously closed on the file task runner
52 // before they can be deleted. Pump the RunLoop to avoid leaks.
53 base::RunLoop().RunUntilIdle();
49 PlatformTest::TearDown(); 54 PlatformTest::TearDown();
50 } 55 }
51 56
52 const base::FilePath temp_file_path() const { return temp_file_path_; } 57 const base::FilePath temp_file_path() const { return temp_file_path_; }
53 58
54 private: 59 private:
55 base::FilePath temp_file_path_; 60 base::FilePath temp_file_path_;
56 }; 61 };
57 62
58 namespace { 63 namespace {
59 64
60 TEST_F(FileStreamTest, BasicOpenClose) { 65 TEST_F(FileStreamTest, BasicOpenClose) {
61 base::PlatformFile file = base::kInvalidPlatformFileValue; 66 base::PlatformFile file = base::kInvalidPlatformFileValue;
62 { 67 {
63 FileStream stream(NULL); 68 FileStream stream(NULL, base::MessageLoopProxy::current());
64 int rv = stream.OpenSync(temp_file_path(), 69 int rv = stream.OpenSync(temp_file_path(),
65 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ); 70 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ);
66 EXPECT_EQ(OK, rv); 71 EXPECT_EQ(OK, rv);
67 EXPECT_TRUE(stream.IsOpen()); 72 EXPECT_TRUE(stream.IsOpen());
68 file = stream.GetPlatformFileForTesting(); 73 file = stream.GetPlatformFileForTesting();
69 } 74 }
70 EXPECT_NE(base::kInvalidPlatformFileValue, file); 75 EXPECT_NE(base::kInvalidPlatformFileValue, file);
71 base::PlatformFileInfo info; 76 base::PlatformFileInfo info;
72 // The file should be closed. 77 // The file should be closed.
73 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info)); 78 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info));
74 } 79 }
75 80
76 TEST_F(FileStreamTest, FileHandleNotLeftOpen) { 81 TEST_F(FileStreamTest, FileHandleNotLeftOpen) {
77 bool created = false; 82 bool created = false;
78 ASSERT_EQ(kTestDataSize, 83 ASSERT_EQ(kTestDataSize,
79 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 84 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
80 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 85 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
81 base::PlatformFile file = base::CreatePlatformFile( 86 base::PlatformFile file = base::CreatePlatformFile(
82 temp_file_path(), flags, &created, NULL); 87 temp_file_path(), flags, &created, NULL);
83 88
84 { 89 {
85 // Seek to the beginning of the file and read. 90 // Seek to the beginning of the file and read.
86 FileStream read_stream(file, flags, NULL); 91 FileStream read_stream(file, flags, NULL,
92 base::MessageLoopProxy::current());
87 EXPECT_TRUE(read_stream.IsOpen()); 93 EXPECT_TRUE(read_stream.IsOpen());
88 } 94 }
89 95
90 EXPECT_NE(base::kInvalidPlatformFileValue, file); 96 EXPECT_NE(base::kInvalidPlatformFileValue, file);
91 base::PlatformFileInfo info; 97 base::PlatformFileInfo info;
92 // The file should be closed. 98 // The file should be closed.
93 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info)); 99 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info));
94 } 100 }
95 101
96 // Test the use of FileStream with a file handle provided at construction. 102 // Test the use of FileStream with a file handle provided at construction.
97 TEST_F(FileStreamTest, UseFileHandle) { 103 TEST_F(FileStreamTest, UseFileHandle) {
98 bool created = false; 104 bool created = false;
99 105
100 // 1. Test reading with a file handle. 106 // 1. Test reading with a file handle.
101 ASSERT_EQ(kTestDataSize, 107 ASSERT_EQ(kTestDataSize,
102 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 108 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
103 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 109 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
104 base::PlatformFile file = base::CreatePlatformFile( 110 base::PlatformFile file = base::CreatePlatformFile(
105 temp_file_path(), flags, &created, NULL); 111 temp_file_path(), flags, &created, NULL);
106 112
107 // Seek to the beginning of the file and read. 113 // Seek to the beginning of the file and read.
108 scoped_ptr<FileStream> read_stream(new FileStream(file, flags, NULL)); 114 scoped_ptr<FileStream> read_stream(
115 new FileStream(file, flags, NULL, base::MessageLoopProxy::current()));
109 ASSERT_EQ(0, read_stream->SeekSync(FROM_BEGIN, 0)); 116 ASSERT_EQ(0, read_stream->SeekSync(FROM_BEGIN, 0));
110 ASSERT_EQ(kTestDataSize, read_stream->Available()); 117 ASSERT_EQ(kTestDataSize, read_stream->Available());
111 // Read into buffer and compare. 118 // Read into buffer and compare.
112 char buffer[kTestDataSize]; 119 char buffer[kTestDataSize];
113 ASSERT_EQ(kTestDataSize, 120 ASSERT_EQ(kTestDataSize,
114 read_stream->ReadSync(buffer, kTestDataSize)); 121 read_stream->ReadSync(buffer, kTestDataSize));
115 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 122 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
116 read_stream.reset(); 123 read_stream.reset();
117 124
118 // 2. Test writing with a file handle. 125 // 2. Test writing with a file handle.
119 base::DeleteFile(temp_file_path(), false); 126 base::DeleteFile(temp_file_path(), false);
120 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE; 127 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE;
121 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); 128 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL);
122 129
123 scoped_ptr<FileStream> write_stream(new FileStream(file, flags, NULL)); 130 scoped_ptr<FileStream> write_stream(
131 new FileStream(file, flags, NULL, base::MessageLoopProxy::current()));
124 ASSERT_EQ(0, write_stream->SeekSync(FROM_BEGIN, 0)); 132 ASSERT_EQ(0, write_stream->SeekSync(FROM_BEGIN, 0));
125 ASSERT_EQ(kTestDataSize, 133 ASSERT_EQ(kTestDataSize,
126 write_stream->WriteSync(kTestData, kTestDataSize)); 134 write_stream->WriteSync(kTestData, kTestDataSize));
127 write_stream.reset(); 135 write_stream.reset();
128 136
129 // Read into buffer and compare to make sure the handle worked fine. 137 // Read into buffer and compare to make sure the handle worked fine.
130 ASSERT_EQ(kTestDataSize, 138 ASSERT_EQ(kTestDataSize,
131 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize)); 139 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize));
132 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 140 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
133 } 141 }
134 142
135 TEST_F(FileStreamTest, UseClosedStream) { 143 TEST_F(FileStreamTest, UseClosedStream) {
136 FileStream stream(NULL); 144 FileStream stream(NULL, base::MessageLoopProxy::current());
137 145
138 EXPECT_FALSE(stream.IsOpen()); 146 EXPECT_FALSE(stream.IsOpen());
139 147
140 // Try seeking... 148 // Try seeking...
141 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5); 149 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5);
142 EXPECT_EQ(ERR_UNEXPECTED, new_offset); 150 EXPECT_EQ(ERR_UNEXPECTED, new_offset);
143 151
144 // Try available... 152 // Try available...
145 int64 avail = stream.Available(); 153 int64 avail = stream.Available();
146 EXPECT_EQ(ERR_UNEXPECTED, avail); 154 EXPECT_EQ(ERR_UNEXPECTED, avail);
147 155
148 // Try reading... 156 // Try reading...
149 char buf[10]; 157 char buf[10];
150 int rv = stream.ReadSync(buf, arraysize(buf)); 158 int rv = stream.ReadSync(buf, arraysize(buf));
151 EXPECT_EQ(ERR_UNEXPECTED, rv); 159 EXPECT_EQ(ERR_UNEXPECTED, rv);
152 } 160 }
153 161
154 TEST_F(FileStreamTest, BasicRead) { 162 TEST_F(FileStreamTest, BasicRead) {
155 int64 file_size; 163 int64 file_size;
156 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 164 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
157 EXPECT_TRUE(ok); 165 EXPECT_TRUE(ok);
158 166
159 FileStream stream(NULL); 167 FileStream stream(NULL, base::MessageLoopProxy::current());
160 int flags = base::PLATFORM_FILE_OPEN | 168 int flags = base::PLATFORM_FILE_OPEN |
161 base::PLATFORM_FILE_READ; 169 base::PLATFORM_FILE_READ;
162 int rv = stream.OpenSync(temp_file_path(), flags); 170 int rv = stream.OpenSync(temp_file_path(), flags);
163 EXPECT_EQ(OK, rv); 171 EXPECT_EQ(OK, rv);
164 172
165 int64 total_bytes_avail = stream.Available(); 173 int64 total_bytes_avail = stream.Available();
166 EXPECT_EQ(file_size, total_bytes_avail); 174 EXPECT_EQ(file_size, total_bytes_avail);
167 175
168 int total_bytes_read = 0; 176 int total_bytes_read = 0;
169 177
170 std::string data_read; 178 std::string data_read;
171 for (;;) { 179 for (;;) {
172 char buf[4]; 180 char buf[4];
173 rv = stream.ReadSync(buf, arraysize(buf)); 181 rv = stream.ReadSync(buf, arraysize(buf));
174 EXPECT_LE(0, rv); 182 EXPECT_LE(0, rv);
175 if (rv <= 0) 183 if (rv <= 0)
176 break; 184 break;
177 total_bytes_read += rv; 185 total_bytes_read += rv;
178 data_read.append(buf, rv); 186 data_read.append(buf, rv);
179 } 187 }
180 EXPECT_EQ(file_size, total_bytes_read); 188 EXPECT_EQ(file_size, total_bytes_read);
181 EXPECT_EQ(kTestData, data_read); 189 EXPECT_EQ(kTestData, data_read);
182 } 190 }
183 191
184 TEST_F(FileStreamTest, AsyncRead) { 192 TEST_F(FileStreamTest, AsyncRead) {
185 int64 file_size; 193 int64 file_size;
186 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 194 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
187 EXPECT_TRUE(ok); 195 EXPECT_TRUE(ok);
188 196
189 FileStream stream(NULL); 197 FileStream stream(NULL, base::MessageLoopProxy::current());
190 int flags = base::PLATFORM_FILE_OPEN | 198 int flags = base::PLATFORM_FILE_OPEN |
191 base::PLATFORM_FILE_READ | 199 base::PLATFORM_FILE_READ |
192 base::PLATFORM_FILE_ASYNC; 200 base::PLATFORM_FILE_ASYNC;
193 TestCompletionCallback callback; 201 TestCompletionCallback callback;
194 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 202 int rv = stream.Open(temp_file_path(), flags, callback.callback());
195 EXPECT_EQ(ERR_IO_PENDING, rv); 203 EXPECT_EQ(ERR_IO_PENDING, rv);
196 EXPECT_EQ(OK, callback.WaitForResult()); 204 EXPECT_EQ(OK, callback.WaitForResult());
197 205
198 int64 total_bytes_avail = stream.Available(); 206 int64 total_bytes_avail = stream.Available();
199 EXPECT_EQ(file_size, total_bytes_avail); 207 EXPECT_EQ(file_size, total_bytes_avail);
(...skipping 14 matching lines...) Expand all
214 } 222 }
215 EXPECT_EQ(file_size, total_bytes_read); 223 EXPECT_EQ(file_size, total_bytes_read);
216 EXPECT_EQ(kTestData, data_read); 224 EXPECT_EQ(kTestData, data_read);
217 } 225 }
218 226
219 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) { 227 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) {
220 int64 file_size; 228 int64 file_size;
221 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 229 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
222 EXPECT_TRUE(ok); 230 EXPECT_TRUE(ok);
223 231
224 scoped_ptr<FileStream> stream(new FileStream(NULL)); 232 scoped_ptr<FileStream> stream(
233 new FileStream(NULL, base::MessageLoopProxy::current()));
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, base::MessageLoopProxy::current());
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, base::MessageLoopProxy::current());
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, base::MessageLoopProxy::current());
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, base::MessageLoopProxy::current());
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(
396 new FileStream(NULL, base::MessageLoopProxy::current()));
387 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 397 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
388 base::PLATFORM_FILE_WRITE; 398 base::PLATFORM_FILE_WRITE;
389 int rv = stream->OpenSync(temp_file_path(), flags); 399 int rv = stream->OpenSync(temp_file_path(), flags);
390 EXPECT_EQ(OK, rv); 400 EXPECT_EQ(OK, rv);
391 401
392 int64 file_size; 402 int64 file_size;
393 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 403 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
394 EXPECT_TRUE(ok); 404 EXPECT_TRUE(ok);
395 EXPECT_EQ(0, file_size); 405 EXPECT_EQ(0, file_size);
396 406
397 rv = stream->WriteSync(kTestData, kTestDataSize); 407 rv = stream->WriteSync(kTestData, kTestDataSize);
398 EXPECT_EQ(kTestDataSize, rv); 408 EXPECT_EQ(kTestDataSize, rv);
399 stream.reset(); 409 stream.reset();
400 410
401 ok = file_util::GetFileSize(temp_file_path(), &file_size); 411 ok = file_util::GetFileSize(temp_file_path(), &file_size);
402 EXPECT_TRUE(ok); 412 EXPECT_TRUE(ok);
403 EXPECT_EQ(kTestDataSize, file_size); 413 EXPECT_EQ(kTestDataSize, file_size);
404 } 414 }
405 415
406 TEST_F(FileStreamTest, AsyncWrite) { 416 TEST_F(FileStreamTest, AsyncWrite) {
407 FileStream stream(NULL); 417 FileStream stream(NULL, base::MessageLoopProxy::current());
408 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 418 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
409 base::PLATFORM_FILE_WRITE | 419 base::PLATFORM_FILE_WRITE |
410 base::PLATFORM_FILE_ASYNC; 420 base::PLATFORM_FILE_ASYNC;
411 TestCompletionCallback callback; 421 TestCompletionCallback callback;
412 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 422 int rv = stream.Open(temp_file_path(), flags, callback.callback());
413 EXPECT_EQ(ERR_IO_PENDING, rv); 423 EXPECT_EQ(ERR_IO_PENDING, rv);
414 EXPECT_EQ(OK, callback.WaitForResult()); 424 EXPECT_EQ(OK, callback.WaitForResult());
415 425
416 int64 file_size; 426 int64 file_size;
417 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 427 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
(...skipping 15 matching lines...) Expand all
433 break; 443 break;
434 drainable->DidConsume(rv); 444 drainable->DidConsume(rv);
435 total_bytes_written += rv; 445 total_bytes_written += rv;
436 } 446 }
437 ok = file_util::GetFileSize(temp_file_path(), &file_size); 447 ok = file_util::GetFileSize(temp_file_path(), &file_size);
438 EXPECT_TRUE(ok); 448 EXPECT_TRUE(ok);
439 EXPECT_EQ(file_size, total_bytes_written); 449 EXPECT_EQ(file_size, total_bytes_written);
440 } 450 }
441 451
442 TEST_F(FileStreamTest, AsyncWrite_EarlyDelete) { 452 TEST_F(FileStreamTest, AsyncWrite_EarlyDelete) {
443 scoped_ptr<FileStream> stream(new FileStream(NULL)); 453 scoped_ptr<FileStream> stream(
454 new FileStream(NULL, base::MessageLoopProxy::current()));
444 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 455 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
445 base::PLATFORM_FILE_WRITE | 456 base::PLATFORM_FILE_WRITE |
446 base::PLATFORM_FILE_ASYNC; 457 base::PLATFORM_FILE_ASYNC;
447 TestCompletionCallback callback; 458 TestCompletionCallback callback;
448 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 459 int rv = stream->Open(temp_file_path(), flags, callback.callback());
449 EXPECT_EQ(ERR_IO_PENDING, rv); 460 EXPECT_EQ(ERR_IO_PENDING, rv);
450 EXPECT_EQ(OK, callback.WaitForResult()); 461 EXPECT_EQ(OK, callback.WaitForResult());
451 462
452 int64 file_size; 463 int64 file_size;
453 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 464 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
454 EXPECT_TRUE(ok); 465 EXPECT_TRUE(ok);
455 EXPECT_EQ(0, file_size); 466 EXPECT_EQ(0, file_size);
456 467
457 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 468 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
458 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 469 rv = stream->Write(buf.get(), buf->size(), callback.callback());
459 stream.reset(); 470 stream.reset();
460 if (rv < 0) { 471 if (rv < 0) {
461 EXPECT_EQ(ERR_IO_PENDING, rv); 472 EXPECT_EQ(ERR_IO_PENDING, rv);
462 // The callback should not be called if the request is cancelled. 473 // The callback should not be called if the request is cancelled.
463 base::MessageLoop::current()->RunUntilIdle(); 474 base::RunLoop().RunUntilIdle();
464 EXPECT_FALSE(callback.have_result()); 475 EXPECT_FALSE(callback.have_result());
465 } else { 476 } else {
466 ok = file_util::GetFileSize(temp_file_path(), &file_size); 477 ok = file_util::GetFileSize(temp_file_path(), &file_size);
467 EXPECT_TRUE(ok); 478 EXPECT_TRUE(ok);
468 EXPECT_EQ(file_size, rv); 479 EXPECT_EQ(file_size, rv);
469 } 480 }
470 } 481 }
471 482
472 TEST_F(FileStreamTest, BasicWrite_FromOffset) { 483 TEST_F(FileStreamTest, BasicWrite_FromOffset) {
473 scoped_ptr<FileStream> stream(new FileStream(NULL)); 484 scoped_ptr<FileStream> stream(
485 new FileStream(NULL, base::MessageLoopProxy::current()));
474 int flags = base::PLATFORM_FILE_OPEN | 486 int flags = base::PLATFORM_FILE_OPEN |
475 base::PLATFORM_FILE_WRITE; 487 base::PLATFORM_FILE_WRITE;
476 int rv = stream->OpenSync(temp_file_path(), flags); 488 int rv = stream->OpenSync(temp_file_path(), flags);
477 EXPECT_EQ(OK, rv); 489 EXPECT_EQ(OK, rv);
478 490
479 int64 file_size; 491 int64 file_size;
480 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 492 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
481 EXPECT_TRUE(ok); 493 EXPECT_TRUE(ok);
482 EXPECT_EQ(kTestDataSize, file_size); 494 EXPECT_EQ(kTestDataSize, file_size);
483 495
484 const int64 kOffset = 0; 496 const int64 kOffset = 0;
485 int64 new_offset = stream->SeekSync(FROM_END, kOffset); 497 int64 new_offset = stream->SeekSync(FROM_END, kOffset);
486 EXPECT_EQ(kTestDataSize, new_offset); 498 EXPECT_EQ(kTestDataSize, new_offset);
487 499
488 rv = stream->WriteSync(kTestData, kTestDataSize); 500 rv = stream->WriteSync(kTestData, kTestDataSize);
489 EXPECT_EQ(kTestDataSize, rv); 501 EXPECT_EQ(kTestDataSize, rv);
490 stream.reset(); 502 stream.reset();
491 503
492 ok = file_util::GetFileSize(temp_file_path(), &file_size); 504 ok = file_util::GetFileSize(temp_file_path(), &file_size);
493 EXPECT_TRUE(ok); 505 EXPECT_TRUE(ok);
494 EXPECT_EQ(kTestDataSize * 2, file_size); 506 EXPECT_EQ(kTestDataSize * 2, file_size);
495 } 507 }
496 508
497 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { 509 TEST_F(FileStreamTest, AsyncWrite_FromOffset) {
498 int64 file_size; 510 int64 file_size;
499 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 511 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
500 EXPECT_TRUE(ok); 512 EXPECT_TRUE(ok);
501 513
502 FileStream stream(NULL); 514 FileStream stream(NULL, base::MessageLoopProxy::current());
503 int flags = base::PLATFORM_FILE_OPEN | 515 int flags = base::PLATFORM_FILE_OPEN |
504 base::PLATFORM_FILE_WRITE | 516 base::PLATFORM_FILE_WRITE |
505 base::PLATFORM_FILE_ASYNC; 517 base::PLATFORM_FILE_ASYNC;
506 TestCompletionCallback callback; 518 TestCompletionCallback callback;
507 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 519 int rv = stream.Open(temp_file_path(), flags, callback.callback());
508 EXPECT_EQ(ERR_IO_PENDING, rv); 520 EXPECT_EQ(ERR_IO_PENDING, rv);
509 EXPECT_EQ(OK, callback.WaitForResult()); 521 EXPECT_EQ(OK, callback.WaitForResult());
510 522
511 TestInt64CompletionCallback callback64; 523 TestInt64CompletionCallback callback64;
512 const int64 kOffset = 0; 524 const int64 kOffset = 0;
(...skipping 21 matching lines...) Expand all
534 ok = file_util::GetFileSize(temp_file_path(), &file_size); 546 ok = file_util::GetFileSize(temp_file_path(), &file_size);
535 EXPECT_TRUE(ok); 547 EXPECT_TRUE(ok);
536 EXPECT_EQ(file_size, kTestDataSize * 2); 548 EXPECT_EQ(file_size, kTestDataSize * 2);
537 } 549 }
538 550
539 TEST_F(FileStreamTest, BasicReadWrite) { 551 TEST_F(FileStreamTest, BasicReadWrite) {
540 int64 file_size; 552 int64 file_size;
541 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 553 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
542 EXPECT_TRUE(ok); 554 EXPECT_TRUE(ok);
543 555
544 scoped_ptr<FileStream> stream(new FileStream(NULL)); 556 scoped_ptr<FileStream> stream(
557 new FileStream(NULL, base::MessageLoopProxy::current()));
545 int flags = base::PLATFORM_FILE_OPEN | 558 int flags = base::PLATFORM_FILE_OPEN |
546 base::PLATFORM_FILE_READ | 559 base::PLATFORM_FILE_READ |
547 base::PLATFORM_FILE_WRITE; 560 base::PLATFORM_FILE_WRITE;
548 int rv = stream->OpenSync(temp_file_path(), flags); 561 int rv = stream->OpenSync(temp_file_path(), flags);
549 EXPECT_EQ(OK, rv); 562 EXPECT_EQ(OK, rv);
550 563
551 int64 total_bytes_avail = stream->Available(); 564 int64 total_bytes_avail = stream->Available();
552 EXPECT_EQ(file_size, total_bytes_avail); 565 EXPECT_EQ(file_size, total_bytes_avail);
553 566
554 int total_bytes_read = 0; 567 int total_bytes_read = 0;
(...skipping 18 matching lines...) Expand all
573 ok = file_util::GetFileSize(temp_file_path(), &file_size); 586 ok = file_util::GetFileSize(temp_file_path(), &file_size);
574 EXPECT_TRUE(ok); 587 EXPECT_TRUE(ok);
575 EXPECT_EQ(kTestDataSize * 2, file_size); 588 EXPECT_EQ(kTestDataSize * 2, file_size);
576 } 589 }
577 590
578 TEST_F(FileStreamTest, BasicWriteRead) { 591 TEST_F(FileStreamTest, BasicWriteRead) {
579 int64 file_size; 592 int64 file_size;
580 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 593 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
581 EXPECT_TRUE(ok); 594 EXPECT_TRUE(ok);
582 595
583 scoped_ptr<FileStream> stream(new FileStream(NULL)); 596 scoped_ptr<FileStream> stream(
597 new FileStream(NULL, base::MessageLoopProxy::current()));
584 int flags = base::PLATFORM_FILE_OPEN | 598 int flags = base::PLATFORM_FILE_OPEN |
585 base::PLATFORM_FILE_READ | 599 base::PLATFORM_FILE_READ |
586 base::PLATFORM_FILE_WRITE; 600 base::PLATFORM_FILE_WRITE;
587 int rv = stream->OpenSync(temp_file_path(), flags); 601 int rv = stream->OpenSync(temp_file_path(), flags);
588 EXPECT_EQ(OK, rv); 602 EXPECT_EQ(OK, rv);
589 603
590 int64 total_bytes_avail = stream->Available(); 604 int64 total_bytes_avail = stream->Available();
591 EXPECT_EQ(file_size, total_bytes_avail); 605 EXPECT_EQ(file_size, total_bytes_avail);
592 606
593 int64 offset = stream->SeekSync(FROM_END, 0); 607 int64 offset = stream->SeekSync(FROM_END, 0);
(...skipping 27 matching lines...) Expand all
621 const std::string kExpectedFileData = 635 const std::string kExpectedFileData =
622 std::string(kTestData) + std::string(kTestData); 636 std::string(kTestData) + std::string(kTestData);
623 EXPECT_EQ(kExpectedFileData, data_read); 637 EXPECT_EQ(kExpectedFileData, data_read);
624 } 638 }
625 639
626 TEST_F(FileStreamTest, BasicAsyncReadWrite) { 640 TEST_F(FileStreamTest, BasicAsyncReadWrite) {
627 int64 file_size; 641 int64 file_size;
628 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 642 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
629 EXPECT_TRUE(ok); 643 EXPECT_TRUE(ok);
630 644
631 scoped_ptr<FileStream> stream(new FileStream(NULL)); 645 scoped_ptr<FileStream> stream(
646 new FileStream(NULL, base::MessageLoopProxy::current()));
632 int flags = base::PLATFORM_FILE_OPEN | 647 int flags = base::PLATFORM_FILE_OPEN |
633 base::PLATFORM_FILE_READ | 648 base::PLATFORM_FILE_READ |
634 base::PLATFORM_FILE_WRITE | 649 base::PLATFORM_FILE_WRITE |
635 base::PLATFORM_FILE_ASYNC; 650 base::PLATFORM_FILE_ASYNC;
636 TestCompletionCallback callback; 651 TestCompletionCallback callback;
637 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 652 int rv = stream->Open(temp_file_path(), flags, callback.callback());
638 EXPECT_EQ(ERR_IO_PENDING, rv); 653 EXPECT_EQ(ERR_IO_PENDING, rv);
639 EXPECT_EQ(OK, callback.WaitForResult()); 654 EXPECT_EQ(OK, callback.WaitForResult());
640 655
641 int64 total_bytes_avail = stream->Available(); 656 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); 695 ok = file_util::GetFileSize(temp_file_path(), &file_size);
681 EXPECT_TRUE(ok); 696 EXPECT_TRUE(ok);
682 EXPECT_EQ(kTestDataSize * 2, file_size); 697 EXPECT_EQ(kTestDataSize * 2, file_size);
683 } 698 }
684 699
685 TEST_F(FileStreamTest, BasicAsyncWriteRead) { 700 TEST_F(FileStreamTest, BasicAsyncWriteRead) {
686 int64 file_size; 701 int64 file_size;
687 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 702 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
688 EXPECT_TRUE(ok); 703 EXPECT_TRUE(ok);
689 704
690 scoped_ptr<FileStream> stream(new FileStream(NULL)); 705 scoped_ptr<FileStream> stream(
706 new FileStream(NULL, base::MessageLoopProxy::current()));
691 int flags = base::PLATFORM_FILE_OPEN | 707 int flags = base::PLATFORM_FILE_OPEN |
692 base::PLATFORM_FILE_READ | 708 base::PLATFORM_FILE_READ |
693 base::PLATFORM_FILE_WRITE | 709 base::PLATFORM_FILE_WRITE |
694 base::PLATFORM_FILE_ASYNC; 710 base::PLATFORM_FILE_ASYNC;
695 TestCompletionCallback callback; 711 TestCompletionCallback callback;
696 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 712 int rv = stream->Open(temp_file_path(), flags, callback.callback());
697 EXPECT_EQ(ERR_IO_PENDING, rv); 713 EXPECT_EQ(ERR_IO_PENDING, rv);
698 EXPECT_EQ(OK, callback.WaitForResult()); 714 EXPECT_EQ(OK, callback.WaitForResult());
699 715
700 int64 total_bytes_avail = stream->Available(); 716 int64 total_bytes_avail = stream->Available();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 data_read_(data_read), 787 data_read_(data_read),
772 callback_(base::Bind(&TestWriteReadCompletionCallback::OnComplete, 788 callback_(base::Bind(&TestWriteReadCompletionCallback::OnComplete,
773 base::Unretained(this))), 789 base::Unretained(this))),
774 test_data_(CreateTestDataBuffer()), 790 test_data_(CreateTestDataBuffer()),
775 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {} 791 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {}
776 792
777 int WaitForResult() { 793 int WaitForResult() {
778 DCHECK(!waiting_for_result_); 794 DCHECK(!waiting_for_result_);
779 while (!have_result_) { 795 while (!have_result_) {
780 waiting_for_result_ = true; 796 waiting_for_result_ = true;
781 base::MessageLoop::current()->Run(); 797 base::RunLoop().Run();
782 waiting_for_result_ = false; 798 waiting_for_result_ = false;
783 } 799 }
784 have_result_ = false; // auto-reset for next callback 800 have_result_ = false; // auto-reset for next callback
785 return result_; 801 return result_;
786 } 802 }
787 803
788 const CompletionCallback& callback() const { return callback_; } 804 const CompletionCallback& callback() const { return callback_; }
789 805
790 private: 806 private:
791 void OnComplete(int result) { 807 void OnComplete(int result) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 scoped_refptr<DrainableIOBuffer> drainable_; 862 scoped_refptr<DrainableIOBuffer> drainable_;
847 863
848 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback); 864 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback);
849 }; 865 };
850 866
851 TEST_F(FileStreamTest, AsyncWriteRead) { 867 TEST_F(FileStreamTest, AsyncWriteRead) {
852 int64 file_size; 868 int64 file_size;
853 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 869 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
854 EXPECT_TRUE(ok); 870 EXPECT_TRUE(ok);
855 871
856 scoped_ptr<FileStream> stream(new FileStream(NULL)); 872 scoped_ptr<FileStream> stream(
873 new FileStream(NULL, base::MessageLoopProxy::current()));
857 int flags = base::PLATFORM_FILE_OPEN | 874 int flags = base::PLATFORM_FILE_OPEN |
858 base::PLATFORM_FILE_READ | 875 base::PLATFORM_FILE_READ |
859 base::PLATFORM_FILE_WRITE | 876 base::PLATFORM_FILE_WRITE |
860 base::PLATFORM_FILE_ASYNC; 877 base::PLATFORM_FILE_ASYNC;
861 TestCompletionCallback open_callback; 878 TestCompletionCallback open_callback;
862 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 879 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
863 EXPECT_EQ(ERR_IO_PENDING, rv); 880 EXPECT_EQ(ERR_IO_PENDING, rv);
864 EXPECT_EQ(OK, open_callback.WaitForResult()); 881 EXPECT_EQ(OK, open_callback.WaitForResult());
865 882
866 int64 total_bytes_avail = stream->Available(); 883 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), 921 total_bytes_written_(total_bytes_written),
905 callback_(base::Bind(&TestWriteCloseCompletionCallback::OnComplete, 922 callback_(base::Bind(&TestWriteCloseCompletionCallback::OnComplete,
906 base::Unretained(this))), 923 base::Unretained(this))),
907 test_data_(CreateTestDataBuffer()), 924 test_data_(CreateTestDataBuffer()),
908 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {} 925 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {}
909 926
910 int WaitForResult() { 927 int WaitForResult() {
911 DCHECK(!waiting_for_result_); 928 DCHECK(!waiting_for_result_);
912 while (!have_result_) { 929 while (!have_result_) {
913 waiting_for_result_ = true; 930 waiting_for_result_ = true;
914 base::MessageLoop::current()->Run(); 931 base::RunLoop().Run();
915 waiting_for_result_ = false; 932 waiting_for_result_ = false;
916 } 933 }
917 have_result_ = false; // auto-reset for next callback 934 have_result_ = false; // auto-reset for next callback
918 return result_; 935 return result_;
919 } 936 }
920 937
921 const CompletionCallback& callback() const { return callback_; } 938 const CompletionCallback& callback() const { return callback_; }
922 939
923 private: 940 private:
924 void OnComplete(int result) { 941 void OnComplete(int result) {
(...skipping 30 matching lines...) Expand all
955 scoped_refptr<DrainableIOBuffer> drainable_; 972 scoped_refptr<DrainableIOBuffer> drainable_;
956 973
957 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback); 974 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback);
958 }; 975 };
959 976
960 TEST_F(FileStreamTest, AsyncWriteClose) { 977 TEST_F(FileStreamTest, AsyncWriteClose) {
961 int64 file_size; 978 int64 file_size;
962 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 979 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
963 EXPECT_TRUE(ok); 980 EXPECT_TRUE(ok);
964 981
965 scoped_ptr<FileStream> stream(new FileStream(NULL)); 982 scoped_ptr<FileStream> stream(
983 new FileStream(NULL, base::MessageLoopProxy::current()));
966 int flags = base::PLATFORM_FILE_OPEN | 984 int flags = base::PLATFORM_FILE_OPEN |
967 base::PLATFORM_FILE_READ | 985 base::PLATFORM_FILE_READ |
968 base::PLATFORM_FILE_WRITE | 986 base::PLATFORM_FILE_WRITE |
969 base::PLATFORM_FILE_ASYNC; 987 base::PLATFORM_FILE_ASYNC;
970 TestCompletionCallback open_callback; 988 TestCompletionCallback open_callback;
971 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 989 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
972 EXPECT_EQ(ERR_IO_PENDING, rv); 990 EXPECT_EQ(ERR_IO_PENDING, rv);
973 EXPECT_EQ(OK, open_callback.WaitForResult()); 991 EXPECT_EQ(OK, open_callback.WaitForResult());
974 992
975 int64 total_bytes_avail = stream->Available(); 993 int64 total_bytes_avail = stream->Available();
(...skipping 16 matching lines...) Expand all
992 1010
993 ok = file_util::GetFileSize(temp_file_path(), &file_size); 1011 ok = file_util::GetFileSize(temp_file_path(), &file_size);
994 EXPECT_TRUE(ok); 1012 EXPECT_TRUE(ok);
995 EXPECT_EQ(kTestDataSize * 2, file_size); 1013 EXPECT_EQ(kTestDataSize * 2, file_size);
996 } 1014 }
997 1015
998 // Tests truncating a file. 1016 // Tests truncating a file.
999 TEST_F(FileStreamTest, Truncate) { 1017 TEST_F(FileStreamTest, Truncate) {
1000 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE; 1018 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE;
1001 1019
1002 scoped_ptr<FileStream> write_stream(new FileStream(NULL)); 1020 scoped_ptr<FileStream> write_stream(
1021 new FileStream(NULL, base::MessageLoopProxy::current()));
1003 ASSERT_EQ(OK, write_stream->OpenSync(temp_file_path(), flags)); 1022 ASSERT_EQ(OK, write_stream->OpenSync(temp_file_path(), flags));
1004 1023
1005 // Write some data to the file. 1024 // Write some data to the file.
1006 const char test_data[] = "0123456789"; 1025 const char test_data[] = "0123456789";
1007 write_stream->WriteSync(test_data, arraysize(test_data)); 1026 write_stream->WriteSync(test_data, arraysize(test_data));
1008 1027
1009 // Truncate the file. 1028 // Truncate the file.
1010 ASSERT_EQ(4, write_stream->Truncate(4)); 1029 ASSERT_EQ(4, write_stream->Truncate(4));
1011 1030
1012 // Write again. 1031 // Write again.
1013 write_stream->WriteSync(test_data, 4); 1032 write_stream->WriteSync(test_data, 4);
1014 1033
1015 // Close the stream. 1034 // Close the stream.
1016 write_stream.reset(); 1035 write_stream.reset();
1017 1036
1018 // Read in the contents and make sure we get back what we expected. 1037 // Read in the contents and make sure we get back what we expected.
1019 std::string read_contents; 1038 std::string read_contents;
1020 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &read_contents)); 1039 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &read_contents));
1021 1040
1022 EXPECT_EQ("01230123", read_contents); 1041 EXPECT_EQ("01230123", read_contents);
1023 } 1042 }
1024 1043
1025 TEST_F(FileStreamTest, AsyncOpenAndDelete) { 1044 TEST_F(FileStreamTest, AsyncOpenAndDelete) {
1026 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1045 scoped_ptr<FileStream> stream(
1046 new FileStream(NULL, base::MessageLoopProxy::current()));
1027 int flags = base::PLATFORM_FILE_OPEN | 1047 int flags = base::PLATFORM_FILE_OPEN |
1028 base::PLATFORM_FILE_WRITE | 1048 base::PLATFORM_FILE_WRITE |
1029 base::PLATFORM_FILE_ASYNC; 1049 base::PLATFORM_FILE_ASYNC;
1030 TestCompletionCallback open_callback; 1050 TestCompletionCallback open_callback;
1031 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 1051 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
1032 EXPECT_EQ(ERR_IO_PENDING, rv); 1052 EXPECT_EQ(ERR_IO_PENDING, rv);
1033 1053
1034 // Delete the stream without waiting for the open operation to be 1054 // Delete the stream without waiting for the open operation to be
1035 // complete. Should be safe. 1055 // complete. Should be safe.
1036 stream.reset(); 1056 stream.reset();
1037 // open_callback won't be called. 1057 // open_callback won't be called.
1038 base::MessageLoop::current()->RunUntilIdle(); 1058 base::RunLoop().RunUntilIdle();
1039 EXPECT_FALSE(open_callback.have_result()); 1059 EXPECT_FALSE(open_callback.have_result());
1040 } 1060 }
1041 1061
1042 // Verify that async Write() errors are mapped correctly. 1062 // Verify that async Write() errors are mapped correctly.
1043 TEST_F(FileStreamTest, AsyncWriteError) { 1063 TEST_F(FileStreamTest, AsyncWriteError) {
1044 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1064 scoped_ptr<FileStream> stream(
1065 new FileStream(NULL, base::MessageLoopProxy::current()));
1045 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 1066 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
1046 base::PLATFORM_FILE_WRITE | 1067 base::PLATFORM_FILE_WRITE |
1047 base::PLATFORM_FILE_ASYNC; 1068 base::PLATFORM_FILE_ASYNC;
1048 TestCompletionCallback callback; 1069 TestCompletionCallback callback;
1049 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 1070 int rv = stream->Open(temp_file_path(), flags, callback.callback());
1050 EXPECT_EQ(ERR_IO_PENDING, rv); 1071 EXPECT_EQ(ERR_IO_PENDING, rv);
1051 EXPECT_EQ(OK, callback.WaitForResult()); 1072 EXPECT_EQ(OK, callback.WaitForResult());
1052 1073
1053 // Try passing NULL buffer to Write() and check that it fails. 1074 // Try passing NULL buffer to Write() and check that it fails.
1054 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); 1075 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL);
1055 rv = stream->Write(buf.get(), 1, callback.callback()); 1076 rv = stream->Write(buf.get(), 1, callback.callback());
1056 if (rv == ERR_IO_PENDING) 1077 if (rv == ERR_IO_PENDING)
1057 rv = callback.WaitForResult(); 1078 rv = callback.WaitForResult();
1058 EXPECT_LT(rv, 0); 1079 EXPECT_LT(rv, 0);
1059 } 1080 }
1060 1081
1061 // Verify that async Read() errors are mapped correctly. 1082 // Verify that async Read() errors are mapped correctly.
1062 TEST_F(FileStreamTest, AsyncReadError) { 1083 TEST_F(FileStreamTest, AsyncReadError) {
1063 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1084 scoped_ptr<FileStream> stream(
1085 new FileStream(NULL, base::MessageLoopProxy::current()));
1064 int flags = base::PLATFORM_FILE_OPEN | 1086 int flags = base::PLATFORM_FILE_OPEN |
1065 base::PLATFORM_FILE_READ | 1087 base::PLATFORM_FILE_READ |
1066 base::PLATFORM_FILE_ASYNC; 1088 base::PLATFORM_FILE_ASYNC;
1067 TestCompletionCallback callback; 1089 TestCompletionCallback callback;
1068 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 1090 int rv = stream->Open(temp_file_path(), flags, callback.callback());
1069 EXPECT_EQ(ERR_IO_PENDING, rv); 1091 EXPECT_EQ(ERR_IO_PENDING, rv);
1070 EXPECT_EQ(OK, callback.WaitForResult()); 1092 EXPECT_EQ(OK, callback.WaitForResult());
1071 1093
1072 // Try passing NULL buffer to Read() and check that it fails. 1094 // Try passing NULL buffer to Read() and check that it fails.
1073 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); 1095 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL);
1074 rv = stream->Read(buf.get(), 1, callback.callback()); 1096 rv = stream->Read(buf.get(), 1, callback.callback());
1075 if (rv == ERR_IO_PENDING) 1097 if (rv == ERR_IO_PENDING)
1076 rv = callback.WaitForResult(); 1098 rv = callback.WaitForResult();
1077 EXPECT_LT(rv, 0); 1099 EXPECT_LT(rv, 0);
1078 } 1100 }
1079 1101
1080 } // namespace 1102 } // namespace
1081 1103
1082 } // namespace net 1104 } // 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