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

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

Issue 2292763002: [Fetch API] Implement Request.formData and Response.formData. (Closed)
Patch Set: Created 4 years, 2 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 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/FetchDataLoader.h" 5 #include "modules/fetch/FetchDataLoader.h"
6 6
7 #include "core/html/FormData.h"
7 #include "modules/fetch/BytesConsumerForDataConsumerHandle.h" 8 #include "modules/fetch/BytesConsumerForDataConsumerHandle.h"
8 #include "modules/fetch/DataConsumerHandleTestUtil.h" 9 #include "modules/fetch/DataConsumerHandleTestUtil.h"
9 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 #include <memory> 12 #include <memory>
12 13
13 namespace blink { 14 namespace blink {
14 15
15 namespace { 16 namespace {
16 17
(...skipping 13 matching lines...) Expand all
30 constexpr WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok; 31 constexpr WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok;
31 constexpr WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle ::UnexpectedError; 32 constexpr WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle ::UnexpectedError;
32 constexpr WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::Sho uldWait; 33 constexpr WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::Sho uldWait;
33 constexpr WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done; 34 constexpr WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done;
34 constexpr WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone; 35 constexpr WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone;
35 constexpr FetchDataConsumerHandle::Reader::BlobSizePolicy kDisallowBlobWithInval idSize = FetchDataConsumerHandle::Reader::DisallowBlobWithInvalidSize; 36 constexpr FetchDataConsumerHandle::Reader::BlobSizePolicy kDisallowBlobWithInval idSize = FetchDataConsumerHandle::Reader::DisallowBlobWithInvalidSize;
36 37
37 constexpr char kQuickBrownFox[] = "Quick brown fox"; 38 constexpr char kQuickBrownFox[] = "Quick brown fox";
38 constexpr size_t kQuickBrownFoxLength = 15; 39 constexpr size_t kQuickBrownFoxLength = 15;
39 constexpr size_t kQuickBrownFoxLengthWithTerminatingNull = 16; 40 constexpr size_t kQuickBrownFoxLengthWithTerminatingNull = 16;
41 constexpr char kQuickBrownFoxFormData[] =
42 "--boundary\r\n"
43 "Content-Disposition: form-data; name=\"string\"\r\n"
44 "\r\n"
45 "Quick brown fox\r\n"
46 "--boundary--\r\n";
47 constexpr size_t kQuickBrownFoxFormDataLength = WTF_ARRAY_LENGTH(kQuickBrownFoxF ormData) - 1u;
40 48
41 TEST(FetchDataLoaderTest, LoadAsBlob) 49 TEST(FetchDataLoaderTest, LoadAsBlob)
42 { 50 {
43 WebDataConsumerHandle::Client *client = nullptr; 51 WebDataConsumerHandle::Client *client = nullptr;
44 Checkpoint checkpoint; 52 Checkpoint checkpoint;
45 53
46 std::unique_ptr<MockHandle> handle = MockHandle::create(); 54 std::unique_ptr<MockHandle> handle = MockHandle::create();
47 55
48 // |reader| will be adopted by |obtainFetchDataReader|. 56 // |reader| will be adopted by |obtainFetchDataReader|.
49 MockReader* reader = MockReader::create().release(); 57 MockReader* reader = MockReader::create().release();
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 EXPECT_CALL(*reader, destruct()); 331 EXPECT_CALL(*reader, destruct());
324 EXPECT_CALL(checkpoint, Call(3)); 332 EXPECT_CALL(checkpoint, Call(3));
325 333
326 checkpoint.Call(1); 334 checkpoint.Call(1);
327 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient); 335 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient);
328 checkpoint.Call(2); 336 checkpoint.Call(2);
329 fetchDataLoader->cancel(); 337 fetchDataLoader->cancel();
330 checkpoint.Call(3); 338 checkpoint.Call(3);
331 } 339 }
332 340
341 TEST(FetchDataLoaderTest, LoadAsFormData)
342 {
343 WebDataConsumerHandle::Client *client = nullptr;
344 Checkpoint checkpoint;
345
346 std::unique_ptr<MockHandle> handle = MockHandle::create();
347
348 // |reader| will be adopted by |obtainFetchDataReader|.
349 MockReader* reader = MockReader::create().release();
350
351 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsFormData(" boundary");
352 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
353 FormData* formData = nullptr;
354
355 InSequence s;
356 EXPECT_CALL(checkpoint, Call(1));
357 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
358 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
359 EXPECT_CALL(checkpoint, Call(2));
360 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
361 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFoxFormData)), SetArgPointee<2>(kQuickBrown FoxFormDataLength), Return(kOk)));
362 EXPECT_CALL(*reader, endRead(kQuickBrownFoxFormDataLength)).WillOnce(Return( kOk));
363 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
364 EXPECT_CALL(*reader, destruct());
365 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedFormDataMock(_)).WillO nce(SaveArg<0>(&formData));
366 EXPECT_CALL(checkpoint, Call(3));
367 EXPECT_CALL(checkpoint, Call(4));
368
369 checkpoint.Call(1);
370 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient);
371 checkpoint.Call(2);
372 ASSERT_TRUE(client);
373 client->didGetReadable();
374 checkpoint.Call(3);
375 fetchDataLoader->cancel();
376 checkpoint.Call(4);
377
378 ASSERT_TRUE(formData);
379 ASSERT_EQ(1u, formData->entries().size());
380 ASSERT_TRUE(formData->entries()[0]->isString());
381 EXPECT_EQ(kQuickBrownFox, formData->entries()[0]->value());
382 }
383
384 TEST(FetchDataLoaderTest, LoadAsFormDataPartialInput)
385 {
386 WebDataConsumerHandle::Client *client = nullptr;
387 Checkpoint checkpoint;
388
389 std::unique_ptr<MockHandle> handle = MockHandle::create();
390
391 // |reader| will be adopted by |obtainFetchDataReader|.
392 MockReader* reader = MockReader::create().release();
393
394 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsFormData(" boundary");
395 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
396
397 InSequence s;
398 EXPECT_CALL(checkpoint, Call(1));
399 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
400 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
401 EXPECT_CALL(checkpoint, Call(2));
402 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
403 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFoxFormData)), SetArgPointee<2>(kQuickBrown FoxFormDataLength - 3u), Return(kOk)));
404 EXPECT_CALL(*reader, endRead(kQuickBrownFoxFormDataLength - 3u)).WillOnce(Re turn(kOk));
405 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
406 EXPECT_CALL(*reader, destruct());
407 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
408 EXPECT_CALL(checkpoint, Call(3));
409 EXPECT_CALL(checkpoint, Call(4));
410
411 checkpoint.Call(1);
412 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient);
413 checkpoint.Call(2);
414 ASSERT_TRUE(client);
415 client->didGetReadable();
416 checkpoint.Call(3);
417 fetchDataLoader->cancel();
418 checkpoint.Call(4);
419 }
420
421 TEST(FetchDataLoaderTest, LoadAsFormDataError)
422 {
423 WebDataConsumerHandle::Client *client = nullptr;
424 Checkpoint checkpoint;
425
426 std::unique_ptr<MockHandle> handle = MockHandle::create();
427
428 // |reader| will be adopted by |obtainFetchDataReader|.
429 MockReader* reader = MockReader::create().release();
430
431 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsFormData(" boundary");
432 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
433
434 InSequence s;
435 EXPECT_CALL(checkpoint, Call(1));
436 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl ient), Return(ByMove(WTF::wrapUnique(reader)))));
437 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
438 EXPECT_CALL(checkpoint, Call(2));
439 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe e<3>(0), Return(kShouldWait)));
440 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(kQuickBrownFoxFormData)), SetArgPointee<2>(kQuickBrown FoxFormDataLength), Return(kOk)));
441 EXPECT_CALL(*reader, endRead(kQuickBrownFoxFormDataLength)).WillOnce(Return( kOk));
442 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
443 EXPECT_CALL(*reader, destruct());
444 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
445 EXPECT_CALL(checkpoint, Call(3));
446 EXPECT_CALL(checkpoint, Call(4));
447
448 checkpoint.Call(1);
449 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient);
450 checkpoint.Call(2);
451 ASSERT_TRUE(client);
452 client->didGetReadable();
453 checkpoint.Call(3);
454 fetchDataLoader->cancel();
455 checkpoint.Call(4);
456 }
457
458 TEST(FetchDataLoaderTest, LoadAsFormDataCancel)
459 {
460 Checkpoint checkpoint;
461
462 std::unique_ptr<MockHandle> handle = MockHandle::create();
463
464 // |reader| will be adopted by |obtainFetchDataReader|.
465 MockReader* reader = MockReader::create().release();
466
467 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsFormData(" boundary");
468 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
469
470 InSequence s;
471 EXPECT_CALL(checkpoint, Call(1));
472 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w rapUnique(reader))));
473 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (nullptr), SetArgPointee<2>(0), Return(kShouldWait)));
474 EXPECT_CALL(checkpoint, Call(2));
475 EXPECT_CALL(*reader, destruct());
476 EXPECT_CALL(checkpoint, Call(3));
477
478 checkpoint.Call(1);
479 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient);
480 checkpoint.Call(2);
481 fetchDataLoader->cancel();
482 checkpoint.Call(3);
483 }
484
333 TEST(FetchDataLoaderTest, LoadAsString) 485 TEST(FetchDataLoaderTest, LoadAsString)
334 { 486 {
335 WebDataConsumerHandle::Client *client = nullptr; 487 WebDataConsumerHandle::Client *client = nullptr;
336 Checkpoint checkpoint; 488 Checkpoint checkpoint;
337 489
338 std::unique_ptr<MockHandle> handle = MockHandle::create(); 490 std::unique_ptr<MockHandle> handle = MockHandle::create();
339 491
340 // |reader| will be adopted by |obtainFetchDataReader|. 492 // |reader| will be adopted by |obtainFetchDataReader|.
341 MockReader* reader = MockReader::create().release(); 493 MockReader* reader = MockReader::create().release();
342 494
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 checkpoint.Call(1); 616 checkpoint.Call(1);
465 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient); 617 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(nullptr, std:: move(handle)), fetchDataLoaderClient);
466 checkpoint.Call(2); 618 checkpoint.Call(2);
467 fetchDataLoader->cancel(); 619 fetchDataLoader->cancel();
468 checkpoint.Call(3); 620 checkpoint.Call(3);
469 } 621 }
470 622
471 } // namespace 623 } // namespace
472 624
473 } // namespace blink 625 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698