| 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 |