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

Side by Side Diff: Source/modules/fetch/FetchBlobDataConsumerHandleTest.cpp

Issue 1265413002: Introduce FetchFormDataConsumerHandle. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 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 | Annotate | Revision Log
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 "config.h" 5 #include "config.h"
6 #include "modules/fetch/FetchBlobDataConsumerHandle.h" 6 #include "modules/fetch/FetchBlobDataConsumerHandle.h"
7 7
8 #include "core/dom/ExecutionContext.h" 8 #include "core/dom/ExecutionContext.h"
9 #include "core/fetch/ResourceLoaderOptions.h" 9 #include "core/fetch/ResourceLoaderOptions.h"
10 #include "core/loader/ThreadableLoader.h" 10 #include "core/loader/ThreadableLoader.h"
(...skipping 10 matching lines...) Expand all
21 #include "wtf/RefPtr.h" 21 #include "wtf/RefPtr.h"
22 22
23 #include <gmock/gmock.h> 23 #include <gmock/gmock.h>
24 #include <gtest/gtest.h> 24 #include <gtest/gtest.h>
25 #include <string.h> 25 #include <string.h>
26 26
27 namespace blink { 27 namespace blink {
28 namespace { 28 namespace {
29 29
30 using Result = WebDataConsumerHandle::Result; 30 using Result = WebDataConsumerHandle::Result;
31 const Result kShouldWait = WebDataConsumerHandle::ShouldWait;
31 const Result kUnexpectedError = WebDataConsumerHandle::UnexpectedError; 32 const Result kUnexpectedError = WebDataConsumerHandle::UnexpectedError;
32 const Result kDone = WebDataConsumerHandle::Done; 33 const Result kDone = WebDataConsumerHandle::Done;
33 using Flags = WebDataConsumerHandle::Flags; 34 using Flags = WebDataConsumerHandle::Flags;
34 const Flags kNone = WebDataConsumerHandle::FlagNone; 35 const Flags kNone = WebDataConsumerHandle::FlagNone;
35 using Thread = DataConsumerHandleTestUtil::Thread; 36 using Thread = DataConsumerHandleTestUtil::Thread;
36 using HandleReader = DataConsumerHandleTestUtil::HandleReader; 37 using HandleReader = DataConsumerHandleTestUtil::HandleReader;
37 using HandleTwoPhaseReader = DataConsumerHandleTestUtil::HandleTwoPhaseReader; 38 using HandleTwoPhaseReader = DataConsumerHandleTestUtil::HandleTwoPhaseReader;
38 using HandleReadResult = DataConsumerHandleTestUtil::HandleReadResult; 39 using HandleReadResult = DataConsumerHandleTestUtil::HandleReadResult;
39 using ReplayingHandle = DataConsumerHandleTestUtil::ReplayingHandle; 40 using ReplayingHandle = DataConsumerHandleTestUtil::ReplayingHandle;
40 using Command = DataConsumerHandleTestUtil::Command; 41 using Command = DataConsumerHandleTestUtil::Command;
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 335 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size);
335 checkpoint.Call(1); 336 checkpoint.Call(1);
336 testing::runPendingTasks(); 337 testing::runPendingTasks();
337 checkpoint.Call(2); 338 checkpoint.Call(2);
338 client->didReceiveResponse(0, ResourceResponse(), src.release()); 339 client->didReceiveResponse(0, ResourceResponse(), src.release());
339 HandleReaderRunner<HandleReader> runner(handle.release()); 340 HandleReaderRunner<HandleReader> runner(handle.release());
340 OwnPtr<HandleReadResult> r = runner.wait(); 341 OwnPtr<HandleReadResult> r = runner.wait();
341 EXPECT_EQ(kUnexpectedError, r->result()); 342 EXPECT_EQ(kUnexpectedError, r->result());
342 } 343 }
343 344
345 TEST_F(FetchBlobDataConsumerHandleTest, DrainAsBlobDataHandle)
346 {
347 auto factory = new StrictMock<MockLoaderFactory>;
348
349 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
350 OwnPtr<FetchDataConsumerHandle> handle
351 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
352
353 size_t size = 0;
354 EXPECT_EQ(blobDataHandle, handle->obtainReader(nullptr)->drainAsBlobDataHand le());
355 EXPECT_FALSE(handle->obtainReader(nullptr)->drainAsFormData());
356
357 EXPECT_EQ(kDone, handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &siz e));
358 }
359
360 TEST_F(FetchBlobDataConsumerHandleTest, DrainAsFormData)
361 {
362 auto factory = new StrictMock<MockLoaderFactory>;
363
364 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
365 OwnPtr<FetchDataConsumerHandle> handle
366 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
367
368 RefPtr<FormData> formData = handle->obtainReader(nullptr)->drainAsFormData() ;
369 ASSERT_TRUE(formData);
370 EXPECT_TRUE(formData->isSafeToSendToAnotherThread());
371 ASSERT_EQ(1u, formData->elements().size());
372 EXPECT_EQ(FormDataElement::encodedBlob, formData->elements()[0].m_type);
373 EXPECT_EQ(blobDataHandle->uuid(), formData->elements()[0].m_blobUUID);
374 EXPECT_EQ(blobDataHandle, formData->elements()[0].m_optionalBlobDataHandle);
375
376 EXPECT_FALSE(handle->obtainReader(nullptr)->drainAsBlobDataHandle());
377 size_t size;
378 EXPECT_EQ(kDone, handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &siz e));
379 }
380
381 TEST_F(FetchBlobDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining)
382 {
383 auto factory = new StrictMock<MockLoaderFactory>;
384
385 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
386 OwnPtr<FetchDataConsumerHandle> handle
387 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
388 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r);
389
390 size_t readSize;
391 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize));
392 EXPECT_EQ(blobDataHandle, reader->drainAsBlobDataHandle());
393 }
394
395 TEST_F(FetchBlobDataConsumerHandleTest, OneByteReadAffectsDraining)
396 {
397 auto factory = new StrictMock<MockLoaderFactory>;
398
399 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
400 OwnPtr<FetchDataConsumerHandle> handle
401 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
402 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r);
403
404 size_t readSize;
405 char c;
406 EXPECT_EQ(kShouldWait, reader->read(&c, 1, kNone, &readSize));
407 EXPECT_FALSE(reader->drainAsFormData());
408 }
409
410 TEST_F(FetchBlobDataConsumerHandleTest, BeginReadAffectsDraining)
411 {
412 auto factory = new StrictMock<MockLoaderFactory>;
413
414 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
415 OwnPtr<FetchDataConsumerHandle> handle
416 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
417 OwnPtr<FetchDataConsumerHandle::Reader> reader = handle->obtainReader(nullpt r);
418
419 const void* buffer;
420 size_t available;
421 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available));
422 EXPECT_FALSE(reader->drainAsBlobDataHandle());
423 }
424
344 } // namespace 425 } // namespace
345 } // namespace blink 426 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/fetch/FetchBlobDataConsumerHandle.cpp ('k') | Source/modules/fetch/FetchDataConsumerHandle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698