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 "config.h" | 5 #include "config.h" |
6 #include "modules/fetch/FetchFormDataConsumerHandle.h" | 6 #include "modules/fetch/FetchFormDataConsumerHandle.h" |
7 | 7 |
8 #include "core/dom/DOMTypedArray.h" | 8 #include "core/dom/DOMTypedArray.h" |
9 #include "core/html/DOMFormData.h" | 9 #include "core/html/DOMFormData.h" |
10 #include "core/html/FormDataList.h" | 10 #include "core/html/FormDataList.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 class FetchFormDataConsumerHandleTest : public ::testing::Test { | 69 class FetchFormDataConsumerHandleTest : public ::testing::Test { |
70 public: | 70 public: |
71 FetchFormDataConsumerHandleTest() : m_page(DummyPageHolder::create(IntSize(1
, 1))) {} | 71 FetchFormDataConsumerHandleTest() : m_page(DummyPageHolder::create(IntSize(1
, 1))) {} |
72 | 72 |
73 protected: | 73 protected: |
74 Document* document() { return &m_page->document(); } | 74 Document* document() { return &m_page->document(); } |
75 | 75 |
76 OwnPtr<DummyPageHolder> m_page; | 76 OwnPtr<DummyPageHolder> m_page; |
77 }; | 77 }; |
78 | 78 |
79 PassRefPtr<FormData> complexFormData() | 79 PassRefPtr<EncodedFormData> complexFormData() |
80 { | 80 { |
81 RefPtr<FormData> data = FormData::create(); | 81 RefPtr<EncodedFormData> data = EncodedFormData::create(); |
82 | 82 |
83 data->appendData("foo", 3); | 83 data->appendData("foo", 3); |
84 data->appendFileRange("/foo/bar/baz", 3, 4, 5); | 84 data->appendFileRange("/foo/bar/baz", 3, 4, 5); |
85 data->appendFileSystemURLRange(KURL(KURL(), "file:///foo/bar/baz"), 6, 7, 8)
; | 85 data->appendFileSystemURLRange(KURL(KURL(), "file:///foo/bar/baz"), 6, 7, 8)
; |
86 OwnPtr<BlobData> blobData = BlobData::create(); | 86 OwnPtr<BlobData> blobData = BlobData::create(); |
87 blobData->appendText("hello", false); | 87 blobData->appendText("hello", false); |
88 auto size = blobData->length(); | 88 auto size = blobData->length(); |
89 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(blobData.rele
ase(), size); | 89 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(blobData.rele
ase(), size); |
90 data->appendBlob(blobDataHandle->uuid(), blobDataHandle); | 90 data->appendBlob(blobDataHandle->uuid(), blobDataHandle); |
91 Vector<char> boundary; | 91 Vector<char> boundary; |
92 boundary.append("\0", 1); | 92 boundary.append("\0", 1); |
93 data->setBoundary(boundary); | 93 data->setBoundary(boundary); |
94 return data.release(); | 94 return data.release(); |
95 } | 95 } |
96 | 96 |
97 void verifyComplexFormData(FormData* data) | 97 void verifyComplexFormData(EncodedFormData* data) |
98 { | 98 { |
99 const auto& elements = data->elements(); | 99 const auto& elements = data->elements(); |
100 if (4 != elements.size()) { | 100 if (4 != elements.size()) { |
101 FAIL() << "data->elements().size() should be 4, but is " << data->elemen
ts().size() << "."; | 101 FAIL() << "data->elements().size() should be 4, but is " << data->elemen
ts().size() << "."; |
102 } | 102 } |
103 EXPECT_EQ(FormDataElement::data, elements[0].m_type); | 103 EXPECT_EQ(FormDataElement::data, elements[0].m_type); |
104 EXPECT_EQ("foo", String(elements[0].m_data.data(), elements[0].m_data.size()
)); | 104 EXPECT_EQ("foo", String(elements[0].m_data.data(), elements[0].m_data.size()
)); |
105 | 105 |
106 EXPECT_EQ(FormDataElement::encodedFile, elements[1].m_type); | 106 EXPECT_EQ(FormDataElement::encodedFile, elements[1].m_type); |
107 EXPECT_EQ("/foo/bar/baz", elements[1].m_filename); | 107 EXPECT_EQ("/foo/bar/baz", elements[1].m_filename); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 HandleReaderRunner<HandleReader> runner(handle.release()); | 173 HandleReaderRunner<HandleReader> runner(handle.release()); |
174 OwnPtr<HandleReadResult> r = runner.wait(); | 174 OwnPtr<HandleReadResult> r = runner.wait(); |
175 EXPECT_EQ(kDone, r->result()); | 175 EXPECT_EQ(kDone, r->result()); |
176 Vector<char> expected; | 176 Vector<char> expected; |
177 expected.append(data + offset, size); | 177 expected.append(data + offset, size); |
178 EXPECT_EQ(expected, r->data()); | 178 EXPECT_EQ(expected, r->data()); |
179 } | 179 } |
180 | 180 |
181 TEST_F(FetchFormDataConsumerHandleTest, ReadFromSimplFormData) | 181 TEST_F(FetchFormDataConsumerHandleTest, ReadFromSimplFormData) |
182 { | 182 { |
183 RefPtr<FormData> data = FormData::create(); | 183 RefPtr<EncodedFormData> data = EncodedFormData::create(); |
184 data->appendData("foo", 3); | 184 data->appendData("foo", 3); |
185 data->appendData("hoge", 4); | 185 data->appendData("hoge", 4); |
186 | 186 |
187 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(document(), data); | 187 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(document(), data); |
188 HandleReaderRunner<HandleReader> runner(handle.release()); | 188 HandleReaderRunner<HandleReader> runner(handle.release()); |
189 testing::runPendingTasks(); | 189 testing::runPendingTasks(); |
190 OwnPtr<HandleReadResult> r = runner.wait(); | 190 OwnPtr<HandleReadResult> r = runner.wait(); |
191 EXPECT_EQ(kDone, r->result()); | 191 EXPECT_EQ(kDone, r->result()); |
192 EXPECT_EQ("foohoge", toString(r->data())); | 192 EXPECT_EQ("foohoge", toString(r->data())); |
193 } | 193 } |
194 | 194 |
195 TEST_F(FetchFormDataConsumerHandleTest, ReadFromComplexFormData) | 195 TEST_F(FetchFormDataConsumerHandleTest, ReadFromComplexFormData) |
196 { | 196 { |
197 RefPtr<FormData> data = complexFormData(); | 197 RefPtr<EncodedFormData> data = complexFormData(); |
198 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); | 198 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); |
199 src->add(Command(Command::Data, "bar")); | 199 src->add(Command(Command::Data, "bar")); |
200 src->add(Command(Command::Done)); | 200 src->add(Command(Command::Done)); |
201 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
ForTest(document(), data, new LoaderFactory(src.release())); | 201 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
ForTest(document(), data, new LoaderFactory(src.release())); |
202 char c; | 202 char c; |
203 size_t readSize; | 203 size_t readSize; |
204 EXPECT_EQ(kShouldWait, handle->obtainReader(nullptr)->read(&c, 1, kNone, &re
adSize)); | 204 EXPECT_EQ(kShouldWait, handle->obtainReader(nullptr)->read(&c, 1, kNone, &re
adSize)); |
205 | 205 |
206 HandleReaderRunner<HandleReader> runner(handle.release()); | 206 HandleReaderRunner<HandleReader> runner(handle.release()); |
207 testing::runPendingTasks(); | 207 testing::runPendingTasks(); |
208 OwnPtr<HandleReadResult> r = runner.wait(); | 208 OwnPtr<HandleReadResult> r = runner.wait(); |
209 EXPECT_EQ(kDone, r->result()); | 209 EXPECT_EQ(kDone, r->result()); |
210 EXPECT_EQ("bar", toString(r->data())); | 210 EXPECT_EQ("bar", toString(r->data())); |
211 } | 211 } |
212 | 212 |
213 TEST_F(FetchFormDataConsumerHandleTest, TwoPhaseReadFromComplexFormData) | 213 TEST_F(FetchFormDataConsumerHandleTest, TwoPhaseReadFromComplexFormData) |
214 { | 214 { |
215 RefPtr<FormData> data = complexFormData(); | 215 RefPtr<EncodedFormData> data = complexFormData(); |
216 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); | 216 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); |
217 src->add(Command(Command::Data, "bar")); | 217 src->add(Command(Command::Data, "bar")); |
218 src->add(Command(Command::Done)); | 218 src->add(Command(Command::Done)); |
219 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
ForTest(document(), data, new LoaderFactory(src.release())); | 219 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
ForTest(document(), data, new LoaderFactory(src.release())); |
220 char c; | 220 char c; |
221 size_t readSize; | 221 size_t readSize; |
222 EXPECT_EQ(kShouldWait, handle->obtainReader(nullptr)->read(&c, 1, kNone, &re
adSize)); | 222 EXPECT_EQ(kShouldWait, handle->obtainReader(nullptr)->read(&c, 1, kNone, &re
adSize)); |
223 | 223 |
224 HandleReaderRunner<HandleTwoPhaseReader> runner(handle.release()); | 224 HandleReaderRunner<HandleTwoPhaseReader> runner(handle.release()); |
225 testing::runPendingTasks(); | 225 testing::runPendingTasks(); |
226 OwnPtr<HandleReadResult> r = runner.wait(); | 226 OwnPtr<HandleReadResult> r = runner.wait(); |
227 EXPECT_EQ(kDone, r->result()); | 227 EXPECT_EQ(kDone, r->result()); |
228 EXPECT_EQ("bar", toString(r->data())); | 228 EXPECT_EQ("bar", toString(r->data())); |
229 } | 229 } |
230 | 230 |
231 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandle) | 231 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandle) |
232 { | 232 { |
233 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); | 233 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); |
234 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 234 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
235 EXPECT_FALSE(reader->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::
AllowBlobWithInvalidSize)); | 235 EXPECT_FALSE(reader->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::
AllowBlobWithInvalidSize)); |
236 } | 236 } |
237 | 237 |
238 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromString) | 238 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromString) |
239 { | 239 { |
240 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); | 240 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); |
241 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 241 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
242 RefPtr<FormData> formData = reader->drainAsFormData(); | 242 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
243 ASSERT_TRUE(formData); | 243 ASSERT_TRUE(formData); |
244 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 244 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
245 EXPECT_EQ("hello, world", formData->flattenToString()); | 245 EXPECT_EQ("hello, world", formData->flattenToString()); |
246 | 246 |
247 const void* buffer = nullptr; | 247 const void* buffer = nullptr; |
248 size_t size; | 248 size_t size; |
249 EXPECT_EQ(kDone, reader->read(nullptr, 0, kNone, &size)); | 249 EXPECT_EQ(kDone, reader->read(nullptr, 0, kNone, &size)); |
250 EXPECT_EQ(kDone, reader->beginRead(&buffer, kNone, &size)); | 250 EXPECT_EQ(kDone, reader->beginRead(&buffer, kNone, &size)); |
251 } | 251 } |
252 | 252 |
253 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromArrayBuffer) | 253 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromArrayBuffer) |
254 { | 254 { |
255 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(DOMArrayBuffer::create("foo", 3)); | 255 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(DOMArrayBuffer::create("foo", 3)); |
256 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 256 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
257 RefPtr<FormData> formData = reader->drainAsFormData(); | 257 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
258 ASSERT_TRUE(formData); | 258 ASSERT_TRUE(formData); |
259 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 259 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
260 EXPECT_EQ("foo", formData->flattenToString()); | 260 EXPECT_EQ("foo", formData->flattenToString()); |
261 } | 261 } |
262 | 262 |
263 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromSimpleFormData) | 263 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromSimpleFormData) |
264 { | 264 { |
265 DOMFormData* data = DOMFormData::create(UTF8Encoding()); | 265 DOMFormData* data = DOMFormData::create(UTF8Encoding()); |
266 data->append("name1", "value1"); | 266 data->append("name1", "value1"); |
267 data->append("name2", "value2"); | 267 data->append("name2", "value2"); |
268 RefPtr<FormData> inputFormData = data->createMultiPartFormData(); | 268 RefPtr<EncodedFormData> inputFormData = data->createMultiPartFormData(); |
269 | 269 |
270 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(document(), inputFormData); | 270 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(document(), inputFormData); |
271 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 271 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
272 RefPtr<FormData> outputFormData = reader->drainAsFormData(); | 272 RefPtr<EncodedFormData> outputFormData = reader->drainAsFormData(); |
273 ASSERT_TRUE(outputFormData); | 273 ASSERT_TRUE(outputFormData); |
274 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); | 274 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); |
275 EXPECT_NE(outputFormData.get(), inputFormData.get()); | 275 EXPECT_NE(outputFormData.get(), inputFormData.get()); |
276 EXPECT_EQ(inputFormData->flattenToString(), outputFormData->flattenToString(
)); | 276 EXPECT_EQ(inputFormData->flattenToString(), outputFormData->flattenToString(
)); |
277 } | 277 } |
278 | 278 |
279 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromComplexFormData) | 279 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromComplexFormData) |
280 { | 280 { |
281 RefPtr<FormData> inputFormData = complexFormData(); | 281 RefPtr<EncodedFormData> inputFormData = complexFormData(); |
282 | 282 |
283 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(document(), inputFormData); | 283 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(document(), inputFormData); |
284 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 284 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
285 RefPtr<FormData> outputFormData = reader->drainAsFormData(); | 285 RefPtr<EncodedFormData> outputFormData = reader->drainAsFormData(); |
286 ASSERT_TRUE(outputFormData); | 286 ASSERT_TRUE(outputFormData); |
287 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); | 287 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); |
288 EXPECT_NE(outputFormData.get(), inputFormData.get()); | 288 EXPECT_NE(outputFormData.get(), inputFormData.get()); |
289 verifyComplexFormData(outputFormData.get()); | 289 verifyComplexFormData(outputFormData.get()); |
290 } | 290 } |
291 | 291 |
292 TEST_F(FetchFormDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining) | 292 TEST_F(FetchFormDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining) |
293 { | 293 { |
294 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); | 294 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); |
295 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 295 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
296 size_t readSize; | 296 size_t readSize; |
297 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); | 297 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); |
298 RefPtr<FormData> formData = reader->drainAsFormData(); | 298 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
299 ASSERT_TRUE(formData); | 299 ASSERT_TRUE(formData); |
300 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 300 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
301 EXPECT_EQ("hello, world", formData->flattenToString()); | 301 EXPECT_EQ("hello, world", formData->flattenToString()); |
302 } | 302 } |
303 | 303 |
304 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDraining) | 304 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDraining) |
305 { | 305 { |
306 char c; | 306 char c; |
307 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); | 307 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
(String("hello, world")); |
308 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 308 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
(...skipping 22 matching lines...) Expand all Loading... |
331 { | 331 { |
332 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); | 332 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); |
333 src->add(Command(Command::Data, "bar")); | 333 src->add(Command(Command::Data, "bar")); |
334 src->add(Command(Command::Done)); | 334 src->add(Command(Command::Done)); |
335 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
ForTest(document(), complexFormData(), new LoaderFactory(src.release())); | 335 OwnPtr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandle::create
ForTest(document(), complexFormData(), new LoaderFactory(src.release())); |
336 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); | 336 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt
r); |
337 size_t readSize; | 337 size_t readSize; |
338 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize)); | 338 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize)); |
339 testing::runPendingTasks(); | 339 testing::runPendingTasks(); |
340 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); | 340 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); |
341 RefPtr<FormData> formData = reader->drainAsFormData(); | 341 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
342 ASSERT_TRUE(formData); | 342 ASSERT_TRUE(formData); |
343 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 343 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
344 verifyComplexFormData(formData.get()); | 344 verifyComplexFormData(formData.get()); |
345 } | 345 } |
346 | 346 |
347 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDrainingForComplexForm
Data) | 347 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDrainingForComplexForm
Data) |
348 { | 348 { |
349 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); | 349 OwnPtr<ReplayingHandle> src = ReplayingHandle::create(); |
350 src->add(Command(Command::Data, "bar")); | 350 src->add(Command(Command::Data, "bar")); |
351 src->add(Command(Command::Done)); | 351 src->add(Command(Command::Done)); |
(...skipping 21 matching lines...) Expand all Loading... |
373 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); | 373 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); |
374 testing::runPendingTasks(); | 374 testing::runPendingTasks(); |
375 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); | 375 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); |
376 EXPECT_FALSE(reader->drainAsFormData()); | 376 EXPECT_FALSE(reader->drainAsFormData()); |
377 reader->endRead(0); | 377 reader->endRead(0); |
378 EXPECT_FALSE(reader->drainAsFormData()); | 378 EXPECT_FALSE(reader->drainAsFormData()); |
379 } | 379 } |
380 | 380 |
381 } // namespace | 381 } // namespace |
382 } // namespace blink | 382 } // namespace blink |
OLD | NEW |