| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/BytesConsumer.h" | 5 #include "modules/fetch/BytesConsumer.h" |
| 6 | 6 |
| 7 #include "core/testing/DummyPageHolder.h" | 7 #include "core/testing/DummyPageHolder.h" |
| 8 #include "modules/fetch/BytesConsumerTestUtil.h" | 8 #include "modules/fetch/BytesConsumerTestUtil.h" |
| 9 #include "platform/blob/BlobData.h" | 9 #include "platform/blob/BlobData.h" |
| 10 #include "platform/testing/UnitTestHelpers.h" | 10 #include "platform/testing/UnitTestHelpers.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 TEST_F(BytesConsumerTeeTest, CreateDone) | 94 TEST_F(BytesConsumerTeeTest, CreateDone) |
| 95 { | 95 { |
| 96 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); | 96 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); |
| 97 src->add(Command(Command::Done)); | 97 src->add(Command(Command::Done)); |
| 98 EXPECT_FALSE(src->isCancelled()); | 98 EXPECT_FALSE(src->isCancelled()); |
| 99 | 99 |
| 100 BytesConsumer* dest1 = nullptr; | 100 BytesConsumer* dest1 = nullptr; |
| 101 BytesConsumer* dest2 = nullptr; | 101 BytesConsumer* dest2 = nullptr; |
| 102 BytesConsumer::tee(document(), src, &dest1, &dest2); | 102 BytesConsumer::tee(document(), src, &dest1, &dest2); |
| 103 | 103 |
| 104 auto result1 = (new BytesConsumerTestUtil::Reader(dest1))->run(); | 104 auto result1 = (new BytesConsumerTestUtil::TwoPhaseReader(dest1))->run(); |
| 105 auto result2 = (new BytesConsumerTestUtil::Reader(dest2))->run(); | 105 auto result2 = (new BytesConsumerTestUtil::TwoPhaseReader(dest2))->run(); |
| 106 | 106 |
| 107 EXPECT_EQ(Result::Done, result1.first); | 107 EXPECT_EQ(Result::Done, result1.first); |
| 108 EXPECT_TRUE(result1.second.isEmpty()); | 108 EXPECT_TRUE(result1.second.isEmpty()); |
| 109 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); | 109 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); |
| 110 EXPECT_EQ(Result::Done, result2.first); | 110 EXPECT_EQ(Result::Done, result2.first); |
| 111 EXPECT_TRUE(result2.second.isEmpty()); | 111 EXPECT_TRUE(result2.second.isEmpty()); |
| 112 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest2->getPublicState()); | 112 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest2->getPublicState()); |
| 113 EXPECT_FALSE(src->isCancelled()); | 113 EXPECT_FALSE(src->isCancelled()); |
| 114 | 114 |
| 115 // Cancelling does nothing when closed. | 115 // Cancelling does nothing when closed. |
| 116 dest1->cancel(); | 116 dest1->cancel(); |
| 117 dest2->cancel(); | 117 dest2->cancel(); |
| 118 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); | 118 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); |
| 119 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest2->getPublicState()); | 119 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest2->getPublicState()); |
| 120 EXPECT_FALSE(src->isCancelled()); | 120 EXPECT_FALSE(src->isCancelled()); |
| 121 } | 121 } |
| 122 | 122 |
| 123 TEST_F(BytesConsumerTeeTest, Read) | |
| 124 { | |
| 125 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); | |
| 126 | |
| 127 src->add(Command(Command::Wait)); | |
| 128 src->add(Command(Command::Data, "hello, ")); | |
| 129 src->add(Command(Command::Wait)); | |
| 130 src->add(Command(Command::Data, "world")); | |
| 131 src->add(Command(Command::Wait)); | |
| 132 src->add(Command(Command::Wait)); | |
| 133 src->add(Command(Command::Done)); | |
| 134 | |
| 135 BytesConsumer* dest1 = nullptr; | |
| 136 BytesConsumer* dest2 = nullptr; | |
| 137 BytesConsumer::tee(document(), src, &dest1, &dest2); | |
| 138 | |
| 139 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, dest1->getPublicSta
te()); | |
| 140 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, dest2->getPublicSta
te()); | |
| 141 | |
| 142 auto result1 = (new BytesConsumerTestUtil::Reader(dest1))->run(); | |
| 143 auto result2 = (new BytesConsumerTestUtil::Reader(dest2))->run(); | |
| 144 | |
| 145 EXPECT_EQ(Result::Done, result1.first); | |
| 146 EXPECT_EQ("hello, world", toString(result1.second)); | |
| 147 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); | |
| 148 EXPECT_EQ(Result::Done, result2.first); | |
| 149 EXPECT_EQ("hello, world", toString(result2.second)); | |
| 150 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest2->getPublicState()); | |
| 151 EXPECT_FALSE(src->isCancelled()); | |
| 152 } | |
| 153 | |
| 154 TEST_F(BytesConsumerTeeTest, TwoPhaseRead) | 123 TEST_F(BytesConsumerTeeTest, TwoPhaseRead) |
| 155 { | 124 { |
| 156 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); | 125 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); |
| 157 | 126 |
| 158 src->add(Command(Command::Wait)); | 127 src->add(Command(Command::Wait)); |
| 159 src->add(Command(Command::Data, "hello, ")); | 128 src->add(Command(Command::Data, "hello, ")); |
| 160 src->add(Command(Command::Wait)); | 129 src->add(Command(Command::Wait)); |
| 161 src->add(Command(Command::Data, "world")); | 130 src->add(Command(Command::Data, "world")); |
| 162 src->add(Command(Command::Wait)); | 131 src->add(Command(Command::Wait)); |
| 163 src->add(Command(Command::Wait)); | 132 src->add(Command(Command::Wait)); |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 TestClient* client = new TestClient(); | 317 TestClient* client = new TestClient(); |
| 349 dest1->setClient(client); | 318 dest1->setClient(client); |
| 350 | 319 |
| 351 const char* buffer = nullptr; | 320 const char* buffer = nullptr; |
| 352 size_t available = 0; | 321 size_t available = 0; |
| 353 ASSERT_EQ(Result::Ok, dest1->beginRead(&buffer, &available)); | 322 ASSERT_EQ(Result::Ok, dest1->beginRead(&buffer, &available)); |
| 354 ASSERT_EQ(1u, available); | 323 ASSERT_EQ(1u, available); |
| 355 | 324 |
| 356 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, dest1->getPublicSta
te()); | 325 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, dest1->getPublicSta
te()); |
| 357 int numOnStateChangeCalled = client->numOnStateChangeCalled(); | 326 int numOnStateChangeCalled = client->numOnStateChangeCalled(); |
| 358 EXPECT_EQ(Result::Error, (new BytesConsumerTestUtil::Reader(dest2))->run().f
irst); | 327 EXPECT_EQ(Result::Error, (new BytesConsumerTestUtil::TwoPhaseReader(dest2))-
>run().first); |
| 359 EXPECT_EQ(BytesConsumer::PublicState::Errored, dest1->getPublicState()); | 328 EXPECT_EQ(BytesConsumer::PublicState::Errored, dest1->getPublicState()); |
| 360 EXPECT_EQ(numOnStateChangeCalled + 1, client->numOnStateChangeCalled()); | 329 EXPECT_EQ(numOnStateChangeCalled + 1, client->numOnStateChangeCalled()); |
| 361 EXPECT_EQ('a', buffer[0]); | 330 EXPECT_EQ('a', buffer[0]); |
| 362 EXPECT_EQ(Result::Ok, dest1->endRead(available)); | 331 EXPECT_EQ(Result::Ok, dest1->endRead(available)); |
| 363 } | 332 } |
| 364 | 333 |
| 365 TEST_F(BytesConsumerTeeTest, AsyncNotificationShouldBeDispatchedWhenAllDataIsCon
sumed) | 334 TEST_F(BytesConsumerTeeTest, AsyncNotificationShouldBeDispatchedWhenAllDataIsCon
sumed) |
| 366 { | 335 { |
| 367 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); | 336 ReplayingBytesConsumer* src = new ReplayingBytesConsumer(document()); |
| 368 src->add(Command(Command::Data, "a")); | 337 src->add(Command(Command::Data, "a")); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 EXPECT_EQ(0, client->numOnStateChangeCalled()); | 394 EXPECT_EQ(0, client->numOnStateChangeCalled()); |
| 426 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); | 395 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); |
| 427 testing::runPendingTasks(); | 396 testing::runPendingTasks(); |
| 428 EXPECT_EQ(0, client->numOnStateChangeCalled()); | 397 EXPECT_EQ(0, client->numOnStateChangeCalled()); |
| 429 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); | 398 EXPECT_EQ(BytesConsumer::PublicState::Closed, dest1->getPublicState()); |
| 430 } | 399 } |
| 431 | 400 |
| 432 } // namespace | 401 } // namespace |
| 433 | 402 |
| 434 } // namespace blink | 403 } // namespace blink |
| OLD | NEW |