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 |