OLD | NEW |
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/elements_upload_data_stream.h" | 5 #include "net/base/elements_upload_data_stream.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <limits> | 10 #include <limits> |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 const base::Time& time, | 147 const base::Time& time, |
148 bool error_expected); | 148 bool error_expected); |
149 | 149 |
150 base::ScopedTempDir temp_dir_; | 150 base::ScopedTempDir temp_dir_; |
151 std::vector<std::unique_ptr<UploadElementReader>> element_readers_; | 151 std::vector<std::unique_ptr<UploadElementReader>> element_readers_; |
152 }; | 152 }; |
153 | 153 |
154 TEST_F(ElementsUploadDataStreamTest, EmptyUploadData) { | 154 TEST_F(ElementsUploadDataStreamTest, EmptyUploadData) { |
155 std::unique_ptr<UploadDataStream> stream( | 155 std::unique_ptr<UploadDataStream> stream( |
156 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 156 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
157 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk()); | 157 ASSERT_THAT(stream->Init(CompletionCallback(), BoundNetLog()), IsOk()); |
158 EXPECT_TRUE(stream->IsInMemory()); | 158 EXPECT_TRUE(stream->IsInMemory()); |
159 EXPECT_EQ(0U, stream->size()); | 159 EXPECT_EQ(0U, stream->size()); |
160 EXPECT_EQ(0U, stream->position()); | 160 EXPECT_EQ(0U, stream->position()); |
161 EXPECT_TRUE(stream->IsEOF()); | 161 EXPECT_TRUE(stream->IsEOF()); |
162 } | 162 } |
163 | 163 |
164 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) { | 164 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) { |
165 element_readers_.push_back( | 165 element_readers_.push_back( |
166 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); | 166 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); |
167 std::unique_ptr<UploadDataStream> stream( | 167 std::unique_ptr<UploadDataStream> stream( |
168 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 168 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
169 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk()); | 169 ASSERT_THAT(stream->Init(CompletionCallback(), BoundNetLog()), IsOk()); |
170 EXPECT_TRUE(stream->IsInMemory()); | 170 EXPECT_TRUE(stream->IsInMemory()); |
171 EXPECT_EQ(kTestDataSize, stream->size()); | 171 EXPECT_EQ(kTestDataSize, stream->size()); |
172 EXPECT_EQ(0U, stream->position()); | 172 EXPECT_EQ(0U, stream->position()); |
173 EXPECT_FALSE(stream->IsEOF()); | 173 EXPECT_FALSE(stream->IsEOF()); |
174 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 174 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
175 while (!stream->IsEOF()) { | 175 while (!stream->IsEOF()) { |
176 int bytes_read = | 176 int bytes_read = |
177 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()); | 177 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()); |
178 ASSERT_LE(0, bytes_read); // Not an error. | 178 ASSERT_LE(0, bytes_read); // Not an error. |
179 } | 179 } |
180 EXPECT_EQ(kTestDataSize, stream->position()); | 180 EXPECT_EQ(kTestDataSize, stream->position()); |
181 ASSERT_TRUE(stream->IsEOF()); | 181 ASSERT_TRUE(stream->IsEOF()); |
182 } | 182 } |
183 | 183 |
184 TEST_F(ElementsUploadDataStreamTest, File) { | 184 TEST_F(ElementsUploadDataStreamTest, File) { |
185 base::FilePath temp_file_path; | 185 base::FilePath temp_file_path; |
186 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 186 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
187 &temp_file_path)); | 187 &temp_file_path)); |
188 ASSERT_EQ(static_cast<int>(kTestDataSize), | 188 ASSERT_EQ(static_cast<int>(kTestDataSize), |
189 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 189 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
190 | 190 |
191 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( | 191 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( |
192 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, | 192 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
193 std::numeric_limits<uint64_t>::max(), base::Time()))); | 193 std::numeric_limits<uint64_t>::max(), base::Time()))); |
194 | 194 |
195 TestCompletionCallback init_callback; | 195 TestCompletionCallback init_callback; |
196 std::unique_ptr<UploadDataStream> stream( | 196 std::unique_ptr<UploadDataStream> stream( |
197 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 197 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
198 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING)); | 198 ASSERT_THAT(stream->Init(init_callback.callback(), BoundNetLog()), |
| 199 IsError(ERR_IO_PENDING)); |
199 ASSERT_THAT(init_callback.WaitForResult(), IsOk()); | 200 ASSERT_THAT(init_callback.WaitForResult(), IsOk()); |
200 EXPECT_FALSE(stream->IsInMemory()); | 201 EXPECT_FALSE(stream->IsInMemory()); |
201 EXPECT_EQ(kTestDataSize, stream->size()); | 202 EXPECT_EQ(kTestDataSize, stream->size()); |
202 EXPECT_EQ(0U, stream->position()); | 203 EXPECT_EQ(0U, stream->position()); |
203 EXPECT_FALSE(stream->IsEOF()); | 204 EXPECT_FALSE(stream->IsEOF()); |
204 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 205 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
205 while (!stream->IsEOF()) { | 206 while (!stream->IsEOF()) { |
206 TestCompletionCallback read_callback; | 207 TestCompletionCallback read_callback; |
207 ASSERT_EQ( | 208 ASSERT_EQ( |
208 ERR_IO_PENDING, | 209 ERR_IO_PENDING, |
(...skipping 15 matching lines...) Expand all Loading... |
224 UploadFileElementReader::ScopedOverridingContentLengthForTests | 225 UploadFileElementReader::ScopedOverridingContentLengthForTests |
225 overriding_content_length(kFakeSize); | 226 overriding_content_length(kFakeSize); |
226 | 227 |
227 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( | 228 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( |
228 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, | 229 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
229 std::numeric_limits<uint64_t>::max(), base::Time()))); | 230 std::numeric_limits<uint64_t>::max(), base::Time()))); |
230 | 231 |
231 TestCompletionCallback init_callback; | 232 TestCompletionCallback init_callback; |
232 std::unique_ptr<UploadDataStream> stream( | 233 std::unique_ptr<UploadDataStream> stream( |
233 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 234 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
234 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING)); | 235 ASSERT_THAT(stream->Init(init_callback.callback(), BoundNetLog()), |
| 236 IsError(ERR_IO_PENDING)); |
235 ASSERT_THAT(init_callback.WaitForResult(), IsOk()); | 237 ASSERT_THAT(init_callback.WaitForResult(), IsOk()); |
236 EXPECT_FALSE(stream->IsInMemory()); | 238 EXPECT_FALSE(stream->IsInMemory()); |
237 EXPECT_EQ(kFakeSize, stream->size()); | 239 EXPECT_EQ(kFakeSize, stream->size()); |
238 EXPECT_EQ(0U, stream->position()); | 240 EXPECT_EQ(0U, stream->position()); |
239 | 241 |
240 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 242 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
241 EXPECT_FALSE(stream->IsEOF()); | 243 EXPECT_FALSE(stream->IsEOF()); |
242 | 244 |
243 TestCompletionCallback read_callback; | 245 TestCompletionCallback read_callback; |
244 ASSERT_EQ(ERR_IO_PENDING, | 246 ASSERT_EQ(ERR_IO_PENDING, |
(...skipping 20 matching lines...) Expand all Loading... |
265 element_readers_.push_back(std::move(reader)); | 267 element_readers_.push_back(std::move(reader)); |
266 | 268 |
267 // This element is ignored because of the error from the previous reader. | 269 // This element is ignored because of the error from the previous reader. |
268 element_readers_.push_back( | 270 element_readers_.push_back( |
269 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); | 271 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); |
270 | 272 |
271 std::unique_ptr<UploadDataStream> stream( | 273 std::unique_ptr<UploadDataStream> stream( |
272 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 274 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
273 | 275 |
274 // Run Init(). | 276 // Run Init(). |
275 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk()); | 277 ASSERT_THAT(stream->Init(CompletionCallback(), BoundNetLog()), IsOk()); |
276 EXPECT_EQ(kTestDataSize*2, stream->size()); | 278 EXPECT_EQ(kTestDataSize*2, stream->size()); |
277 EXPECT_EQ(0U, stream->position()); | 279 EXPECT_EQ(0U, stream->position()); |
278 EXPECT_FALSE(stream->IsEOF()); | 280 EXPECT_FALSE(stream->IsEOF()); |
279 | 281 |
280 // Prepare a buffer filled with non-zero data. | 282 // Prepare a buffer filled with non-zero data. |
281 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 283 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
282 std::fill_n(buf->data(), kTestBufferSize, -1); | 284 std::fill_n(buf->data(), kTestBufferSize, -1); |
283 | 285 |
284 // Read() results in success even when the reader returns error. | 286 // Read() results in success even when the reader returns error. |
285 EXPECT_EQ(ERR_FAILED, | 287 EXPECT_EQ(ERR_FAILED, |
(...skipping 15 matching lines...) Expand all Loading... |
301 | 303 |
302 // This element is ignored because of the error from the previous reader. | 304 // This element is ignored because of the error from the previous reader. |
303 element_readers_.push_back( | 305 element_readers_.push_back( |
304 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); | 306 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); |
305 | 307 |
306 std::unique_ptr<UploadDataStream> stream( | 308 std::unique_ptr<UploadDataStream> stream( |
307 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 309 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
308 | 310 |
309 // Run Init(). | 311 // Run Init(). |
310 TestCompletionCallback init_callback; | 312 TestCompletionCallback init_callback; |
311 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING)); | 313 ASSERT_THAT(stream->Init(init_callback.callback(), BoundNetLog()), |
| 314 IsError(ERR_IO_PENDING)); |
312 EXPECT_THAT(init_callback.WaitForResult(), IsOk()); | 315 EXPECT_THAT(init_callback.WaitForResult(), IsOk()); |
313 EXPECT_EQ(kTestDataSize*2, stream->size()); | 316 EXPECT_EQ(kTestDataSize*2, stream->size()); |
314 EXPECT_EQ(0U, stream->position()); | 317 EXPECT_EQ(0U, stream->position()); |
315 EXPECT_FALSE(stream->IsEOF()); | 318 EXPECT_FALSE(stream->IsEOF()); |
316 | 319 |
317 // Prepare a buffer filled with non-zero data. | 320 // Prepare a buffer filled with non-zero data. |
318 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 321 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
319 std::fill_n(buf->data(), kTestBufferSize, -1); | 322 std::fill_n(buf->data(), kTestBufferSize, -1); |
320 | 323 |
321 // Read() results in success even when the reader returns error. | 324 // Read() results in success even when the reader returns error. |
(...skipping 21 matching lines...) Expand all Loading... |
343 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, | 346 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, |
344 kFileRangeOffset, kFileRangeLength, base::Time()))); | 347 kFileRangeOffset, kFileRangeLength, base::Time()))); |
345 | 348 |
346 element_readers_.push_back( | 349 element_readers_.push_back( |
347 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); | 350 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); |
348 | 351 |
349 const uint64_t kStreamSize = kTestDataSize + kFileRangeLength; | 352 const uint64_t kStreamSize = kTestDataSize + kFileRangeLength; |
350 TestCompletionCallback init_callback; | 353 TestCompletionCallback init_callback; |
351 std::unique_ptr<UploadDataStream> stream( | 354 std::unique_ptr<UploadDataStream> stream( |
352 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 355 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
353 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING)); | 356 ASSERT_THAT(stream->Init(init_callback.callback(), BoundNetLog()), |
| 357 IsError(ERR_IO_PENDING)); |
354 ASSERT_THAT(init_callback.WaitForResult(), IsOk()); | 358 ASSERT_THAT(init_callback.WaitForResult(), IsOk()); |
355 EXPECT_FALSE(stream->IsInMemory()); | 359 EXPECT_FALSE(stream->IsInMemory()); |
356 EXPECT_EQ(kStreamSize, stream->size()); | 360 EXPECT_EQ(kStreamSize, stream->size()); |
357 EXPECT_EQ(0U, stream->position()); | 361 EXPECT_EQ(0U, stream->position()); |
358 EXPECT_FALSE(stream->IsEOF()); | 362 EXPECT_FALSE(stream->IsEOF()); |
359 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 363 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
360 while (!stream->IsEOF()) { | 364 while (!stream->IsEOF()) { |
361 TestCompletionCallback read_callback; | 365 TestCompletionCallback read_callback; |
362 const int result = | 366 const int result = |
363 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()); | 367 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 std::unique_ptr<MockUploadElementReader> reader5( | 399 std::unique_ptr<MockUploadElementReader> reader5( |
396 new MockUploadElementReader(kTestDataSize, true)); | 400 new MockUploadElementReader(kTestDataSize, true)); |
397 EXPECT_CALL(*reader5, Init(_)).WillOnce(Return(OK)); | 401 EXPECT_CALL(*reader5, Init(_)).WillOnce(Return(OK)); |
398 element_readers_.push_back(std::move(reader5)); | 402 element_readers_.push_back(std::move(reader5)); |
399 | 403 |
400 std::unique_ptr<UploadDataStream> stream( | 404 std::unique_ptr<UploadDataStream> stream( |
401 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 405 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
402 | 406 |
403 // Run Init(). | 407 // Run Init(). |
404 TestCompletionCallback callback; | 408 TestCompletionCallback callback; |
405 ASSERT_THAT(stream->Init(callback.callback()), IsError(ERR_IO_PENDING)); | 409 ASSERT_THAT(stream->Init(callback.callback(), BoundNetLog()), |
| 410 IsError(ERR_IO_PENDING)); |
406 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 411 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
407 } | 412 } |
408 | 413 |
409 // Init() of a reader fails asynchronously. | 414 // Init() of a reader fails asynchronously. |
410 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureAsync) { | 415 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureAsync) { |
411 // Create UploadDataStream with a mock reader. | 416 // Create UploadDataStream with a mock reader. |
412 std::unique_ptr<MockUploadElementReader> reader( | 417 std::unique_ptr<MockUploadElementReader> reader( |
413 new MockUploadElementReader(kTestDataSize, false)); | 418 new MockUploadElementReader(kTestDataSize, false)); |
414 reader->SetAsyncInitExpectation(ERR_FAILED); | 419 reader->SetAsyncInitExpectation(ERR_FAILED); |
415 element_readers_.push_back(std::move(reader)); | 420 element_readers_.push_back(std::move(reader)); |
416 | 421 |
417 std::unique_ptr<UploadDataStream> stream( | 422 std::unique_ptr<UploadDataStream> stream( |
418 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 423 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
419 | 424 |
420 // Run Init(). | 425 // Run Init(). |
421 TestCompletionCallback callback; | 426 TestCompletionCallback callback; |
422 ASSERT_THAT(stream->Init(callback.callback()), IsError(ERR_IO_PENDING)); | 427 ASSERT_THAT(stream->Init(callback.callback(), BoundNetLog()), |
| 428 IsError(ERR_IO_PENDING)); |
423 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FAILED)); | 429 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FAILED)); |
424 } | 430 } |
425 | 431 |
426 // Init() of a reader fails synchronously. | 432 // Init() of a reader fails synchronously. |
427 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureSync) { | 433 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureSync) { |
428 // Create UploadDataStream with mock readers. | 434 // Create UploadDataStream with mock readers. |
429 std::unique_ptr<MockUploadElementReader> reader( | 435 std::unique_ptr<MockUploadElementReader> reader( |
430 new MockUploadElementReader(kTestDataSize, false)); | 436 new MockUploadElementReader(kTestDataSize, false)); |
431 reader->SetAsyncInitExpectation(OK); | 437 reader->SetAsyncInitExpectation(OK); |
432 element_readers_.push_back(std::move(reader)); | 438 element_readers_.push_back(std::move(reader)); |
433 | 439 |
434 std::unique_ptr<MockUploadElementReader> reader2( | 440 std::unique_ptr<MockUploadElementReader> reader2( |
435 new MockUploadElementReader(kTestDataSize, true)); | 441 new MockUploadElementReader(kTestDataSize, true)); |
436 EXPECT_CALL(*reader2, Init(_)).WillOnce(Return(ERR_FAILED)); | 442 EXPECT_CALL(*reader2, Init(_)).WillOnce(Return(ERR_FAILED)); |
437 element_readers_.push_back(std::move(reader2)); | 443 element_readers_.push_back(std::move(reader2)); |
438 | 444 |
439 std::unique_ptr<UploadDataStream> stream( | 445 std::unique_ptr<UploadDataStream> stream( |
440 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 446 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
441 | 447 |
442 // Run Init(). | 448 // Run Init(). |
443 TestCompletionCallback callback; | 449 TestCompletionCallback callback; |
444 ASSERT_THAT(stream->Init(callback.callback()), IsError(ERR_IO_PENDING)); | 450 ASSERT_THAT(stream->Init(callback.callback(), BoundNetLog()), |
| 451 IsError(ERR_IO_PENDING)); |
445 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FAILED)); | 452 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FAILED)); |
446 } | 453 } |
447 | 454 |
448 // Read with a buffer whose size is same as the data. | 455 // Read with a buffer whose size is same as the data. |
449 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) { | 456 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) { |
450 element_readers_.push_back( | 457 element_readers_.push_back( |
451 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); | 458 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); |
452 std::unique_ptr<UploadDataStream> stream( | 459 std::unique_ptr<UploadDataStream> stream( |
453 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 460 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
454 | 461 |
455 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk()); | 462 ASSERT_THAT(stream->Init(CompletionCallback(), BoundNetLog()), IsOk()); |
456 EXPECT_TRUE(stream->IsInMemory()); | 463 EXPECT_TRUE(stream->IsInMemory()); |
457 EXPECT_EQ(kTestDataSize, stream->size()); | 464 EXPECT_EQ(kTestDataSize, stream->size()); |
458 EXPECT_EQ(0U, stream->position()); | 465 EXPECT_EQ(0U, stream->position()); |
459 EXPECT_FALSE(stream->IsEOF()); | 466 EXPECT_FALSE(stream->IsEOF()); |
460 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize); | 467 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize); |
461 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback()); | 468 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback()); |
462 ASSERT_EQ(static_cast<int>(kTestDataSize), bytes_read); // Not an error. | 469 ASSERT_EQ(static_cast<int>(kTestDataSize), bytes_read); // Not an error. |
463 EXPECT_EQ(kTestDataSize, stream->position()); | 470 EXPECT_EQ(kTestDataSize, stream->position()); |
464 ASSERT_TRUE(stream->IsEOF()); | 471 ASSERT_TRUE(stream->IsEOF()); |
465 } | 472 } |
(...skipping 23 matching lines...) Expand all Loading... |
489 new MockUploadElementReader(kTestDataSize, false)); | 496 new MockUploadElementReader(kTestDataSize, false)); |
490 reader4->SetAsyncInitExpectation(OK); | 497 reader4->SetAsyncInitExpectation(OK); |
491 reader4->SetReadExpectation(kTestDataSize); | 498 reader4->SetReadExpectation(kTestDataSize); |
492 element_readers_.push_back(std::move(reader4)); | 499 element_readers_.push_back(std::move(reader4)); |
493 | 500 |
494 std::unique_ptr<UploadDataStream> stream( | 501 std::unique_ptr<UploadDataStream> stream( |
495 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 502 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
496 | 503 |
497 // Run Init(). | 504 // Run Init(). |
498 TestCompletionCallback init_callback; | 505 TestCompletionCallback init_callback; |
499 EXPECT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING)); | 506 EXPECT_THAT(stream->Init(init_callback.callback(), BoundNetLog()), |
| 507 IsError(ERR_IO_PENDING)); |
500 EXPECT_THAT(init_callback.WaitForResult(), IsOk()); | 508 EXPECT_THAT(init_callback.WaitForResult(), IsOk()); |
501 | 509 |
502 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 510 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
503 | 511 |
504 // Consume the first element. | 512 // Consume the first element. |
505 TestCompletionCallback read_callback1; | 513 TestCompletionCallback read_callback1; |
506 EXPECT_EQ(static_cast<int>(kTestDataSize), | 514 EXPECT_EQ(static_cast<int>(kTestDataSize), |
507 stream->Read(buf.get(), kTestDataSize, read_callback1.callback())); | 515 stream->Read(buf.get(), kTestDataSize, read_callback1.callback())); |
508 base::RunLoop().RunUntilIdle(); | 516 base::RunLoop().RunUntilIdle(); |
509 EXPECT_FALSE(read_callback1.have_result()); | 517 EXPECT_FALSE(read_callback1.have_result()); |
(...skipping 19 matching lines...) Expand all Loading... |
529 bool error_expected) { | 537 bool error_expected) { |
530 // Don't use element_readers_ here, as this function is called twice, and | 538 // Don't use element_readers_ here, as this function is called twice, and |
531 // reusing element_readers_ is wrong. | 539 // reusing element_readers_ is wrong. |
532 std::vector<std::unique_ptr<UploadElementReader>> element_readers; | 540 std::vector<std::unique_ptr<UploadElementReader>> element_readers; |
533 element_readers.push_back(base::WrapUnique(new UploadFileElementReader( | 541 element_readers.push_back(base::WrapUnique(new UploadFileElementReader( |
534 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time))); | 542 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time))); |
535 | 543 |
536 TestCompletionCallback init_callback; | 544 TestCompletionCallback init_callback; |
537 std::unique_ptr<UploadDataStream> stream( | 545 std::unique_ptr<UploadDataStream> stream( |
538 new ElementsUploadDataStream(std::move(element_readers), 0)); | 546 new ElementsUploadDataStream(std::move(element_readers), 0)); |
539 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING)); | 547 ASSERT_THAT(stream->Init(init_callback.callback(), BoundNetLog()), |
| 548 IsError(ERR_IO_PENDING)); |
540 int error_code = init_callback.WaitForResult(); | 549 int error_code = init_callback.WaitForResult(); |
541 if (error_expected) | 550 if (error_expected) |
542 ASSERT_THAT(error_code, IsError(ERR_UPLOAD_FILE_CHANGED)); | 551 ASSERT_THAT(error_code, IsError(ERR_UPLOAD_FILE_CHANGED)); |
543 else | 552 else |
544 ASSERT_THAT(error_code, IsOk()); | 553 ASSERT_THAT(error_code, IsOk()); |
545 } | 554 } |
546 | 555 |
547 TEST_F(ElementsUploadDataStreamTest, FileChanged) { | 556 TEST_F(ElementsUploadDataStreamTest, FileChanged) { |
548 base::FilePath temp_file_path; | 557 base::FilePath temp_file_path; |
549 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 558 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
(...skipping 27 matching lines...) Expand all Loading... |
577 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, | 586 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
578 std::numeric_limits<uint64_t>::max(), base::Time()))); | 587 std::numeric_limits<uint64_t>::max(), base::Time()))); |
579 std::unique_ptr<UploadDataStream> stream( | 588 std::unique_ptr<UploadDataStream> stream( |
580 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 589 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
581 | 590 |
582 std::string expected_data(kTestData, kTestData + kTestDataSize); | 591 std::string expected_data(kTestData, kTestData + kTestDataSize); |
583 expected_data += expected_data; | 592 expected_data += expected_data; |
584 | 593 |
585 // Call Init(). | 594 // Call Init(). |
586 TestCompletionCallback init_callback1; | 595 TestCompletionCallback init_callback1; |
587 ASSERT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING)); | 596 ASSERT_THAT(stream->Init(init_callback1.callback(), BoundNetLog()), |
| 597 IsError(ERR_IO_PENDING)); |
588 ASSERT_THAT(init_callback1.WaitForResult(), IsOk()); | 598 ASSERT_THAT(init_callback1.WaitForResult(), IsOk()); |
589 EXPECT_FALSE(stream->IsEOF()); | 599 EXPECT_FALSE(stream->IsEOF()); |
590 EXPECT_EQ(kTestDataSize*2, stream->size()); | 600 EXPECT_EQ(kTestDataSize*2, stream->size()); |
591 | 601 |
592 // Read. | 602 // Read. |
593 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); | 603 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); |
594 EXPECT_TRUE(stream->IsEOF()); | 604 EXPECT_TRUE(stream->IsEOF()); |
595 | 605 |
596 // Call Init() again to reset. | 606 // Call Init() again to reset. |
597 TestCompletionCallback init_callback2; | 607 TestCompletionCallback init_callback2; |
598 ASSERT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING)); | 608 ASSERT_THAT(stream->Init(init_callback2.callback(), BoundNetLog()), |
| 609 IsError(ERR_IO_PENDING)); |
599 ASSERT_THAT(init_callback2.WaitForResult(), IsOk()); | 610 ASSERT_THAT(init_callback2.WaitForResult(), IsOk()); |
600 EXPECT_FALSE(stream->IsEOF()); | 611 EXPECT_FALSE(stream->IsEOF()); |
601 EXPECT_EQ(kTestDataSize*2, stream->size()); | 612 EXPECT_EQ(kTestDataSize*2, stream->size()); |
602 | 613 |
603 // Read again. | 614 // Read again. |
604 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); | 615 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); |
605 EXPECT_TRUE(stream->IsEOF()); | 616 EXPECT_TRUE(stream->IsEOF()); |
606 } | 617 } |
607 | 618 |
608 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) { | 619 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) { |
(...skipping 10 matching lines...) Expand all Loading... |
619 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( | 630 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( |
620 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, | 631 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
621 std::numeric_limits<uint64_t>::max(), base::Time()))); | 632 std::numeric_limits<uint64_t>::max(), base::Time()))); |
622 std::unique_ptr<UploadDataStream> stream( | 633 std::unique_ptr<UploadDataStream> stream( |
623 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 634 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
624 | 635 |
625 std::string expected_data(kTestData, kTestData + kTestDataSize); | 636 std::string expected_data(kTestData, kTestData + kTestDataSize); |
626 expected_data += expected_data; | 637 expected_data += expected_data; |
627 | 638 |
628 // Call Init(). | 639 // Call Init(). |
629 ASSERT_THAT(stream->Init(test_callback.callback()), IsError(ERR_IO_PENDING)); | 640 ASSERT_THAT(stream->Init(test_callback.callback(), BoundNetLog()), |
| 641 IsError(ERR_IO_PENDING)); |
630 EXPECT_THAT(test_callback.WaitForResult(), IsOk()); | 642 EXPECT_THAT(test_callback.WaitForResult(), IsOk()); |
631 EXPECT_FALSE(stream->IsEOF()); | 643 EXPECT_FALSE(stream->IsEOF()); |
632 EXPECT_EQ(kTestDataSize*2, stream->size()); | 644 EXPECT_EQ(kTestDataSize*2, stream->size()); |
633 | 645 |
634 // Read. | 646 // Read. |
635 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); | 647 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); |
636 EXPECT_TRUE(stream->IsEOF()); | 648 EXPECT_TRUE(stream->IsEOF()); |
637 | 649 |
638 // Call Init() again to reset. | 650 // Call Init() again to reset. |
639 ASSERT_THAT(stream->Init(test_callback.callback()), IsError(ERR_IO_PENDING)); | 651 ASSERT_THAT(stream->Init(test_callback.callback(), BoundNetLog()), |
| 652 IsError(ERR_IO_PENDING)); |
640 EXPECT_THAT(test_callback.WaitForResult(), IsOk()); | 653 EXPECT_THAT(test_callback.WaitForResult(), IsOk()); |
641 EXPECT_FALSE(stream->IsEOF()); | 654 EXPECT_FALSE(stream->IsEOF()); |
642 EXPECT_EQ(kTestDataSize*2, stream->size()); | 655 EXPECT_EQ(kTestDataSize*2, stream->size()); |
643 | 656 |
644 // Read again. | 657 // Read again. |
645 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); | 658 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); |
646 EXPECT_TRUE(stream->IsEOF()); | 659 EXPECT_TRUE(stream->IsEOF()); |
647 } | 660 } |
648 | 661 |
649 TEST_F(ElementsUploadDataStreamTest, InitToReset) { | 662 TEST_F(ElementsUploadDataStreamTest, InitToReset) { |
(...skipping 11 matching lines...) Expand all Loading... |
661 std::numeric_limits<uint64_t>::max(), base::Time()))); | 674 std::numeric_limits<uint64_t>::max(), base::Time()))); |
662 std::unique_ptr<UploadDataStream> stream( | 675 std::unique_ptr<UploadDataStream> stream( |
663 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 676 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
664 | 677 |
665 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 678 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
666 expected_data.insert(expected_data.end(), kTestData, | 679 expected_data.insert(expected_data.end(), kTestData, |
667 kTestData + kTestDataSize); | 680 kTestData + kTestDataSize); |
668 | 681 |
669 // Call Init(). | 682 // Call Init(). |
670 TestCompletionCallback init_callback1; | 683 TestCompletionCallback init_callback1; |
671 ASSERT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING)); | 684 ASSERT_THAT(stream->Init(init_callback1.callback(), BoundNetLog()), |
| 685 IsError(ERR_IO_PENDING)); |
672 EXPECT_THAT(init_callback1.WaitForResult(), IsOk()); | 686 EXPECT_THAT(init_callback1.WaitForResult(), IsOk()); |
673 EXPECT_FALSE(stream->IsEOF()); | 687 EXPECT_FALSE(stream->IsEOF()); |
674 EXPECT_EQ(kTestDataSize*2, stream->size()); | 688 EXPECT_EQ(kTestDataSize*2, stream->size()); |
675 | 689 |
676 // Read some. | 690 // Read some. |
677 TestCompletionCallback read_callback1; | 691 TestCompletionCallback read_callback1; |
678 std::vector<char> buf(kTestDataSize + kTestDataSize/2); | 692 std::vector<char> buf(kTestDataSize + kTestDataSize/2); |
679 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); | 693 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
680 EXPECT_EQ( | 694 EXPECT_EQ( |
681 ERR_IO_PENDING, | 695 ERR_IO_PENDING, |
682 stream->Read(wrapped_buffer.get(), buf.size(), | 696 stream->Read(wrapped_buffer.get(), buf.size(), |
683 read_callback1.callback())); | 697 read_callback1.callback())); |
684 EXPECT_EQ(static_cast<int>(buf.size()), read_callback1.WaitForResult()); | 698 EXPECT_EQ(static_cast<int>(buf.size()), read_callback1.WaitForResult()); |
685 EXPECT_EQ(buf.size(), stream->position()); | 699 EXPECT_EQ(buf.size(), stream->position()); |
686 | 700 |
687 // Call Init to reset the state. | 701 // Call Init to reset the state. |
688 TestCompletionCallback init_callback2; | 702 TestCompletionCallback init_callback2; |
689 ASSERT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING)); | 703 ASSERT_THAT(stream->Init(init_callback2.callback(), BoundNetLog()), |
| 704 IsError(ERR_IO_PENDING)); |
690 EXPECT_THAT(init_callback2.WaitForResult(), IsOk()); | 705 EXPECT_THAT(init_callback2.WaitForResult(), IsOk()); |
691 EXPECT_FALSE(stream->IsEOF()); | 706 EXPECT_FALSE(stream->IsEOF()); |
692 EXPECT_EQ(kTestDataSize*2, stream->size()); | 707 EXPECT_EQ(kTestDataSize*2, stream->size()); |
693 | 708 |
694 // Read. | 709 // Read. |
695 TestCompletionCallback read_callback2; | 710 TestCompletionCallback read_callback2; |
696 std::vector<char> buf2(kTestDataSize*2); | 711 std::vector<char> buf2(kTestDataSize*2); |
697 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); | 712 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); |
698 EXPECT_EQ(ERR_IO_PENDING, | 713 EXPECT_EQ(ERR_IO_PENDING, |
699 stream->Read( | 714 stream->Read( |
(...skipping 17 matching lines...) Expand all Loading... |
717 std::numeric_limits<uint64_t>::max(), base::Time()))); | 732 std::numeric_limits<uint64_t>::max(), base::Time()))); |
718 std::unique_ptr<UploadDataStream> stream( | 733 std::unique_ptr<UploadDataStream> stream( |
719 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 734 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
720 | 735 |
721 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 736 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
722 expected_data.insert(expected_data.end(), kTestData, | 737 expected_data.insert(expected_data.end(), kTestData, |
723 kTestData + kTestDataSize); | 738 kTestData + kTestDataSize); |
724 | 739 |
725 // Start Init. | 740 // Start Init. |
726 TestCompletionCallback init_callback1; | 741 TestCompletionCallback init_callback1; |
727 EXPECT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING)); | 742 EXPECT_THAT(stream->Init(init_callback1.callback(), BoundNetLog()), |
| 743 IsError(ERR_IO_PENDING)); |
728 | 744 |
729 // Call Init again to cancel the previous init. | 745 // Call Init again to cancel the previous init. |
730 TestCompletionCallback init_callback2; | 746 TestCompletionCallback init_callback2; |
731 EXPECT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING)); | 747 EXPECT_THAT(stream->Init(init_callback2.callback(), BoundNetLog()), |
| 748 IsError(ERR_IO_PENDING)); |
732 EXPECT_THAT(init_callback2.WaitForResult(), IsOk()); | 749 EXPECT_THAT(init_callback2.WaitForResult(), IsOk()); |
733 EXPECT_FALSE(stream->IsEOF()); | 750 EXPECT_FALSE(stream->IsEOF()); |
734 EXPECT_EQ(kTestDataSize*2, stream->size()); | 751 EXPECT_EQ(kTestDataSize*2, stream->size()); |
735 | 752 |
736 // Read. | 753 // Read. |
737 TestCompletionCallback read_callback2; | 754 TestCompletionCallback read_callback2; |
738 std::vector<char> buf2(kTestDataSize*2); | 755 std::vector<char> buf2(kTestDataSize*2); |
739 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); | 756 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); |
740 EXPECT_EQ(ERR_IO_PENDING, | 757 EXPECT_EQ(ERR_IO_PENDING, |
741 stream->Read( | 758 stream->Read( |
(...skipping 21 matching lines...) Expand all Loading... |
763 std::numeric_limits<uint64_t>::max(), base::Time()))); | 780 std::numeric_limits<uint64_t>::max(), base::Time()))); |
764 std::unique_ptr<UploadDataStream> stream( | 781 std::unique_ptr<UploadDataStream> stream( |
765 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 782 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
766 | 783 |
767 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 784 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
768 expected_data.insert(expected_data.end(), kTestData, | 785 expected_data.insert(expected_data.end(), kTestData, |
769 kTestData + kTestDataSize); | 786 kTestData + kTestDataSize); |
770 | 787 |
771 // Call Init(). | 788 // Call Init(). |
772 TestCompletionCallback init_callback1; | 789 TestCompletionCallback init_callback1; |
773 ASSERT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING)); | 790 ASSERT_THAT(stream->Init(init_callback1.callback(), BoundNetLog()), |
| 791 IsError(ERR_IO_PENDING)); |
774 EXPECT_THAT(init_callback1.WaitForResult(), IsOk()); | 792 EXPECT_THAT(init_callback1.WaitForResult(), IsOk()); |
775 EXPECT_FALSE(stream->IsEOF()); | 793 EXPECT_FALSE(stream->IsEOF()); |
776 EXPECT_EQ(kTestDataSize*2, stream->size()); | 794 EXPECT_EQ(kTestDataSize*2, stream->size()); |
777 | 795 |
778 // Start reading. | 796 // Start reading. |
779 TestCompletionCallback read_callback1; | 797 TestCompletionCallback read_callback1; |
780 std::vector<char> buf(kTestDataSize*2); | 798 std::vector<char> buf(kTestDataSize*2); |
781 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); | 799 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
782 EXPECT_EQ( | 800 EXPECT_EQ( |
783 ERR_IO_PENDING, | 801 ERR_IO_PENDING, |
784 stream->Read(wrapped_buffer.get(), buf.size(), | 802 stream->Read(wrapped_buffer.get(), buf.size(), |
785 read_callback1.callback())); | 803 read_callback1.callback())); |
786 | 804 |
787 // Call Init to cancel the previous read. | 805 // Call Init to cancel the previous read. |
788 TestCompletionCallback init_callback2; | 806 TestCompletionCallback init_callback2; |
789 EXPECT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING)); | 807 EXPECT_THAT(stream->Init(init_callback2.callback(), BoundNetLog()), |
| 808 IsError(ERR_IO_PENDING)); |
790 EXPECT_THAT(init_callback2.WaitForResult(), IsOk()); | 809 EXPECT_THAT(init_callback2.WaitForResult(), IsOk()); |
791 EXPECT_FALSE(stream->IsEOF()); | 810 EXPECT_FALSE(stream->IsEOF()); |
792 EXPECT_EQ(kTestDataSize*2, stream->size()); | 811 EXPECT_EQ(kTestDataSize*2, stream->size()); |
793 | 812 |
794 // Read. | 813 // Read. |
795 TestCompletionCallback read_callback2; | 814 TestCompletionCallback read_callback2; |
796 std::vector<char> buf2(kTestDataSize*2); | 815 std::vector<char> buf2(kTestDataSize*2); |
797 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); | 816 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); |
798 EXPECT_EQ(ERR_IO_PENDING, | 817 EXPECT_EQ(ERR_IO_PENDING, |
799 stream->Read( | 818 stream->Read( |
800 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 819 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); |
801 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 820 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); |
802 EXPECT_EQ(expected_data, buf2); | 821 EXPECT_EQ(expected_data, buf2); |
803 EXPECT_TRUE(stream->IsEOF()); | 822 EXPECT_TRUE(stream->IsEOF()); |
804 | 823 |
805 // Make sure callbacks are not called for cancelled operations. | 824 // Make sure callbacks are not called for cancelled operations. |
806 EXPECT_FALSE(read_callback1.have_result()); | 825 EXPECT_FALSE(read_callback1.have_result()); |
807 } | 826 } |
808 | 827 |
809 } // namespace net | 828 } // namespace net |
OLD | NEW |