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 |