Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/BytesConsumerForDataConsumerHandleTest.cpp

Issue 2269953004: Implment BytesConsumer::tee (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/BytesConsumerForDataConsumerHandle.h" 5 #include "modules/fetch/BytesConsumerForDataConsumerHandle.h"
6 6
7 #include "core/testing/DummyPageHolder.h"
7 #include "modules/fetch/BytesConsumer.h" 8 #include "modules/fetch/BytesConsumer.h"
8 #include "modules/fetch/DataConsumerHandleTestUtil.h" 9 #include "modules/fetch/DataConsumerHandleTestUtil.h"
9 #include "modules/fetch/DataConsumerHandleUtil.h" 10 #include "modules/fetch/DataConsumerHandleUtil.h"
10 #include "platform/testing/UnitTestHelpers.h" 11 #include "platform/testing/UnitTestHelpers.h"
11 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 namespace blink { 15 namespace blink {
15 16
16 namespace { 17 namespace {
17 18
18 using Command = DataConsumerHandleTestUtil::Command; 19 using Command = DataConsumerHandleTestUtil::Command;
19 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>; 20 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>;
20 using ReplayingHandle = DataConsumerHandleTestUtil::ReplayingHandle; 21 using ReplayingHandle = DataConsumerHandleTestUtil::ReplayingHandle;
21 using Result = BytesConsumer::Result; 22 using Result = BytesConsumer::Result;
22 using ::testing::InSequence; 23 using ::testing::InSequence;
23 using ::testing::Return; 24 using ::testing::Return;
24 25
25 class BytesConsumerForDataConsumerHandleTest : public ::testing::Test { 26 class BytesConsumerForDataConsumerHandleTest : public ::testing::Test {
27 public:
28 Document* document() { return &m_page->document(); }
29
26 protected: 30 protected:
31 BytesConsumerForDataConsumerHandleTest()
32 : m_page(DummyPageHolder::create())
33 {
34 }
27 ~BytesConsumerForDataConsumerHandleTest() 35 ~BytesConsumerForDataConsumerHandleTest()
28 { 36 {
29 ThreadHeap::collectAllGarbage(); 37 ThreadHeap::collectAllGarbage();
30 } 38 }
39 std::unique_ptr<DummyPageHolder> m_page;
31 }; 40 };
32 41
33 class MockClient : public GarbageCollectedFinalized<MockClient>, public BytesCon sumer::Client { 42 class MockClient : public GarbageCollectedFinalized<MockClient>, public BytesCon sumer::Client {
34 USING_GARBAGE_COLLECTED_MIXIN(MockClient); 43 USING_GARBAGE_COLLECTED_MIXIN(MockClient);
35 public: 44 public:
36 static MockClient* create() { return new ::testing::StrictMock<MockClient>() ; } 45 static MockClient* create() { return new ::testing::StrictMock<MockClient>() ; }
37 MOCK_METHOD0(onStateChange, void()); 46 MOCK_METHOD0(onStateChange, void());
38 47
39 protected: 48 protected:
40 MockClient() {} 49 MockClient() {}
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 92 }
84 93
85 private: 94 private:
86 Persistent<MockReaderProxy> m_proxy; 95 Persistent<MockReaderProxy> m_proxy;
87 }; 96 };
88 97
89 std::unique_ptr<FetchDataConsumerHandle::Reader> obtainFetchDataReader(Clien t*) override { return wrapUnique(new Reader(m_proxy)); } 98 std::unique_ptr<FetchDataConsumerHandle::Reader> obtainFetchDataReader(Clien t*) override { return wrapUnique(new Reader(m_proxy)); }
90 Persistent<MockReaderProxy> m_proxy; 99 Persistent<MockReaderProxy> m_proxy;
91 }; 100 };
92 101
93 } // namespace
94
95 TEST_F(BytesConsumerForDataConsumerHandleTest, Create) 102 TEST_F(BytesConsumerForDataConsumerHandleTest, Create)
96 { 103 {
97 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 104 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
98 handle->add(Command(Command::Data, "hello")); 105 handle->add(Command(Command::Data, "hello"));
99 handle->add(Command(Command::Done)); 106 handle->add(Command(Command::Done));
100 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 107 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
101 } 108 }
102 109
103 TEST_F(BytesConsumerForDataConsumerHandleTest, BecomeReadable) 110 TEST_F(BytesConsumerForDataConsumerHandleTest, BecomeReadable)
104 { 111 {
105 Checkpoint checkpoint; 112 Checkpoint checkpoint;
106 Persistent<MockClient> client = MockClient::create(); 113 Persistent<MockClient> client = MockClient::create();
107 114
108 InSequence s; 115 InSequence s;
109 EXPECT_CALL(checkpoint, Call(1)); 116 EXPECT_CALL(checkpoint, Call(1));
110 EXPECT_CALL(*client, onStateChange()); 117 EXPECT_CALL(*client, onStateChange());
111 EXPECT_CALL(checkpoint, Call(2)); 118 EXPECT_CALL(checkpoint, Call(2));
112 119
113 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 120 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
114 handle->add(Command(Command::Data, "hello")); 121 handle->add(Command(Command::Data, "hello"));
115 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 122 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
116 consumer->setClient(client); 123 consumer->setClient(client);
117 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State()); 124 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State());
118 125
119 checkpoint.Call(1); 126 checkpoint.Call(1);
120 testing::runPendingTasks(); 127 testing::runPendingTasks();
121 checkpoint.Call(2); 128 checkpoint.Call(2);
122 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State()); 129 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State());
123 } 130 }
124 131
125 TEST_F(BytesConsumerForDataConsumerHandleTest, BecomeClosed) 132 TEST_F(BytesConsumerForDataConsumerHandleTest, BecomeClosed)
126 { 133 {
127 Checkpoint checkpoint; 134 Checkpoint checkpoint;
128 Persistent<MockClient> client = MockClient::create(); 135 Persistent<MockClient> client = MockClient::create();
129 136
130 InSequence s; 137 InSequence s;
131 EXPECT_CALL(checkpoint, Call(1)); 138 EXPECT_CALL(checkpoint, Call(1));
132 EXPECT_CALL(*client, onStateChange()); 139 EXPECT_CALL(*client, onStateChange());
133 EXPECT_CALL(checkpoint, Call(2)); 140 EXPECT_CALL(checkpoint, Call(2));
134 141
135 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 142 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
136 handle->add(Command(Command::Done)); 143 handle->add(Command(Command::Done));
137 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 144 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
138 consumer->setClient(client); 145 consumer->setClient(client);
139 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State()); 146 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State());
140 147
141 checkpoint.Call(1); 148 checkpoint.Call(1);
142 testing::runPendingTasks(); 149 testing::runPendingTasks();
143 checkpoint.Call(2); 150 checkpoint.Call(2);
144 EXPECT_EQ(BytesConsumer::PublicState::Closed, consumer->getPublicState()); 151 EXPECT_EQ(BytesConsumer::PublicState::Closed, consumer->getPublicState());
145 } 152 }
146 153
147 TEST_F(BytesConsumerForDataConsumerHandleTest, BecomeErrored) 154 TEST_F(BytesConsumerForDataConsumerHandleTest, BecomeErrored)
148 { 155 {
149 Checkpoint checkpoint; 156 Checkpoint checkpoint;
150 Persistent<MockClient> client = MockClient::create(); 157 Persistent<MockClient> client = MockClient::create();
151 158
152 InSequence s; 159 InSequence s;
153 EXPECT_CALL(checkpoint, Call(1)); 160 EXPECT_CALL(checkpoint, Call(1));
154 EXPECT_CALL(*client, onStateChange()); 161 EXPECT_CALL(*client, onStateChange());
155 EXPECT_CALL(checkpoint, Call(2)); 162 EXPECT_CALL(checkpoint, Call(2));
156 163
157 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 164 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
158 handle->add(Command(Command::Error)); 165 handle->add(Command(Command::Error));
159 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 166 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
160 consumer->setClient(client); 167 consumer->setClient(client);
161 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State()); 168 EXPECT_EQ(BytesConsumer::PublicState::ReadableOrWaiting, consumer->getPublic State());
162 169
163 checkpoint.Call(1); 170 checkpoint.Call(1);
164 testing::runPendingTasks(); 171 testing::runPendingTasks();
165 checkpoint.Call(2); 172 checkpoint.Call(2);
166 EXPECT_EQ(BytesConsumer::PublicState::Errored, consumer->getPublicState()); 173 EXPECT_EQ(BytesConsumer::PublicState::Errored, consumer->getPublicState());
167 } 174 }
168 175
169 TEST_F(BytesConsumerForDataConsumerHandleTest, ClearClient) 176 TEST_F(BytesConsumerForDataConsumerHandleTest, ClearClient)
170 { 177 {
171 Checkpoint checkpoint; 178 Checkpoint checkpoint;
172 Persistent<MockClient> client = MockClient::create(); 179 Persistent<MockClient> client = MockClient::create();
173 180
174 InSequence s; 181 InSequence s;
175 EXPECT_CALL(checkpoint, Call(1)); 182 EXPECT_CALL(checkpoint, Call(1));
176 EXPECT_CALL(checkpoint, Call(2)); 183 EXPECT_CALL(checkpoint, Call(2));
177 184
178 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 185 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
179 handle->add(Command(Command::Error)); 186 handle->add(Command(Command::Error));
180 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 187 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
181 consumer->setClient(client); 188 consumer->setClient(client);
182 consumer->clearClient(); 189 consumer->clearClient();
183 190
184 checkpoint.Call(1); 191 checkpoint.Call(1);
185 testing::runPendingTasks(); 192 testing::runPendingTasks();
186 checkpoint.Call(2); 193 checkpoint.Call(2);
187 } 194 }
188 195
189 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenReadable) 196 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenReadable)
190 { 197 {
191 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 198 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
192 handle->add(Command(Command::Data, "hello")); 199 handle->add(Command(Command::Data, "hello"));
193 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 200 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
194 consumer->setClient(MockClient::create()); 201 consumer->setClient(MockClient::create());
195 202
196 char buffer[16]; 203 char buffer[16];
197 size_t read; 204 size_t read;
198 Result r = consumer->read(buffer, sizeof(buffer), &read); 205 Result r = consumer->read(buffer, sizeof(buffer), &read);
199 ASSERT_EQ(Result::Ok, r); 206 ASSERT_EQ(Result::Ok, r);
200 EXPECT_EQ("hello", String(buffer, read)); 207 EXPECT_EQ("hello", String(buffer, read));
201 } 208 }
202 209
203 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenWaiting) 210 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenWaiting)
204 { 211 {
205 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 212 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
206 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 213 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
207 consumer->setClient(MockClient::create()); 214 consumer->setClient(MockClient::create());
208 215
209 char buffer[16]; 216 char buffer[16];
210 size_t read = 42; 217 size_t read = 42;
211 Result r = consumer->read(buffer, sizeof(buffer), &read); 218 Result r = consumer->read(buffer, sizeof(buffer), &read);
212 ASSERT_EQ(Result::ShouldWait, r); 219 ASSERT_EQ(Result::ShouldWait, r);
213 EXPECT_EQ(0u, read); 220 EXPECT_EQ(0u, read);
214 } 221 }
215 222
216 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenClosed) 223 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenClosed)
217 { 224 {
218 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 225 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
219 handle->add(Command(Command::Done)); 226 handle->add(Command(Command::Done));
220 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 227 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
221 consumer->setClient(MockClient::create()); 228 consumer->setClient(MockClient::create());
222 229
223 char buffer[16]; 230 char buffer[16];
224 size_t read = 42; 231 size_t read = 42;
225 Result r = consumer->read(buffer, sizeof(buffer), &read); 232 Result r = consumer->read(buffer, sizeof(buffer), &read);
226 ASSERT_EQ(Result::Done, r); 233 ASSERT_EQ(Result::Done, r);
227 EXPECT_EQ(0u, read); 234 EXPECT_EQ(0u, read);
228 } 235 }
229 236
230 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenErrored) 237 TEST_F(BytesConsumerForDataConsumerHandleTest, ReadWhenErrored)
231 { 238 {
232 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 239 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
233 handle->add(Command(Command::Error)); 240 handle->add(Command(Command::Error));
234 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 241 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
235 consumer->setClient(MockClient::create()); 242 consumer->setClient(MockClient::create());
236 243
237 char buffer[16]; 244 char buffer[16];
238 size_t read; 245 size_t read;
239 Result r = consumer->read(buffer, sizeof(buffer), &read); 246 Result r = consumer->read(buffer, sizeof(buffer), &read);
240 ASSERT_EQ(Result::Error, r); 247 ASSERT_EQ(Result::Error, r);
241 EXPECT_EQ(BytesConsumer::Error("error"), consumer->getError()); 248 EXPECT_EQ(BytesConsumer::Error("error"), consumer->getError());
242 } 249 }
243 250
244 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenReadable) 251 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenReadable)
245 { 252 {
246 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 253 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
247 handle->add(Command(Command::Data, "hello")); 254 handle->add(Command(Command::Data, "hello"));
248 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 255 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
249 consumer->setClient(MockClient::create()); 256 consumer->setClient(MockClient::create());
250 257
251 const char* buffer = nullptr; 258 const char* buffer = nullptr;
252 size_t available = 0; 259 size_t available = 0;
253 ASSERT_EQ(Result::Ok, consumer->beginRead(&buffer, &available)); 260 ASSERT_EQ(Result::Ok, consumer->beginRead(&buffer, &available));
254 EXPECT_EQ("hello", String(buffer, available)); 261 EXPECT_EQ("hello", String(buffer, available));
255 262
256 ASSERT_EQ(Result::Ok, consumer->endRead(1)); 263 ASSERT_EQ(Result::Ok, consumer->endRead(1));
257 ASSERT_EQ(Result::Ok, consumer->beginRead(&buffer, &available)); 264 ASSERT_EQ(Result::Ok, consumer->beginRead(&buffer, &available));
258 EXPECT_EQ("ello", String(buffer, available)); 265 EXPECT_EQ("ello", String(buffer, available));
259 266
260 ASSERT_EQ(Result::Ok, consumer->endRead(4)); 267 ASSERT_EQ(Result::Ok, consumer->endRead(4));
261 ASSERT_EQ(Result::ShouldWait, consumer->beginRead(&buffer, &available)); 268 ASSERT_EQ(Result::ShouldWait, consumer->beginRead(&buffer, &available));
262 } 269 }
263 270
264 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenWaiting) 271 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenWaiting)
265 { 272 {
266 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 273 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
267 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 274 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
268 consumer->setClient(MockClient::create()); 275 consumer->setClient(MockClient::create());
269 const char* buffer = nullptr; 276 const char* buffer = nullptr;
270 size_t available = 0; 277 size_t available = 0;
271 ASSERT_EQ(Result::ShouldWait, consumer->beginRead(&buffer, &available)); 278 ASSERT_EQ(Result::ShouldWait, consumer->beginRead(&buffer, &available));
272 } 279 }
273 280
274 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenClosed) 281 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenClosed)
275 { 282 {
276 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 283 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
277 handle->add(Command(Command::Done)); 284 handle->add(Command(Command::Done));
278 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 285 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
279 consumer->setClient(MockClient::create()); 286 consumer->setClient(MockClient::create());
280 const char* buffer = nullptr; 287 const char* buffer = nullptr;
281 size_t available = 0; 288 size_t available = 0;
282 ASSERT_EQ(Result::Done, consumer->beginRead(&buffer, &available)); 289 ASSERT_EQ(Result::Done, consumer->beginRead(&buffer, &available));
283 } 290 }
284 291
285 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenErrored) 292 TEST_F(BytesConsumerForDataConsumerHandleTest, TwoPhaseReadWhenErrored)
286 { 293 {
287 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 294 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
288 handle->add(Command(Command::Error)); 295 handle->add(Command(Command::Error));
289 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 296 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
290 consumer->setClient(MockClient::create()); 297 consumer->setClient(MockClient::create());
291 const char* buffer = nullptr; 298 const char* buffer = nullptr;
292 size_t available = 0; 299 size_t available = 0;
293 ASSERT_EQ(Result::Error, consumer->beginRead(&buffer, &available)); 300 ASSERT_EQ(Result::Error, consumer->beginRead(&buffer, &available));
294 EXPECT_EQ(BytesConsumer::Error("error"), consumer->getError()); 301 EXPECT_EQ(BytesConsumer::Error("error"), consumer->getError());
295 } 302 }
296 303
297 TEST_F(BytesConsumerForDataConsumerHandleTest, Cancel) 304 TEST_F(BytesConsumerForDataConsumerHandleTest, Cancel)
298 { 305 {
299 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 306 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
300 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( createFetchDataConsumerHandleFromWebHandle(std::move(handle))); 307 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), createFetchDataConsumerHandleFromWebHandle(std::move(handle)));
301 consumer->setClient(MockClient::create()); 308 consumer->setClient(MockClient::create());
302 consumer->cancel(); 309 consumer->cancel();
303 const char* buffer = nullptr; 310 const char* buffer = nullptr;
304 size_t available = 0; 311 size_t available = 0;
305 ASSERT_EQ(Result::Done, consumer->beginRead(&buffer, &available)); 312 ASSERT_EQ(Result::Done, consumer->beginRead(&buffer, &available));
306 } 313 }
307 314
308 TEST_F(BytesConsumerForDataConsumerHandleTest, drainAsBlobDataHandle) 315 TEST_F(BytesConsumerForDataConsumerHandleTest, drainAsBlobDataHandle)
309 { 316 {
310 // FetchDataConsumerHandle::Reader::drainAsBlobDataHandle should return 317 // FetchDataConsumerHandle::Reader::drainAsBlobDataHandle should return
311 // nullptr from the second time, but we don't care that here. 318 // nullptr from the second time, but we don't care that here.
312 std::unique_ptr<MockDataConsumerHandle> handle = wrapUnique(new MockDataCons umerHandle); 319 std::unique_ptr<MockDataConsumerHandle> handle = wrapUnique(new MockDataCons umerHandle);
313 Persistent<MockDataConsumerHandle::MockReaderProxy> proxy = handle->proxy(); 320 Persistent<MockDataConsumerHandle::MockReaderProxy> proxy = handle->proxy();
314 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( std::move(handle)); 321 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), std::move(handle));
315 consumer->setClient(MockClient::create()); 322 consumer->setClient(MockClient::create());
316 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(); 323 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create();
317 324
318 Checkpoint checkpoint; 325 Checkpoint checkpoint;
319 InSequence s; 326 InSequence s;
320 EXPECT_CALL(*proxy, drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::D isallowBlobWithInvalidSize)).WillOnce(Return(nullptr)); 327 EXPECT_CALL(*proxy, drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::D isallowBlobWithInvalidSize)).WillOnce(Return(nullptr));
321 EXPECT_CALL(*proxy, drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::A llowBlobWithInvalidSize)).WillOnce(Return(nullptr)); 328 EXPECT_CALL(*proxy, drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::A llowBlobWithInvalidSize)).WillOnce(Return(nullptr));
322 EXPECT_CALL(*proxy, drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::A llowBlobWithInvalidSize)).WillOnce(Return(blobDataHandle)); 329 EXPECT_CALL(*proxy, drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::A llowBlobWithInvalidSize)).WillOnce(Return(blobDataHandle));
323 330
324 EXPECT_FALSE(consumer->drainAsBlobDataHandle(BytesConsumer::BlobSizePolicy:: DisallowBlobWithInvalidSize)); 331 EXPECT_FALSE(consumer->drainAsBlobDataHandle(BytesConsumer::BlobSizePolicy:: DisallowBlobWithInvalidSize));
325 EXPECT_FALSE(consumer->drainAsBlobDataHandle(BytesConsumer::BlobSizePolicy:: AllowBlobWithInvalidSize)); 332 EXPECT_FALSE(consumer->drainAsBlobDataHandle(BytesConsumer::BlobSizePolicy:: AllowBlobWithInvalidSize));
326 EXPECT_TRUE(blobDataHandle); 333 EXPECT_TRUE(blobDataHandle);
327 EXPECT_EQ(blobDataHandle, consumer->drainAsBlobDataHandle(BytesConsumer::Blo bSizePolicy::AllowBlobWithInvalidSize)); 334 EXPECT_EQ(blobDataHandle, consumer->drainAsBlobDataHandle(BytesConsumer::Blo bSizePolicy::AllowBlobWithInvalidSize));
328 EXPECT_EQ(BytesConsumer::PublicState::Closed, consumer->getPublicState()); 335 EXPECT_EQ(BytesConsumer::PublicState::Closed, consumer->getPublicState());
329 } 336 }
330 337
331 TEST_F(BytesConsumerForDataConsumerHandleTest, drainAsFormData) 338 TEST_F(BytesConsumerForDataConsumerHandleTest, drainAsFormData)
332 { 339 {
333 std::unique_ptr<MockDataConsumerHandle> handle = wrapUnique(new MockDataCons umerHandle); 340 std::unique_ptr<MockDataConsumerHandle> handle = wrapUnique(new MockDataCons umerHandle);
334 Persistent<MockDataConsumerHandle::MockReaderProxy> proxy = handle->proxy(); 341 Persistent<MockDataConsumerHandle::MockReaderProxy> proxy = handle->proxy();
335 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( std::move(handle)); 342 Persistent<BytesConsumer> consumer = new BytesConsumerForDataConsumerHandle( document(), std::move(handle));
336 consumer->setClient(MockClient::create()); 343 consumer->setClient(MockClient::create());
337 RefPtr<EncodedFormData> formData = EncodedFormData::create(); 344 RefPtr<EncodedFormData> formData = EncodedFormData::create();
338 345
339 Checkpoint checkpoint; 346 Checkpoint checkpoint;
340 InSequence s; 347 InSequence s;
341 EXPECT_CALL(*proxy, drainAsFormData()).WillOnce(Return(formData)); 348 EXPECT_CALL(*proxy, drainAsFormData()).WillOnce(Return(formData));
342 349
343 EXPECT_EQ(formData, consumer->drainAsFormData()); 350 EXPECT_EQ(formData, consumer->drainAsFormData());
344 EXPECT_EQ(BytesConsumer::PublicState::Closed, consumer->getPublicState()); 351 EXPECT_EQ(BytesConsumer::PublicState::Closed, consumer->getPublicState());
345 } 352 }
346 353
354 } // namespace
355
347 } // namespace blink 356 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698