| 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/FetchFormDataConsumerHandle.h" | 5 #include "modules/fetch/FetchFormDataConsumerHandle.h" |
| 6 | 6 |
| 7 #include "core/dom/DOMTypedArray.h" | 7 #include "core/dom/DOMTypedArray.h" |
| 8 #include "core/html/FormData.h" | 8 #include "core/html/FormData.h" |
| 9 #include "core/loader/MockThreadableLoader.h" | 9 #include "core/loader/MockThreadableLoader.h" |
| 10 #include "core/loader/ThreadableLoaderClient.h" | 10 #include "core/loader/ThreadableLoaderClient.h" |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 HandleReaderRunner<HandleTwoPhaseReader> runner(std::move(handle)); | 230 HandleReaderRunner<HandleTwoPhaseReader> runner(std::move(handle)); |
| 231 testing::runPendingTasks(); | 231 testing::runPendingTasks(); |
| 232 std::unique_ptr<HandleReadResult> r = runner.wait(); | 232 std::unique_ptr<HandleReadResult> r = runner.wait(); |
| 233 EXPECT_EQ(kDone, r->result()); | 233 EXPECT_EQ(kDone, r->result()); |
| 234 EXPECT_EQ("bar", toString(r->data())); | 234 EXPECT_EQ("bar", toString(r->data())); |
| 235 } | 235 } |
| 236 | 236 |
| 237 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromString) | 237 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromString) |
| 238 { | 238 { |
| 239 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); | 239 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); |
| 240 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 240 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 241 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); | 241 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); |
| 242 ASSERT_TRUE(blobDataHandle); | 242 ASSERT_TRUE(blobDataHandle); |
| 243 | 243 |
| 244 EXPECT_EQ(String(), blobDataHandle->type()); | 244 EXPECT_EQ(String(), blobDataHandle->type()); |
| 245 EXPECT_EQ(12u, blobDataHandle->size()); | 245 EXPECT_EQ(12u, blobDataHandle->size()); |
| 246 EXPECT_EQ(nullptr, reader->drainAsFormData()); | 246 EXPECT_EQ(nullptr, reader->drainAsFormData()); |
| 247 char c; | 247 char c; |
| 248 size_t readSize; | 248 size_t readSize; |
| 249 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); | 249 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); |
| 250 } | 250 } |
| 251 | 251 |
| 252 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromArrayBuffer) | 252 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromArrayBuffer) |
| 253 { | 253 { |
| 254 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(DOMArrayBuffer::create("foo", 3)); | 254 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(DOMArrayBuffer::create("foo", 3)); |
| 255 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 255 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 256 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); | 256 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); |
| 257 ASSERT_TRUE(blobDataHandle); | 257 ASSERT_TRUE(blobDataHandle); |
| 258 | 258 |
| 259 EXPECT_EQ(String(), blobDataHandle->type()); | 259 EXPECT_EQ(String(), blobDataHandle->type()); |
| 260 EXPECT_EQ(3u, blobDataHandle->size()); | 260 EXPECT_EQ(3u, blobDataHandle->size()); |
| 261 EXPECT_EQ(nullptr, reader->drainAsFormData()); | 261 EXPECT_EQ(nullptr, reader->drainAsFormData()); |
| 262 char c; | 262 char c; |
| 263 size_t readSize; | 263 size_t readSize; |
| 264 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); | 264 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); |
| 265 } | 265 } |
| 266 | 266 |
| 267 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromSimpleFormData) | 267 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromSimpleFormData) |
| 268 { | 268 { |
| 269 FormData* data = FormData::create(UTF8Encoding()); | 269 FormData* data = FormData::create(UTF8Encoding()); |
| 270 data->append("name1", "value1"); | 270 data->append("name1", "value1"); |
| 271 data->append("name2", "value2"); | 271 data->append("name2", "value2"); |
| 272 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); | 272 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); |
| 273 | 273 |
| 274 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); | 274 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); |
| 275 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 275 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 276 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); | 276 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); |
| 277 ASSERT_TRUE(blobDataHandle); | 277 ASSERT_TRUE(blobDataHandle); |
| 278 | 278 |
| 279 EXPECT_EQ(String(), blobDataHandle->type()); | 279 EXPECT_EQ(String(), blobDataHandle->type()); |
| 280 EXPECT_EQ(inputFormData->flattenToString().utf8().length(), blobDataHandle->
size()); | 280 EXPECT_EQ(inputFormData->flattenToString().utf8().length(), blobDataHandle->
size()); |
| 281 EXPECT_EQ(nullptr, reader->drainAsFormData()); | 281 EXPECT_EQ(nullptr, reader->drainAsFormData()); |
| 282 char c; | 282 char c; |
| 283 size_t readSize; | 283 size_t readSize; |
| 284 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); | 284 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); |
| 285 } | 285 } |
| 286 | 286 |
| 287 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromComplexFormData
) | 287 TEST_F(FetchFormDataConsumerHandleTest, DrainAsBlobDataHandleFromComplexFormData
) |
| 288 { | 288 { |
| 289 RefPtr<EncodedFormData> inputFormData = complexFormData(); | 289 RefPtr<EncodedFormData> inputFormData = complexFormData(); |
| 290 | 290 |
| 291 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); | 291 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); |
| 292 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 292 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 293 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); | 293 RefPtr<BlobDataHandle> blobDataHandle = reader->drainAsBlobDataHandle(); |
| 294 ASSERT_TRUE(blobDataHandle); | 294 ASSERT_TRUE(blobDataHandle); |
| 295 | 295 |
| 296 EXPECT_EQ(nullptr, reader->drainAsFormData()); | 296 EXPECT_EQ(nullptr, reader->drainAsFormData()); |
| 297 char c; | 297 char c; |
| 298 size_t readSize; | 298 size_t readSize; |
| 299 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); | 299 EXPECT_EQ(kDone, reader->read(&c, 1, kNone, &readSize)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromString) | 302 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromString) |
| 303 { | 303 { |
| 304 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); | 304 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); |
| 305 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 305 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 306 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); | 306 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
| 307 ASSERT_TRUE(formData); | 307 ASSERT_TRUE(formData); |
| 308 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 308 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
| 309 EXPECT_EQ("hello, world", formData->flattenToString()); | 309 EXPECT_EQ("hello, world", formData->flattenToString()); |
| 310 | 310 |
| 311 const void* buffer = nullptr; | 311 const void* buffer = nullptr; |
| 312 size_t size; | 312 size_t size; |
| 313 EXPECT_EQ(kDone, reader->read(nullptr, 0, kNone, &size)); | 313 EXPECT_EQ(kDone, reader->read(nullptr, 0, kNone, &size)); |
| 314 EXPECT_EQ(kDone, reader->beginRead(&buffer, kNone, &size)); | 314 EXPECT_EQ(kDone, reader->beginRead(&buffer, kNone, &size)); |
| 315 } | 315 } |
| 316 | 316 |
| 317 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromArrayBuffer) | 317 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromArrayBuffer) |
| 318 { | 318 { |
| 319 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(DOMArrayBuffer::create("foo", 3)); | 319 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(DOMArrayBuffer::create("foo", 3)); |
| 320 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 320 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 321 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); | 321 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
| 322 ASSERT_TRUE(formData); | 322 ASSERT_TRUE(formData); |
| 323 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 323 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
| 324 EXPECT_EQ("foo", formData->flattenToString()); | 324 EXPECT_EQ("foo", formData->flattenToString()); |
| 325 } | 325 } |
| 326 | 326 |
| 327 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromSimpleFormData) | 327 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromSimpleFormData) |
| 328 { | 328 { |
| 329 FormData* data = FormData::create(UTF8Encoding()); | 329 FormData* data = FormData::create(UTF8Encoding()); |
| 330 data->append("name1", "value1"); | 330 data->append("name1", "value1"); |
| 331 data->append("name2", "value2"); | 331 data->append("name2", "value2"); |
| 332 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); | 332 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); |
| 333 | 333 |
| 334 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); | 334 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); |
| 335 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 335 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 336 RefPtr<EncodedFormData> outputFormData = reader->drainAsFormData(); | 336 RefPtr<EncodedFormData> outputFormData = reader->drainAsFormData(); |
| 337 ASSERT_TRUE(outputFormData); | 337 ASSERT_TRUE(outputFormData); |
| 338 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); | 338 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); |
| 339 EXPECT_NE(outputFormData.get(), inputFormData.get()); | 339 EXPECT_NE(outputFormData.get(), inputFormData.get()); |
| 340 EXPECT_EQ(inputFormData->flattenToString(), outputFormData->flattenToString(
)); | 340 EXPECT_EQ(inputFormData->flattenToString(), outputFormData->flattenToString(
)); |
| 341 } | 341 } |
| 342 | 342 |
| 343 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromComplexFormData) | 343 TEST_F(FetchFormDataConsumerHandleTest, DrainAsFormDataFromComplexFormData) |
| 344 { | 344 { |
| 345 RefPtr<EncodedFormData> inputFormData = complexFormData(); | 345 RefPtr<EncodedFormData> inputFormData = complexFormData(); |
| 346 | 346 |
| 347 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); | 347 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(getDocument(), inputFormData); |
| 348 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 348 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 349 RefPtr<EncodedFormData> outputFormData = reader->drainAsFormData(); | 349 RefPtr<EncodedFormData> outputFormData = reader->drainAsFormData(); |
| 350 ASSERT_TRUE(outputFormData); | 350 ASSERT_TRUE(outputFormData); |
| 351 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); | 351 EXPECT_TRUE(outputFormData->isSafeToSendToAnotherThread()); |
| 352 EXPECT_NE(outputFormData.get(), inputFormData.get()); | 352 EXPECT_NE(outputFormData.get(), inputFormData.get()); |
| 353 verifyComplexFormData(outputFormData.get()); | 353 verifyComplexFormData(outputFormData.get()); |
| 354 } | 354 } |
| 355 | 355 |
| 356 TEST_F(FetchFormDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining) | 356 TEST_F(FetchFormDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining) |
| 357 { | 357 { |
| 358 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); | 358 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); |
| 359 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 359 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 360 size_t readSize; | 360 size_t readSize; |
| 361 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); | 361 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); |
| 362 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); | 362 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
| 363 ASSERT_TRUE(formData); | 363 ASSERT_TRUE(formData); |
| 364 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 364 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
| 365 EXPECT_EQ("hello, world", formData->flattenToString()); | 365 EXPECT_EQ("hello, world", formData->flattenToString()); |
| 366 } | 366 } |
| 367 | 367 |
| 368 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDraining) | 368 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDraining) |
| 369 { | 369 { |
| 370 char c; | 370 char c; |
| 371 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); | 371 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); |
| 372 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 372 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 373 size_t readSize; | 373 size_t readSize; |
| 374 EXPECT_EQ(kOk, reader->read(&c, 1, kNone, &readSize)); | 374 EXPECT_EQ(kOk, reader->read(&c, 1, kNone, &readSize)); |
| 375 EXPECT_EQ(1u, readSize); | 375 EXPECT_EQ(1u, readSize); |
| 376 EXPECT_EQ('h', c); | 376 EXPECT_EQ('h', c); |
| 377 EXPECT_FALSE(reader->drainAsFormData()); | 377 EXPECT_FALSE(reader->drainAsFormData()); |
| 378 } | 378 } |
| 379 | 379 |
| 380 TEST_F(FetchFormDataConsumerHandleTest, BeginReadAffectsDraining) | 380 TEST_F(FetchFormDataConsumerHandleTest, BeginReadAffectsDraining) |
| 381 { | 381 { |
| 382 const void* buffer = nullptr; | 382 const void* buffer = nullptr; |
| 383 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); | 383 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::create(String("hello, world")); |
| 384 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 384 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 385 size_t available; | 385 size_t available; |
| 386 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); | 386 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); |
| 387 ASSERT_TRUE(buffer); | 387 ASSERT_TRUE(buffer); |
| 388 EXPECT_EQ("hello, world", String(static_cast<const char*>(buffer), available
)); | 388 EXPECT_EQ("hello, world", String(static_cast<const char*>(buffer), available
)); |
| 389 EXPECT_FALSE(reader->drainAsFormData()); | 389 EXPECT_FALSE(reader->drainAsFormData()); |
| 390 reader->endRead(0); | 390 reader->endRead(0); |
| 391 EXPECT_FALSE(reader->drainAsFormData()); | 391 EXPECT_FALSE(reader->drainAsFormData()); |
| 392 } | 392 } |
| 393 | 393 |
| 394 TEST_F(FetchFormDataConsumerHandleTest, ZeroByteReadDoesNotAffectDrainingForComp
lexFormData) | 394 TEST_F(FetchFormDataConsumerHandleTest, ZeroByteReadDoesNotAffectDrainingForComp
lexFormData) |
| 395 { | 395 { |
| 396 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); | 396 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); |
| 397 src->add(Command(Command::Data, "bar")); | 397 src->add(Command(Command::Data, "bar")); |
| 398 src->add(Command(Command::Done)); | 398 src->add(Command(Command::Done)); |
| 399 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::createForTest(getDocument(), complexFormData(), new LoaderFactory(std::move(s
rc))); | 399 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::createForTest(getDocument(), complexFormData(), new LoaderFactory(std::move(s
rc))); |
| 400 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 400 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 401 size_t readSize; | 401 size_t readSize; |
| 402 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize)); | 402 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize)); |
| 403 testing::runPendingTasks(); | 403 testing::runPendingTasks(); |
| 404 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); | 404 EXPECT_EQ(kOk, reader->read(nullptr, 0, kNone, &readSize)); |
| 405 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); | 405 RefPtr<EncodedFormData> formData = reader->drainAsFormData(); |
| 406 ASSERT_TRUE(formData); | 406 ASSERT_TRUE(formData); |
| 407 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); | 407 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); |
| 408 verifyComplexFormData(formData.get()); | 408 verifyComplexFormData(formData.get()); |
| 409 } | 409 } |
| 410 | 410 |
| 411 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDrainingForComplexForm
Data) | 411 TEST_F(FetchFormDataConsumerHandleTest, OneByteReadAffectsDrainingForComplexForm
Data) |
| 412 { | 412 { |
| 413 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); | 413 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); |
| 414 src->add(Command(Command::Data, "bar")); | 414 src->add(Command(Command::Data, "bar")); |
| 415 src->add(Command(Command::Done)); | 415 src->add(Command(Command::Done)); |
| 416 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::createForTest(getDocument(), complexFormData(), new LoaderFactory(std::move(s
rc))); | 416 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::createForTest(getDocument(), complexFormData(), new LoaderFactory(std::move(s
rc))); |
| 417 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 417 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 418 char c; | 418 char c; |
| 419 size_t readSize; | 419 size_t readSize; |
| 420 EXPECT_EQ(kShouldWait, reader->read(&c, 1, kNone, &readSize)); | 420 EXPECT_EQ(kShouldWait, reader->read(&c, 1, kNone, &readSize)); |
| 421 testing::runPendingTasks(); | 421 testing::runPendingTasks(); |
| 422 EXPECT_EQ(kOk, reader->read(&c, 1, kNone, &readSize)); | 422 EXPECT_EQ(kOk, reader->read(&c, 1, kNone, &readSize)); |
| 423 EXPECT_EQ(1u, readSize); | 423 EXPECT_EQ(1u, readSize); |
| 424 EXPECT_EQ('b', c); | 424 EXPECT_EQ('b', c); |
| 425 EXPECT_FALSE(reader->drainAsFormData()); | 425 EXPECT_FALSE(reader->drainAsFormData()); |
| 426 } | 426 } |
| 427 | 427 |
| 428 TEST_F(FetchFormDataConsumerHandleTest, BeginReadAffectsDrainingForComplexFormDa
ta) | 428 TEST_F(FetchFormDataConsumerHandleTest, BeginReadAffectsDrainingForComplexFormDa
ta) |
| 429 { | 429 { |
| 430 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); | 430 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); |
| 431 src->add(Command(Command::Data, "bar")); | 431 src->add(Command(Command::Data, "bar")); |
| 432 src->add(Command(Command::Done)); | 432 src->add(Command(Command::Done)); |
| 433 const void* buffer = nullptr; | 433 const void* buffer = nullptr; |
| 434 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::createForTest(getDocument(), complexFormData(), new LoaderFactory(std::move(s
rc))); | 434 std::unique_ptr<FetchDataConsumerHandle> handle = FetchFormDataConsumerHandl
e::createForTest(getDocument(), complexFormData(), new LoaderFactory(std::move(s
rc))); |
| 435 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainRead
er(nullptr); | 435 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc
hDataReader(nullptr); |
| 436 size_t available; | 436 size_t available; |
| 437 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); | 437 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); |
| 438 testing::runPendingTasks(); | 438 testing::runPendingTasks(); |
| 439 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); | 439 EXPECT_EQ(kOk, reader->beginRead(&buffer, kNone, &available)); |
| 440 EXPECT_FALSE(reader->drainAsFormData()); | 440 EXPECT_FALSE(reader->drainAsFormData()); |
| 441 reader->endRead(0); | 441 reader->endRead(0); |
| 442 EXPECT_FALSE(reader->drainAsFormData()); | 442 EXPECT_FALSE(reader->drainAsFormData()); |
| 443 } | 443 } |
| 444 | 444 |
| 445 } // namespace | 445 } // namespace |
| 446 } // namespace blink | 446 } // namespace blink |
| OLD | NEW |