| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "modules/fetch/CompositeDataConsumerHandle.h" | 5 #include "modules/fetch/CompositeDataConsumerHandle.h" |
| 6 | 6 |
| 7 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 7 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
| 8 #include "platform/ThreadSafeFunctional.h" | 8 #include "platform/ThreadSafeFunctional.h" |
| 9 #include "platform/WaitableEvent.h" | 9 #include "platform/WaitableEvent.h" |
| 10 #include "platform/heap/Handle.h" | 10 #include "platform/heap/Handle.h" |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 EXPECT_CALL(*handle2, obtainReaderInternal(&client)).WillOnce(Return(reader2
.get())); | 289 EXPECT_CALL(*handle2, obtainReaderInternal(&client)).WillOnce(Return(reader2
.get())); |
| 290 EXPECT_CALL(checkpoint, Call(3)); | 290 EXPECT_CALL(checkpoint, Call(3)); |
| 291 EXPECT_CALL(*reader2, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R
eturn(kOk)); | 291 EXPECT_CALL(*reader2, read(buffer, sizeof(buffer), kNone, &size)).WillOnce(R
eturn(kOk)); |
| 292 EXPECT_CALL(checkpoint, Call(4)); | 292 EXPECT_CALL(checkpoint, Call(4)); |
| 293 | 293 |
| 294 // They are adopted by |obtainReader|. | 294 // They are adopted by |obtainReader|. |
| 295 ASSERT_TRUE(reader1.leakPtr()); | 295 ASSERT_TRUE(reader1.leakPtr()); |
| 296 ASSERT_TRUE(reader2.leakPtr()); | 296 ASSERT_TRUE(reader2.leakPtr()); |
| 297 | 297 |
| 298 CompositeDataConsumerHandle::Updater* updater = nullptr; | 298 CompositeDataConsumerHandle::Updater* updater = nullptr; |
| 299 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(h
andle1.release(), &updater); | 299 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(s
td::move(handle1), &updater); |
| 300 checkpoint.Call(0); | 300 checkpoint.Call(0); |
| 301 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(&client)
; | 301 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(&client)
; |
| 302 checkpoint.Call(1); | 302 checkpoint.Call(1); |
| 303 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); | 303 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); |
| 304 checkpoint.Call(2); | 304 checkpoint.Call(2); |
| 305 updater->update(handle2.release()); | 305 updater->update(std::move(handle2)); |
| 306 checkpoint.Call(3); | 306 checkpoint.Call(3); |
| 307 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); | 307 EXPECT_EQ(kOk, reader->read(buffer, sizeof(buffer), kNone, &size)); |
| 308 checkpoint.Call(4); | 308 checkpoint.Call(4); |
| 309 } | 309 } |
| 310 | 310 |
| 311 TEST(CompositeDataConsumerHandleTest, TwoPhaseRead) | 311 TEST(CompositeDataConsumerHandleTest, TwoPhaseRead) |
| 312 { | 312 { |
| 313 const void* p = nullptr; | 313 const void* p = nullptr; |
| 314 size_t size = 0; | 314 size_t size = 0; |
| 315 Checkpoint checkpoint; | 315 Checkpoint checkpoint; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 332 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); | 332 EXPECT_CALL(*reader2, beginRead(&p, kNone, &size)).WillOnce(Return(kOk)); |
| 333 EXPECT_CALL(checkpoint, Call(5)); | 333 EXPECT_CALL(checkpoint, Call(5)); |
| 334 EXPECT_CALL(*reader2, endRead(0)).WillOnce(Return(kOk)); | 334 EXPECT_CALL(*reader2, endRead(0)).WillOnce(Return(kOk)); |
| 335 EXPECT_CALL(checkpoint, Call(6)); | 335 EXPECT_CALL(checkpoint, Call(6)); |
| 336 | 336 |
| 337 // They are adopted by |obtainReader|. | 337 // They are adopted by |obtainReader|. |
| 338 ASSERT_TRUE(reader1.leakPtr()); | 338 ASSERT_TRUE(reader1.leakPtr()); |
| 339 ASSERT_TRUE(reader2.leakPtr()); | 339 ASSERT_TRUE(reader2.leakPtr()); |
| 340 | 340 |
| 341 CompositeDataConsumerHandle::Updater* updater = nullptr; | 341 CompositeDataConsumerHandle::Updater* updater = nullptr; |
| 342 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(h
andle1.release(), &updater); | 342 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(s
td::move(handle1), &updater); |
| 343 checkpoint.Call(0); | 343 checkpoint.Call(0); |
| 344 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr)
; | 344 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr)
; |
| 345 checkpoint.Call(1); | 345 checkpoint.Call(1); |
| 346 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); | 346 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); |
| 347 checkpoint.Call(2); | 347 checkpoint.Call(2); |
| 348 EXPECT_EQ(kOk, reader->endRead(0)); | 348 EXPECT_EQ(kOk, reader->endRead(0)); |
| 349 checkpoint.Call(3); | 349 checkpoint.Call(3); |
| 350 updater->update(handle2.release()); | 350 updater->update(std::move(handle2)); |
| 351 checkpoint.Call(4); | 351 checkpoint.Call(4); |
| 352 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); | 352 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); |
| 353 checkpoint.Call(5); | 353 checkpoint.Call(5); |
| 354 EXPECT_EQ(kOk, reader->endRead(0)); | 354 EXPECT_EQ(kOk, reader->endRead(0)); |
| 355 checkpoint.Call(6); | 355 checkpoint.Call(6); |
| 356 } | 356 } |
| 357 | 357 |
| 358 TEST(CompositeDataConsumerHandleTest, HangingTwoPhaseRead) | 358 TEST(CompositeDataConsumerHandleTest, HangingTwoPhaseRead) |
| 359 { | 359 { |
| 360 const void* p = nullptr; | 360 const void* p = nullptr; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 386 EXPECT_CALL(checkpoint, Call(7)); | 386 EXPECT_CALL(checkpoint, Call(7)); |
| 387 EXPECT_CALL(*reader3, endRead(0)).WillOnce(Return(kOk)); | 387 EXPECT_CALL(*reader3, endRead(0)).WillOnce(Return(kOk)); |
| 388 EXPECT_CALL(checkpoint, Call(8)); | 388 EXPECT_CALL(checkpoint, Call(8)); |
| 389 | 389 |
| 390 // They are adopted by |obtainReader|. | 390 // They are adopted by |obtainReader|. |
| 391 ASSERT_TRUE(reader1.leakPtr()); | 391 ASSERT_TRUE(reader1.leakPtr()); |
| 392 ASSERT_TRUE(reader2.leakPtr()); | 392 ASSERT_TRUE(reader2.leakPtr()); |
| 393 ASSERT_TRUE(reader3.leakPtr()); | 393 ASSERT_TRUE(reader3.leakPtr()); |
| 394 | 394 |
| 395 CompositeDataConsumerHandle::Updater* updater = nullptr; | 395 CompositeDataConsumerHandle::Updater* updater = nullptr; |
| 396 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(h
andle1.release(), &updater); | 396 OwnPtr<WebDataConsumerHandle> handle = CompositeDataConsumerHandle::create(s
td::move(handle1), &updater); |
| 397 checkpoint.Call(0); | 397 checkpoint.Call(0); |
| 398 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr)
; | 398 OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr)
; |
| 399 checkpoint.Call(1); | 399 checkpoint.Call(1); |
| 400 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); | 400 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); |
| 401 checkpoint.Call(2); | 401 checkpoint.Call(2); |
| 402 updater->update(handle2.release()); | 402 updater->update(std::move(handle2)); |
| 403 checkpoint.Call(3); | 403 checkpoint.Call(3); |
| 404 EXPECT_EQ(kOk, reader->endRead(0)); | 404 EXPECT_EQ(kOk, reader->endRead(0)); |
| 405 checkpoint.Call(4); | 405 checkpoint.Call(4); |
| 406 EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size)); | 406 EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size)); |
| 407 checkpoint.Call(5); | 407 checkpoint.Call(5); |
| 408 updater->update(handle3.release()); | 408 updater->update(std::move(handle3)); |
| 409 checkpoint.Call(6); | 409 checkpoint.Call(6); |
| 410 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); | 410 EXPECT_EQ(kOk, reader->beginRead(&p, kNone, &size)); |
| 411 checkpoint.Call(7); | 411 checkpoint.Call(7); |
| 412 EXPECT_EQ(kOk, reader->endRead(0)); | 412 EXPECT_EQ(kOk, reader->endRead(0)); |
| 413 checkpoint.Call(8); | 413 checkpoint.Call(8); |
| 414 } | 414 } |
| 415 | 415 |
| 416 TEST(CompositeDataConsumerHandleTest, RegisterClientOnDifferentThreads) | 416 TEST(CompositeDataConsumerHandleTest, RegisterClientOnDifferentThreads) |
| 417 { | 417 { |
| 418 RefPtr<ThreadingRegistrationTest> test = ThreadingRegistrationTest::create()
; | 418 RefPtr<ThreadingRegistrationTest> test = ThreadingRegistrationTest::create()
; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 { | 488 { |
| 489 RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test =
DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); | 489 RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test =
DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); |
| 490 CompositeDataConsumerHandle::Updater* updater = nullptr; | 490 CompositeDataConsumerHandle::Updater* updater = nullptr; |
| 491 // Test this function doesn't crash. | 491 // Test this function doesn't crash. |
| 492 test->run(CompositeDataConsumerHandle::create(createDoneDataConsumerHandle()
, &updater)); | 492 test->run(CompositeDataConsumerHandle::create(createDoneDataConsumerHandle()
, &updater)); |
| 493 } | 493 } |
| 494 | 494 |
| 495 } // namespace | 495 } // namespace |
| 496 | 496 |
| 497 } // namespace blink | 497 } // namespace blink |
| OLD | NEW |