OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/BodyStreamBuffer.h" | 5 #include "modules/fetch/BodyStreamBuffer.h" |
6 | 6 |
7 #include "bindings/core/v8/V8BindingForTesting.h" | 7 #include "bindings/core/v8/V8BindingForTesting.h" |
8 #include "core/html/FormData.h" | 8 #include "core/html/FormData.h" |
9 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 9 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" | 10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" |
11 #include "modules/fetch/FetchFormDataConsumerHandle.h" | 11 #include "modules/fetch/FetchFormDataConsumerHandle.h" |
12 #include "platform/blob/BlobData.h" | 12 #include "platform/blob/BlobData.h" |
13 #include "platform/blob/BlobURL.h" | 13 #include "platform/blob/BlobURL.h" |
14 #include "platform/network/EncodedFormData.h" | 14 #include "platform/network/EncodedFormData.h" |
15 #include "platform/testing/UnitTestHelpers.h" | 15 #include "platform/testing/UnitTestHelpers.h" |
16 #include "testing/gmock/include/gmock/gmock.h" | 16 #include "testing/gmock/include/gmock/gmock.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
18 #include "wtf/PtrUtil.h" | 18 #include "wtf/PtrUtil.h" |
19 #include <memory> | 19 #include <memory> |
20 | 20 |
21 namespace blink { | 21 namespace blink { |
22 | 22 |
23 namespace { | 23 namespace { |
24 | 24 |
| 25 using ::testing::ByMove; |
25 using ::testing::InSequence; | 26 using ::testing::InSequence; |
| 27 using ::testing::Return; |
26 using ::testing::_; | 28 using ::testing::_; |
27 using ::testing::SaveArg; | 29 using ::testing::SaveArg; |
28 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>; | 30 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>; |
29 using Command = DataConsumerHandleTestUtil::Command; | 31 using Command = DataConsumerHandleTestUtil::Command; |
30 using ReplayingHandle = DataConsumerHandleTestUtil::ReplayingHandle; | 32 using ReplayingHandle = DataConsumerHandleTestUtil::ReplayingHandle; |
31 using MockFetchDataLoaderClient = DataConsumerHandleTestUtil::MockFetchDataLoade
rClient; | 33 using MockFetchDataLoaderClient = DataConsumerHandleTestUtil::MockFetchDataLoade
rClient; |
32 | 34 |
33 class FakeLoaderFactory : public FetchBlobDataConsumerHandle::LoaderFactory { | 35 class FakeLoaderFactory : public FetchBlobDataConsumerHandle::LoaderFactory { |
34 public: | 36 public: |
35 std::unique_ptr<ThreadableLoader> create(ExecutionContext&, ThreadableLoader
Client*, const ThreadableLoaderOptions&, const ResourceLoaderOptions&) override | 37 std::unique_ptr<ThreadableLoader> create(ExecutionContext&, ThreadableLoader
Client*, const ThreadableLoaderOptions&, const ResourceLoaderOptions&) override |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 | 478 |
477 MOCK_METHOD0(destruct, void()); | 479 MOCK_METHOD0(destruct, void()); |
478 }; | 480 }; |
479 | 481 |
480 TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled
) | 482 TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled
) |
481 { | 483 { |
482 V8TestingScope scope; | 484 V8TestingScope scope; |
483 using MockHandle = MockFetchDataConsumerHandleWithMockDestructor; | 485 using MockHandle = MockFetchDataConsumerHandleWithMockDestructor; |
484 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; | 486 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; |
485 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 487 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
486 std::unique_ptr<MockReader> reader = MockReader::create(); | 488 // |reader| will be adopted by |obtainFetchDataReader|. |
| 489 MockReader* reader = MockReader::create().release(); |
487 | 490 |
488 Checkpoint checkpoint; | 491 Checkpoint checkpoint; |
489 InSequence s; | 492 InSequence s; |
490 | 493 |
491 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(::testing::Return(rea
der.get())); | 494 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); |
492 EXPECT_CALL(checkpoint, Call(1)); | 495 EXPECT_CALL(checkpoint, Call(1)); |
493 EXPECT_CALL(*reader, destruct()); | 496 EXPECT_CALL(*reader, destruct()); |
494 EXPECT_CALL(*handle, destruct()); | 497 EXPECT_CALL(*handle, destruct()); |
495 EXPECT_CALL(checkpoint, Call(2)); | 498 EXPECT_CALL(checkpoint, Call(2)); |
496 | 499 |
497 // |reader| is adopted by |obtainReader|. | |
498 ASSERT_TRUE(reader.release()); | |
499 | |
500 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std:
:move(handle)); | 500 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std:
:move(handle)); |
501 checkpoint.Call(1); | 501 checkpoint.Call(1); |
502 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->
isolate(), "reason")); | 502 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->
isolate(), "reason")); |
503 buffer->cancelSource(scope.getScriptState(), reason); | 503 buffer->cancelSource(scope.getScriptState(), reason); |
504 checkpoint.Call(2); | 504 checkpoint.Call(2); |
505 } | 505 } |
506 | 506 |
507 } // namespace | 507 } // namespace |
508 | 508 |
509 } // namespace blink | 509 } // namespace blink |
OLD | NEW |