| 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/FetchDataLoader.h" | 5 #include "modules/fetch/FetchDataLoader.h" |
| 6 | 6 |
| 7 #include "modules/fetch/BytesConsumerForDataConsumerHandle.h" |
| 7 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 8 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
| 8 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include <memory> | 11 #include <memory> |
| 11 | 12 |
| 12 namespace blink { | 13 namespace blink { |
| 13 | 14 |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 16 using ::testing::ByMove; | 17 using ::testing::ByMove; |
| 17 using ::testing::InSequence; | 18 using ::testing::InSequence; |
| 18 using ::testing::Return; | 19 using ::testing::Return; |
| 19 using ::testing::DoAll; | 20 using ::testing::DoAll; |
| 20 using ::testing::StrictMock; | 21 using ::testing::StrictMock; |
| 21 using ::testing::_; | 22 using ::testing::_; |
| 22 using ::testing::SaveArg; | 23 using ::testing::SaveArg; |
| 23 using ::testing::SetArgPointee; | 24 using ::testing::SetArgPointee; |
| 24 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>; | 25 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>; |
| 25 using MockFetchDataLoaderClient = DataConsumerHandleTestUtil::MockFetchDataLoade
rClient; | 26 using MockFetchDataLoaderClient = DataConsumerHandleTestUtil::MockFetchDataLoade
rClient; |
| 26 using MockHandle = DataConsumerHandleTestUtil::MockFetchDataConsumerHandle; | 27 using MockHandle = DataConsumerHandleTestUtil::MockFetchDataConsumerHandle; |
| 27 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; | 28 using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; |
| 28 | 29 |
| 29 const WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok; | 30 constexpr WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok; |
| 30 const WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle::Un
expectedError; | 31 constexpr WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle
::UnexpectedError; |
| 31 const WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done; | 32 constexpr WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::Sho
uldWait; |
| 32 const WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone; | 33 constexpr WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done; |
| 33 const FetchDataConsumerHandle::Reader::BlobSizePolicy kDisallowBlobWithInvalidSi
ze = FetchDataConsumerHandle::Reader::DisallowBlobWithInvalidSize; | 34 constexpr WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone; |
| 35 constexpr FetchDataConsumerHandle::Reader::BlobSizePolicy kDisallowBlobWithInval
idSize = FetchDataConsumerHandle::Reader::DisallowBlobWithInvalidSize; |
| 34 | 36 |
| 35 const char kQuickBrownFox[] = "Quick brown fox"; | 37 constexpr char kQuickBrownFox[] = "Quick brown fox"; |
| 36 const size_t kQuickBrownFoxLength = 15; | 38 constexpr size_t kQuickBrownFoxLength = 15; |
| 37 const size_t kQuickBrownFoxLengthWithTerminatingNull = 16; | 39 constexpr size_t kQuickBrownFoxLengthWithTerminatingNull = 16; |
| 38 | 40 |
| 39 TEST(FetchDataLoaderTest, LoadAsBlob) | 41 TEST(FetchDataLoaderTest, LoadAsBlob) |
| 40 { | 42 { |
| 41 WebDataConsumerHandle::Client *client = nullptr; | 43 WebDataConsumerHandle::Client *client = nullptr; |
| 42 Checkpoint checkpoint; | 44 Checkpoint checkpoint; |
| 43 | 45 |
| 44 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 46 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 45 | 47 |
| 46 // |reader| will be adopted by |obtainFetchDataReader|. | 48 // |reader| will be adopted by |obtainFetchDataReader|. |
| 47 MockReader* reader = MockReader::create().release(); | 49 MockReader* reader = MockReader::create().release(); |
| 48 | 50 |
| 49 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 51 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 50 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 52 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 51 RefPtr<BlobDataHandle> blobDataHandle; | 53 RefPtr<BlobDataHandle> blobDataHandle; |
| 52 | 54 |
| 53 InSequence s; | 55 InSequence s; |
| 54 EXPECT_CALL(checkpoint, Call(1)); | 56 EXPECT_CALL(checkpoint, Call(1)); |
| 55 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 57 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 56 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); | 58 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); |
| 59 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 57 EXPECT_CALL(checkpoint, Call(2)); | 60 EXPECT_CALL(checkpoint, Call(2)); |
| 61 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 58 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 62 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 59 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 63 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 60 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 64 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 61 EXPECT_CALL(*reader, destruct()); | 65 EXPECT_CALL(*reader, destruct()); |
| 62 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); | 66 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); |
| 63 EXPECT_CALL(checkpoint, Call(3)); | 67 EXPECT_CALL(checkpoint, Call(3)); |
| 64 EXPECT_CALL(checkpoint, Call(4)); | 68 EXPECT_CALL(checkpoint, Call(4)); |
| 65 | 69 |
| 66 checkpoint.Call(1); | 70 checkpoint.Call(1); |
| 67 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 71 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 68 checkpoint.Call(2); | 72 checkpoint.Call(2); |
| 69 ASSERT_TRUE(client); | 73 ASSERT_TRUE(client); |
| 70 client->didGetReadable(); | 74 client->didGetReadable(); |
| 71 checkpoint.Call(3); | 75 checkpoint.Call(3); |
| 72 fetchDataLoader->cancel(); | 76 fetchDataLoader->cancel(); |
| 73 checkpoint.Call(4); | 77 checkpoint.Call(4); |
| 74 | 78 |
| 75 ASSERT_TRUE(blobDataHandle); | 79 ASSERT_TRUE(blobDataHandle); |
| 76 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); | 80 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); |
| 77 EXPECT_EQ(String("text/test"), blobDataHandle->type()); | 81 EXPECT_EQ(String("text/test"), blobDataHandle->type()); |
| 78 } | 82 } |
| 79 | 83 |
| 80 TEST(FetchDataLoaderTest, LoadAsBlobFailed) | 84 TEST(FetchDataLoaderTest, LoadAsBlobFailed) |
| 81 { | 85 { |
| 82 WebDataConsumerHandle::Client *client = nullptr; | 86 WebDataConsumerHandle::Client *client = nullptr; |
| 83 Checkpoint checkpoint; | 87 Checkpoint checkpoint; |
| 84 | 88 |
| 85 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 89 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 86 | 90 |
| 87 // |reader| is adopted by |obtainFetchDataReader|. | 91 // |reader| is adopted by |obtainFetchDataReader|. |
| 88 MockReader* reader = MockReader::create().release(); | 92 MockReader* reader = MockReader::create().release(); |
| 89 | 93 |
| 90 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 94 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 91 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 95 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 92 | 96 |
| 93 InSequence s; | 97 InSequence s; |
| 94 EXPECT_CALL(checkpoint, Call(1)); | 98 EXPECT_CALL(checkpoint, Call(1)); |
| 95 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 99 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 96 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); | 100 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); |
| 101 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 97 EXPECT_CALL(checkpoint, Call(2)); | 102 EXPECT_CALL(checkpoint, Call(2)); |
| 103 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 98 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 104 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 99 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 105 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 100 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); | 106 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); |
| 101 EXPECT_CALL(*reader, destruct()); | 107 EXPECT_CALL(*reader, destruct()); |
| 102 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); | 108 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); |
| 103 EXPECT_CALL(checkpoint, Call(3)); | 109 EXPECT_CALL(checkpoint, Call(3)); |
| 104 EXPECT_CALL(checkpoint, Call(4)); | 110 EXPECT_CALL(checkpoint, Call(4)); |
| 105 | 111 |
| 106 checkpoint.Call(1); | 112 checkpoint.Call(1); |
| 107 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 113 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 108 checkpoint.Call(2); | 114 checkpoint.Call(2); |
| 109 ASSERT_TRUE(client); | 115 ASSERT_TRUE(client); |
| 110 client->didGetReadable(); | 116 client->didGetReadable(); |
| 111 checkpoint.Call(3); | 117 checkpoint.Call(3); |
| 112 fetchDataLoader->cancel(); | 118 fetchDataLoader->cancel(); |
| 113 checkpoint.Call(4); | 119 checkpoint.Call(4); |
| 114 } | 120 } |
| 115 | 121 |
| 116 TEST(FetchDataLoaderTest, LoadAsBlobCancel) | 122 TEST(FetchDataLoaderTest, LoadAsBlobCancel) |
| 117 { | 123 { |
| 118 Checkpoint checkpoint; | 124 Checkpoint checkpoint; |
| 119 | 125 |
| 120 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 126 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 121 | 127 |
| 122 // |reader| will be adopted by |obtainFetchDataReader|. | 128 // |reader| will be adopted by |obtainFetchDataReader|. |
| 123 MockReader* reader = MockReader::create().release(); | 129 MockReader* reader = MockReader::create().release(); |
| 124 | 130 |
| 125 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); | 131 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle
("text/test"); |
| 126 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 132 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 127 | 133 |
| 128 InSequence s; | 134 InSequence s; |
| 129 EXPECT_CALL(checkpoint, Call(1)); | 135 EXPECT_CALL(checkpoint, Call(1)); |
| 130 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); | 136 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); |
| 131 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); | 137 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(nullptr)); |
| 138 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 132 EXPECT_CALL(checkpoint, Call(2)); | 139 EXPECT_CALL(checkpoint, Call(2)); |
| 133 EXPECT_CALL(*reader, destruct()); | 140 EXPECT_CALL(*reader, destruct()); |
| 134 EXPECT_CALL(checkpoint, Call(3)); | 141 EXPECT_CALL(checkpoint, Call(3)); |
| 135 | 142 |
| 136 checkpoint.Call(1); | 143 checkpoint.Call(1); |
| 137 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 144 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 138 checkpoint.Call(2); | 145 checkpoint.Call(2); |
| 139 fetchDataLoader->cancel(); | 146 fetchDataLoader->cancel(); |
| 140 checkpoint.Call(3); | 147 checkpoint.Call(3); |
| 141 } | 148 } |
| 142 | 149 |
| 143 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType) | 150 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType) |
| 144 { | 151 { |
| 145 std::unique_ptr<BlobData> blobData = BlobData::create(); | 152 std::unique_ptr<BlobData> blobData = BlobData::create(); |
| 146 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul
l); | 153 blobData->appendBytes(kQuickBrownFox, kQuickBrownFoxLengthWithTerminatingNul
l); |
| 147 blobData->setContentType("text/test"); | 154 blobData->setContentType("text/test"); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 161 InSequence s; | 168 InSequence s; |
| 162 EXPECT_CALL(checkpoint, Call(1)); | 169 EXPECT_CALL(checkpoint, Call(1)); |
| 163 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); | 170 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); |
| 164 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); | 171 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); |
| 165 EXPECT_CALL(*reader, destruct()); | 172 EXPECT_CALL(*reader, destruct()); |
| 166 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); | 173 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); |
| 167 EXPECT_CALL(checkpoint, Call(2)); | 174 EXPECT_CALL(checkpoint, Call(2)); |
| 168 EXPECT_CALL(checkpoint, Call(3)); | 175 EXPECT_CALL(checkpoint, Call(3)); |
| 169 | 176 |
| 170 checkpoint.Call(1); | 177 checkpoint.Call(1); |
| 171 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 178 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 172 checkpoint.Call(2); | 179 checkpoint.Call(2); |
| 173 fetchDataLoader->cancel(); | 180 fetchDataLoader->cancel(); |
| 174 checkpoint.Call(3); | 181 checkpoint.Call(3); |
| 175 | 182 |
| 176 ASSERT_TRUE(blobDataHandle); | 183 ASSERT_TRUE(blobDataHandle); |
| 177 EXPECT_EQ(inputBlobDataHandle, blobDataHandle); | 184 EXPECT_EQ(inputBlobDataHandle, blobDataHandle); |
| 178 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); | 185 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); |
| 179 EXPECT_EQ(String("text/test"), blobDataHandle->type()); | 186 EXPECT_EQ(String("text/test"), blobDataHandle->type()); |
| 180 } | 187 } |
| 181 | 188 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 200 InSequence s; | 207 InSequence s; |
| 201 EXPECT_CALL(checkpoint, Call(1)); | 208 EXPECT_CALL(checkpoint, Call(1)); |
| 202 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); | 209 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); |
| 203 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); | 210 EXPECT_CALL(*reader, drainAsBlobDataHandle(kDisallowBlobWithInvalidSize)).Wi
llOnce(Return(inputBlobDataHandle)); |
| 204 EXPECT_CALL(*reader, destruct()); | 211 EXPECT_CALL(*reader, destruct()); |
| 205 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); | 212 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil
lOnce(SaveArg<0>(&blobDataHandle)); |
| 206 EXPECT_CALL(checkpoint, Call(2)); | 213 EXPECT_CALL(checkpoint, Call(2)); |
| 207 EXPECT_CALL(checkpoint, Call(3)); | 214 EXPECT_CALL(checkpoint, Call(3)); |
| 208 | 215 |
| 209 checkpoint.Call(1); | 216 checkpoint.Call(1); |
| 210 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 217 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 211 checkpoint.Call(2); | 218 checkpoint.Call(2); |
| 212 fetchDataLoader->cancel(); | 219 fetchDataLoader->cancel(); |
| 213 checkpoint.Call(3); | 220 checkpoint.Call(3); |
| 214 | 221 |
| 215 ASSERT_TRUE(blobDataHandle); | 222 ASSERT_TRUE(blobDataHandle); |
| 216 EXPECT_NE(inputBlobDataHandle, blobDataHandle); | 223 EXPECT_NE(inputBlobDataHandle, blobDataHandle); |
| 217 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); | 224 EXPECT_EQ(kQuickBrownFoxLengthWithTerminatingNull, blobDataHandle->size()); |
| 218 EXPECT_EQ(String("text/test"), blobDataHandle->type()); | 225 EXPECT_EQ(String("text/test"), blobDataHandle->type()); |
| 219 } | 226 } |
| 220 | 227 |
| 221 TEST(FetchDataLoaderTest, LoadAsArrayBuffer) | 228 TEST(FetchDataLoaderTest, LoadAsArrayBuffer) |
| 222 { | 229 { |
| 223 WebDataConsumerHandle::Client *client = nullptr; | 230 WebDataConsumerHandle::Client *client = nullptr; |
| 224 Checkpoint checkpoint; | 231 Checkpoint checkpoint; |
| 225 | 232 |
| 226 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 233 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 227 | 234 |
| 228 // |reader| will be adopted by |obtainFetchDataReader|. | 235 // |reader| will be adopted by |obtainFetchDataReader|. |
| 229 MockReader* reader = MockReader::create().release(); | 236 MockReader* reader = MockReader::create().release(); |
| 230 | 237 |
| 231 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); | 238 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); |
| 232 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 239 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 233 DOMArrayBuffer* arrayBuffer = nullptr; | 240 DOMArrayBuffer* arrayBuffer = nullptr; |
| 234 | 241 |
| 235 InSequence s; | 242 InSequence s; |
| 236 EXPECT_CALL(checkpoint, Call(1)); | 243 EXPECT_CALL(checkpoint, Call(1)); |
| 237 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 244 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 245 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 238 EXPECT_CALL(checkpoint, Call(2)); | 246 EXPECT_CALL(checkpoint, Call(2)); |
| 247 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 239 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 248 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 240 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 249 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 241 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 250 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 242 EXPECT_CALL(*reader, destruct()); | 251 EXPECT_CALL(*reader, destruct()); |
| 243 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi
llOnce(SaveArg<0>(&arrayBuffer)); | 252 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi
llOnce(SaveArg<0>(&arrayBuffer)); |
| 244 EXPECT_CALL(checkpoint, Call(3)); | 253 EXPECT_CALL(checkpoint, Call(3)); |
| 245 EXPECT_CALL(checkpoint, Call(4)); | 254 EXPECT_CALL(checkpoint, Call(4)); |
| 246 | 255 |
| 247 checkpoint.Call(1); | 256 checkpoint.Call(1); |
| 248 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 257 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 249 checkpoint.Call(2); | 258 checkpoint.Call(2); |
| 250 ASSERT_TRUE(client); | 259 ASSERT_TRUE(client); |
| 251 client->didGetReadable(); | 260 client->didGetReadable(); |
| 252 checkpoint.Call(3); | 261 checkpoint.Call(3); |
| 253 fetchDataLoader->cancel(); | 262 fetchDataLoader->cancel(); |
| 254 checkpoint.Call(4); | 263 checkpoint.Call(4); |
| 255 | 264 |
| 256 ASSERT_TRUE(arrayBuffer); | 265 ASSERT_TRUE(arrayBuffer); |
| 257 ASSERT_EQ(kQuickBrownFoxLengthWithTerminatingNull, arrayBuffer->byteLength()
); | 266 ASSERT_EQ(kQuickBrownFoxLengthWithTerminatingNull, arrayBuffer->byteLength()
); |
| 258 EXPECT_STREQ(kQuickBrownFox, static_cast<const char*>(arrayBuffer->data())); | 267 EXPECT_STREQ(kQuickBrownFox, static_cast<const char*>(arrayBuffer->data())); |
| 259 } | 268 } |
| 260 | 269 |
| 261 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed) | 270 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed) |
| 262 { | 271 { |
| 263 WebDataConsumerHandle::Client *client = nullptr; | 272 WebDataConsumerHandle::Client *client = nullptr; |
| 264 Checkpoint checkpoint; | 273 Checkpoint checkpoint; |
| 265 | 274 |
| 266 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 275 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 267 | 276 |
| 268 // |reader| will be adopted by |obtainFetchDataReader|. | 277 // |reader| will be adopted by |obtainFetchDataReader|. |
| 269 MockReader* reader = MockReader::create().release(); | 278 MockReader* reader = MockReader::create().release(); |
| 270 | 279 |
| 271 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); | 280 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); |
| 272 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 281 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 273 | 282 |
| 274 InSequence s; | 283 InSequence s; |
| 275 EXPECT_CALL(checkpoint, Call(1)); | 284 EXPECT_CALL(checkpoint, Call(1)); |
| 276 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 285 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 286 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 277 EXPECT_CALL(checkpoint, Call(2)); | 287 EXPECT_CALL(checkpoint, Call(2)); |
| 288 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 278 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); | 289 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
hWithTerminatingNull), Return(kOk))); |
| 279 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 290 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 280 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); | 291 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); |
| 281 EXPECT_CALL(*reader, destruct()); | 292 EXPECT_CALL(*reader, destruct()); |
| 282 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); | 293 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); |
| 283 EXPECT_CALL(checkpoint, Call(3)); | 294 EXPECT_CALL(checkpoint, Call(3)); |
| 284 EXPECT_CALL(checkpoint, Call(4)); | 295 EXPECT_CALL(checkpoint, Call(4)); |
| 285 | 296 |
| 286 checkpoint.Call(1); | 297 checkpoint.Call(1); |
| 287 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 298 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 288 checkpoint.Call(2); | 299 checkpoint.Call(2); |
| 289 ASSERT_TRUE(client); | 300 ASSERT_TRUE(client); |
| 290 client->didGetReadable(); | 301 client->didGetReadable(); |
| 291 checkpoint.Call(3); | 302 checkpoint.Call(3); |
| 292 fetchDataLoader->cancel(); | 303 fetchDataLoader->cancel(); |
| 293 checkpoint.Call(4); | 304 checkpoint.Call(4); |
| 294 } | 305 } |
| 295 | 306 |
| 296 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel) | 307 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel) |
| 297 { | 308 { |
| 298 Checkpoint checkpoint; | 309 Checkpoint checkpoint; |
| 299 | 310 |
| 300 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 311 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 301 | 312 |
| 302 // |reader| will be adopted by |obtainFetchDataReader|. | 313 // |reader| will be adopted by |obtainFetchDataReader|. |
| 303 MockReader* reader = MockReader::create().release(); | 314 MockReader* reader = MockReader::create().release(); |
| 304 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); | 315 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe
r(); |
| 305 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 316 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 306 | 317 |
| 307 InSequence s; | 318 InSequence s; |
| 308 EXPECT_CALL(checkpoint, Call(1)); | 319 EXPECT_CALL(checkpoint, Call(1)); |
| 309 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); | 320 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); |
| 321 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 310 EXPECT_CALL(checkpoint, Call(2)); | 322 EXPECT_CALL(checkpoint, Call(2)); |
| 311 EXPECT_CALL(*reader, destruct()); | 323 EXPECT_CALL(*reader, destruct()); |
| 312 EXPECT_CALL(checkpoint, Call(3)); | 324 EXPECT_CALL(checkpoint, Call(3)); |
| 313 | 325 |
| 314 checkpoint.Call(1); | 326 checkpoint.Call(1); |
| 315 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 327 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 316 checkpoint.Call(2); | 328 checkpoint.Call(2); |
| 317 fetchDataLoader->cancel(); | 329 fetchDataLoader->cancel(); |
| 318 checkpoint.Call(3); | 330 checkpoint.Call(3); |
| 319 } | 331 } |
| 320 | 332 |
| 321 TEST(FetchDataLoaderTest, LoadAsString) | 333 TEST(FetchDataLoaderTest, LoadAsString) |
| 322 { | 334 { |
| 323 WebDataConsumerHandle::Client *client = nullptr; | 335 WebDataConsumerHandle::Client *client = nullptr; |
| 324 Checkpoint checkpoint; | 336 Checkpoint checkpoint; |
| 325 | 337 |
| 326 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 338 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 327 | 339 |
| 328 // |reader| will be adopted by |obtainFetchDataReader|. | 340 // |reader| will be adopted by |obtainFetchDataReader|. |
| 329 MockReader* reader = MockReader::create().release(); | 341 MockReader* reader = MockReader::create().release(); |
| 330 | 342 |
| 331 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 343 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 332 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 344 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 333 | 345 |
| 334 InSequence s; | 346 InSequence s; |
| 335 EXPECT_CALL(checkpoint, Call(1)); | 347 EXPECT_CALL(checkpoint, Call(1)); |
| 336 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 348 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 349 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 337 EXPECT_CALL(checkpoint, Call(2)); | 350 EXPECT_CALL(checkpoint, Call(2)); |
| 351 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 338 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); | 352 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); |
| 339 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); | 353 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); |
| 340 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 354 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 341 EXPECT_CALL(*reader, destruct()); | 355 EXPECT_CALL(*reader, destruct()); |
| 342 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String(kQuickBr
ownFox))); | 356 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String(kQuickBr
ownFox))); |
| 343 EXPECT_CALL(checkpoint, Call(3)); | 357 EXPECT_CALL(checkpoint, Call(3)); |
| 344 EXPECT_CALL(checkpoint, Call(4)); | 358 EXPECT_CALL(checkpoint, Call(4)); |
| 345 | 359 |
| 346 checkpoint.Call(1); | 360 checkpoint.Call(1); |
| 347 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 361 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 348 checkpoint.Call(2); | 362 checkpoint.Call(2); |
| 349 ASSERT_TRUE(client); | 363 ASSERT_TRUE(client); |
| 350 client->didGetReadable(); | 364 client->didGetReadable(); |
| 351 checkpoint.Call(3); | 365 checkpoint.Call(3); |
| 352 fetchDataLoader->cancel(); | 366 fetchDataLoader->cancel(); |
| 353 checkpoint.Call(4); | 367 checkpoint.Call(4); |
| 354 } | 368 } |
| 355 | 369 |
| 356 TEST(FetchDataLoaderTest, LoadAsStringWithNullBytes) | 370 TEST(FetchDataLoaderTest, LoadAsStringWithNullBytes) |
| 357 { | 371 { |
| 358 WebDataConsumerHandle::Client *client = nullptr; | 372 WebDataConsumerHandle::Client *client = nullptr; |
| 359 Checkpoint checkpoint; | 373 Checkpoint checkpoint; |
| 360 | 374 |
| 361 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 375 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 362 | 376 |
| 363 // |reader| will be adopted by |obtainFetchDataReader|. | 377 // |reader| will be adopted by |obtainFetchDataReader|. |
| 364 MockReader* reader = MockReader::create().release(); | 378 MockReader* reader = MockReader::create().release(); |
| 365 | 379 |
| 366 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 380 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 367 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 381 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 368 | 382 |
| 369 InSequence s; | 383 InSequence s; |
| 370 EXPECT_CALL(checkpoint, Call(1)); | 384 EXPECT_CALL(checkpoint, Call(1)); |
| 371 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 385 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 386 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 372 EXPECT_CALL(checkpoint, Call(2)); | 387 EXPECT_CALL(checkpoint, Call(2)); |
| 388 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 373 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>("Quick\0brown\0fox")), SetArgPointee<2>(16), Return(kO
k))); | 389 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>("Quick\0brown\0fox")), SetArgPointee<2>(16), Return(kO
k))); |
| 374 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); | 390 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLengthWithTerminatingNull)).WillO
nce(Return(kOk)); |
| 375 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); | 391 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone)); |
| 376 EXPECT_CALL(*reader, destruct()); | 392 EXPECT_CALL(*reader, destruct()); |
| 377 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick\0
brown\0fox", 16))); | 393 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick\0
brown\0fox", 16))); |
| 378 EXPECT_CALL(checkpoint, Call(3)); | 394 EXPECT_CALL(checkpoint, Call(3)); |
| 379 EXPECT_CALL(checkpoint, Call(4)); | 395 EXPECT_CALL(checkpoint, Call(4)); |
| 380 | 396 |
| 381 checkpoint.Call(1); | 397 checkpoint.Call(1); |
| 382 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 398 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 383 checkpoint.Call(2); | 399 checkpoint.Call(2); |
| 384 ASSERT_TRUE(client); | 400 ASSERT_TRUE(client); |
| 385 client->didGetReadable(); | 401 client->didGetReadable(); |
| 386 checkpoint.Call(3); | 402 checkpoint.Call(3); |
| 387 fetchDataLoader->cancel(); | 403 fetchDataLoader->cancel(); |
| 388 checkpoint.Call(4); | 404 checkpoint.Call(4); |
| 389 } | 405 } |
| 390 | 406 |
| 391 TEST(FetchDataLoaderTest, LoadAsStringError) | 407 TEST(FetchDataLoaderTest, LoadAsStringError) |
| 392 { | 408 { |
| 393 WebDataConsumerHandle::Client *client = nullptr; | 409 WebDataConsumerHandle::Client *client = nullptr; |
| 394 Checkpoint checkpoint; | 410 Checkpoint checkpoint; |
| 395 | 411 |
| 396 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 412 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 397 | 413 |
| 398 // |reader| will be adopted by |obtainFetchDataReader|. | 414 // |reader| will be adopted by |obtainFetchDataReader|. |
| 399 MockReader* reader = MockReader::create().release(); | 415 MockReader* reader = MockReader::create().release(); |
| 400 | 416 |
| 401 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 417 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 402 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 418 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 403 | 419 |
| 404 InSequence s; | 420 InSequence s; |
| 405 EXPECT_CALL(checkpoint, Call(1)); | 421 EXPECT_CALL(checkpoint, Call(1)); |
| 406 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); | 422 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(DoAll(SaveArg<0>(&cl
ient), Return(ByMove(WTF::wrapUnique(reader))))); |
| 423 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 407 EXPECT_CALL(checkpoint, Call(2)); | 424 EXPECT_CALL(checkpoint, Call(2)); |
| 425 EXPECT_CALL(*reader, read(nullptr, kNone, 0, _)).WillOnce(DoAll(SetArgPointe
e<3>(0), Return(kShouldWait))); |
| 408 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); | 426 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(static_cast<const void*>(kQuickBrownFox)), SetArgPointee<2>(kQuickBrownFoxLengt
h), Return(kOk))); |
| 409 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); | 427 EXPECT_CALL(*reader, endRead(kQuickBrownFoxLength)).WillOnce(Return(kOk)); |
| 410 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); | 428 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro
r)); |
| 411 EXPECT_CALL(*reader, destruct()); | 429 EXPECT_CALL(*reader, destruct()); |
| 412 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); | 430 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed()); |
| 413 EXPECT_CALL(checkpoint, Call(3)); | 431 EXPECT_CALL(checkpoint, Call(3)); |
| 414 EXPECT_CALL(checkpoint, Call(4)); | 432 EXPECT_CALL(checkpoint, Call(4)); |
| 415 | 433 |
| 416 checkpoint.Call(1); | 434 checkpoint.Call(1); |
| 417 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 435 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 418 checkpoint.Call(2); | 436 checkpoint.Call(2); |
| 419 ASSERT_TRUE(client); | 437 ASSERT_TRUE(client); |
| 420 client->didGetReadable(); | 438 client->didGetReadable(); |
| 421 checkpoint.Call(3); | 439 checkpoint.Call(3); |
| 422 fetchDataLoader->cancel(); | 440 fetchDataLoader->cancel(); |
| 423 checkpoint.Call(4); | 441 checkpoint.Call(4); |
| 424 } | 442 } |
| 425 | 443 |
| 426 TEST(FetchDataLoaderTest, LoadAsStringCancel) | 444 TEST(FetchDataLoaderTest, LoadAsStringCancel) |
| 427 { | 445 { |
| 428 Checkpoint checkpoint; | 446 Checkpoint checkpoint; |
| 429 | 447 |
| 430 std::unique_ptr<MockHandle> handle = MockHandle::create(); | 448 std::unique_ptr<MockHandle> handle = MockHandle::create(); |
| 431 | 449 |
| 432 // |reader| will be adopted by |obtainFetchDataReader|. | 450 // |reader| will be adopted by |obtainFetchDataReader|. |
| 433 MockReader* reader = MockReader::create().release(); | 451 MockReader* reader = MockReader::create().release(); |
| 434 | 452 |
| 435 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); | 453 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString(); |
| 436 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); | 454 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient
::create(); |
| 437 | 455 |
| 438 InSequence s; | 456 InSequence s; |
| 439 EXPECT_CALL(checkpoint, Call(1)); | 457 EXPECT_CALL(checkpoint, Call(1)); |
| 440 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); | 458 EXPECT_CALL(*handle, obtainFetchDataReader(_)).WillOnce(Return(ByMove(WTF::w
rapUnique(reader)))); |
| 459 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0>
(nullptr), SetArgPointee<2>(0), Return(kShouldWait))); |
| 441 EXPECT_CALL(checkpoint, Call(2)); | 460 EXPECT_CALL(checkpoint, Call(2)); |
| 442 EXPECT_CALL(*reader, destruct()); | 461 EXPECT_CALL(*reader, destruct()); |
| 443 EXPECT_CALL(checkpoint, Call(3)); | 462 EXPECT_CALL(checkpoint, Call(3)); |
| 444 | 463 |
| 445 checkpoint.Call(1); | 464 checkpoint.Call(1); |
| 446 fetchDataLoader->start(handle.get(), fetchDataLoaderClient); | 465 fetchDataLoader->start(new BytesConsumerForDataConsumerHandle(std::move(hand
le)), fetchDataLoaderClient); |
| 447 checkpoint.Call(2); | 466 checkpoint.Call(2); |
| 448 fetchDataLoader->cancel(); | 467 fetchDataLoader->cancel(); |
| 449 checkpoint.Call(3); | 468 checkpoint.Call(3); |
| 450 } | 469 } |
| 451 | 470 |
| 452 } // namespace | 471 } // namespace |
| 453 | 472 |
| 454 } // namespace blink | 473 } // namespace blink |
| OLD | NEW |