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

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

Issue 1179393007: [2a] Implement FetchDataLoader (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "modules/fetch/FetchDataLoader.h"
7
8 #include <gmock/gmock.h>
9 #include <gtest/gtest.h>
10
11 namespace blink {
12
13 namespace {
14
15 using ::testing::InSequence;
16 using ::testing::Return;
17 using ::testing::DoAll;
18 using ::testing::StrictMock;
19 using ::testing::_;
20 using ::testing::SaveArg;
21 using ::testing::SetArgPointee;
22 using Checkpoint = StrictMock<::testing::MockFunction<void(int)>>;
23
24 const WebDataConsumerHandle::Result kOk = WebDataConsumerHandle::Ok;
25 const WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle::Un expectedError;
26 const WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done;
27 const WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone;
28
29 class MockReader : public FetchDataConsumerHandle::Reader {
30 public:
31 static PassOwnPtr<StrictMock<MockReader>> create() { return adoptPtr(new Str ictMock<MockReader>); }
32
33 using Result = WebDataConsumerHandle::Result;
34 using Flags = WebDataConsumerHandle::Flags;
35 MOCK_METHOD4(read, Result(void*, size_t, Flags, size_t*));
36 MOCK_METHOD3(beginRead, Result(const void**, Flags, size_t*));
37 MOCK_METHOD1(endRead, Result(size_t));
38 MOCK_METHOD0(drainAsBlobDataHandle, PassRefPtr<BlobDataHandle>());
39
40 ~MockReader()
yhirano 2015/06/19 06:19:30 + override
hiroshige 2015/06/19 07:27:56 Done.
41 {
42 destruct();
43 }
44 MOCK_METHOD0(destruct, void());
45 };
46
47 class MockHandle : public FetchDataConsumerHandle {
48 public:
49 static PassOwnPtr<StrictMock<MockHandle>> create() { return adoptPtr(new Str ictMock<MockHandle>); }
50
51 MOCK_METHOD1(obtainReaderInternal, Reader*(Client*));
52 };
53
54 class MockFetchDataLoaderClient : public GarbageCollectedFinalized<MockFetchData LoaderClient>, public FetchDataLoader::Client {
55 USING_GARBAGE_COLLECTED_MIXIN(MockFetchDataLoaderClient);
56 public:
57 static StrictMock<MockFetchDataLoaderClient>* create() { return new StrictMo ck<MockFetchDataLoaderClient>; }
58
59 DEFINE_INLINE_VIRTUAL_TRACE()
60 {
61 FetchDataLoader::Client::trace(visitor);
62 }
63
64 MOCK_METHOD1(didFetchDataLoadedBlobHandleMock, void(RefPtr<BlobDataHandle>)) ;
65 MOCK_METHOD1(didFetchDataLoadedArrayBufferMock, void(RefPtr<DOMArrayBuffer>) );
66 MOCK_METHOD1(didFetchDataLoadedString, void(const String&));
67 MOCK_METHOD0(didFetchDataLoadFailed, void());
68
69 // In mock methods we use RefPtr<> rather than PassRefPtr<>.
70 void didFetchDataLoadedArrayBuffer(PassRefPtr<DOMArrayBuffer> arrayBuffer) o verride
71 {
72 didFetchDataLoadedArrayBufferMock(arrayBuffer);
73 }
74 void didFetchDataLoadedBlobHandle(PassRefPtr<BlobDataHandle> blobDataHandle) override
75 {
76 didFetchDataLoadedBlobHandleMock(blobDataHandle);
77 }
78 };
79
80 TEST(FetchDataLoaderTest, LoadAsBlob)
81 {
82 char buffer[16] = "Quick brown fox";
yhirano 2015/06/19 06:19:30 +const?
yhirano 2015/06/19 06:19:30 [optional] It would be good to decrease the magic
hiroshige 2015/06/19 07:27:56 I introduced kQuickBrownFox, kQuickBrownFoxLength,
hiroshige 2015/06/19 07:27:57 Done.
83 WebDataConsumerHandle::Client *client = nullptr;
84 Checkpoint checkpoint;
85
86 OwnPtr<MockHandle> handle = MockHandle::create();
87 OwnPtr<MockReader> reader = MockReader::create();
88 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
89 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
90 RefPtr<BlobDataHandle> blobDataHandle;
91
92 InSequence s;
93 EXPECT_CALL(checkpoint, Call(1));
94 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli ent), Return(reader.get())));
95 EXPECT_CALL(*reader, drainAsBlobDataHandle()).WillOnce(Return(nullptr));
96 EXPECT_CALL(checkpoint, Call(2));
97 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(buffer)), SetArgPointee<2>(16), Return(kOk)));
98 EXPECT_CALL(*reader, endRead(16)).WillOnce(Return(kOk));
99 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
100 EXPECT_CALL(*reader, destruct());
101 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle));
102 EXPECT_CALL(checkpoint, Call(3));
103 EXPECT_CALL(checkpoint, Call(4));
104
105 // |reader| is adopted by |obtainReader|.
106 ASSERT_TRUE(reader.leakPtr());
107
108 checkpoint.Call(1);
109 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
110 checkpoint.Call(2);
111 ASSERT_TRUE(client);
112 client->didGetReadable();
113 checkpoint.Call(3);
114 fetchDataLoader->cancel();
115 checkpoint.Call(4);
116
117 ASSERT_TRUE(blobDataHandle);
118 EXPECT_EQ(16ULL, blobDataHandle->size());
119 EXPECT_EQ(String("text/test"), blobDataHandle->type());
120 }
121
122 TEST(FetchDataLoaderTest, LoadAsBlobFailed)
123 {
124 char buffer[16] = "Quick brown fox";
125 WebDataConsumerHandle::Client *client = nullptr;
126 Checkpoint checkpoint;
127
128 OwnPtr<MockHandle> handle = MockHandle::create();
129 OwnPtr<MockReader> reader = MockReader::create();
130 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
131 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
132
133 InSequence s;
134 EXPECT_CALL(checkpoint, Call(1));
135 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli ent), Return(reader.get())));
136 EXPECT_CALL(*reader, drainAsBlobDataHandle()).WillOnce(Return(nullptr));
137 EXPECT_CALL(checkpoint, Call(2));
138 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(buffer)), SetArgPointee<2>(16), Return(kOk)));
139 EXPECT_CALL(*reader, endRead(16)).WillOnce(Return(kOk));
140 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
141 EXPECT_CALL(*reader, destruct());
142 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
143 EXPECT_CALL(checkpoint, Call(3));
144 EXPECT_CALL(checkpoint, Call(4));
145
146 // |reader| is adopted by |obtainReader|.
147 ASSERT_TRUE(reader.leakPtr());
148
149 checkpoint.Call(1);
150 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
151 checkpoint.Call(2);
152 ASSERT_TRUE(client);
153 client->didGetReadable();
154 checkpoint.Call(3);
155 fetchDataLoader->cancel();
156 checkpoint.Call(4);
157 }
158
159 TEST(FetchDataLoaderTest, LoadAsBlobCancel)
160 {
161 Checkpoint checkpoint;
162
163 OwnPtr<MockHandle> handle = MockHandle::create();
164 OwnPtr<MockReader> reader = MockReader::create();
165 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
166 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
167
168 InSequence s;
169 EXPECT_CALL(checkpoint, Call(1));
170 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get())) ;
171 EXPECT_CALL(*reader, drainAsBlobDataHandle()).WillOnce(Return(nullptr));
172 EXPECT_CALL(checkpoint, Call(2));
173 EXPECT_CALL(*reader, destruct());
174 EXPECT_CALL(checkpoint, Call(3));
175
176 // |reader| is adopted by |obtainReader|.
177 ASSERT_TRUE(reader.leakPtr());
178
179 checkpoint.Call(1);
180 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
181 checkpoint.Call(2);
182 fetchDataLoader->cancel();
183 checkpoint.Call(3);
184 }
185
186 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithSameContentType)
187 {
188 OwnPtr<BlobData> blobData = BlobData::create();
189 blobData->appendBytes("Quick brown fox", 16);
190 blobData->setContentType("text/test");
191 RefPtr<BlobDataHandle> inputBlobDataHandle = BlobDataHandle::create(blobData .release(), 16);
192
193 Checkpoint checkpoint;
194
195 OwnPtr<MockHandle> handle = MockHandle::create();
196 OwnPtr<MockReader> reader = MockReader::create();
197 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
198 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
199 RefPtr<BlobDataHandle> blobDataHandle;
200
201 InSequence s;
202 EXPECT_CALL(checkpoint, Call(1));
203 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get())) ;
204 EXPECT_CALL(*reader, drainAsBlobDataHandle()).WillOnce(Return(inputBlobDataH andle));
205 EXPECT_CALL(*reader, destruct());
206 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle));
207 EXPECT_CALL(checkpoint, Call(2));
208 EXPECT_CALL(checkpoint, Call(3));
209
210 // |reader| is adopted by |obtainReader|.
211 ASSERT_TRUE(reader.leakPtr());
212
213 checkpoint.Call(1);
214 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
215 checkpoint.Call(2);
216 fetchDataLoader->cancel();
217 checkpoint.Call(3);
218
219 ASSERT_TRUE(blobDataHandle);
220 EXPECT_EQ(inputBlobDataHandle, blobDataHandle);
221 EXPECT_EQ(16ULL, blobDataHandle->size());
222 EXPECT_EQ(String("text/test"), blobDataHandle->type());
223 }
224
225 TEST(FetchDataLoaderTest, LoadAsBlobViaDrainAsBlobDataHandleWithDifferentContent Type)
226 {
227 OwnPtr<BlobData> blobData = BlobData::create();
228 blobData->appendBytes("Quick brown fox", 16);
229 blobData->setContentType("text/different");
230 RefPtr<BlobDataHandle> inputBlobDataHandle = BlobDataHandle::create(blobData .release(), 16);
231
232 Checkpoint checkpoint;
233
234 OwnPtr<MockHandle> handle = MockHandle::create();
235 OwnPtr<MockReader> reader = MockReader::create();
236 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsBlobHandle ("text/test");
237 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
238 RefPtr<BlobDataHandle> blobDataHandle;
239
240 InSequence s;
241 EXPECT_CALL(checkpoint, Call(1));
242 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get())) ;
243 EXPECT_CALL(*reader, drainAsBlobDataHandle()).WillOnce(Return(inputBlobDataH andle));
244 EXPECT_CALL(*reader, destruct());
245 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedBlobHandleMock(_)).Wil lOnce(SaveArg<0>(&blobDataHandle));
246 EXPECT_CALL(checkpoint, Call(2));
247 EXPECT_CALL(checkpoint, Call(3));
248
249 // |reader| is adopted by |obtainReader|.
250 ASSERT_TRUE(reader.leakPtr());
251
252 checkpoint.Call(1);
253 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
254 checkpoint.Call(2);
255 fetchDataLoader->cancel();
256 checkpoint.Call(3);
257
258 ASSERT_TRUE(blobDataHandle);
259 EXPECT_NE(inputBlobDataHandle, blobDataHandle);
260 EXPECT_EQ(16ULL, blobDataHandle->size());
261 EXPECT_EQ(String("text/test"), blobDataHandle->type());
262 }
263
264 TEST(FetchDataLoaderTest, LoadAsArrayBuffer)
265 {
266 char buffer[16] = "Quick brown fox";
267 WebDataConsumerHandle::Client *client = nullptr;
268 Checkpoint checkpoint;
269
270 OwnPtr<MockHandle> handle = MockHandle::create();
271 OwnPtr<MockReader> reader = MockReader::create();
272 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r();
273 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
274 RefPtr<DOMArrayBuffer> arrayBuffer;
275
276 InSequence s;
277 EXPECT_CALL(checkpoint, Call(1));
278 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli ent), Return(reader.get())));
279 EXPECT_CALL(checkpoint, Call(2));
280 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(buffer)), SetArgPointee<2>(16), Return(kOk)));
281 EXPECT_CALL(*reader, endRead(16)).WillOnce(Return(kOk));
282 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
283 EXPECT_CALL(*reader, destruct());
284 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedArrayBufferMock(_)).Wi llOnce(SaveArg<0>(&arrayBuffer));
285 EXPECT_CALL(checkpoint, Call(3));
286 EXPECT_CALL(checkpoint, Call(4));
287
288 // |reader| is adopted by |obtainReader|.
289 ASSERT_TRUE(reader.leakPtr());
290
291 checkpoint.Call(1);
292 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
293 checkpoint.Call(2);
294 ASSERT_TRUE(client);
295 client->didGetReadable();
296 checkpoint.Call(3);
297 fetchDataLoader->cancel();
298 checkpoint.Call(4);
299
300 ASSERT_TRUE(arrayBuffer);
301 ASSERT_EQ(16U, arrayBuffer->byteLength());
302 EXPECT_STREQ("Quick brown fox", static_cast<const char*>(arrayBuffer->data() ));
303 }
304
305 TEST(FetchDataLoaderTest, LoadAsArrayBufferFailed)
306 {
307 char buffer[16] = "Quick brown fox";
308 WebDataConsumerHandle::Client *client = nullptr;
309 Checkpoint checkpoint;
310
311 OwnPtr<MockHandle> handle = MockHandle::create();
312 OwnPtr<MockReader> reader = MockReader::create();
313 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r();
314 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
315
316 InSequence s;
317 EXPECT_CALL(checkpoint, Call(1));
318 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli ent), Return(reader.get())));
319 EXPECT_CALL(checkpoint, Call(2));
320 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(buffer)), SetArgPointee<2>(16), Return(kOk)));
321 EXPECT_CALL(*reader, endRead(16)).WillOnce(Return(kOk));
322 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
323 EXPECT_CALL(*reader, destruct());
324 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
325 EXPECT_CALL(checkpoint, Call(3));
326 EXPECT_CALL(checkpoint, Call(4));
327
328 // |reader| is adopted by |obtainReader|.
329 ASSERT_TRUE(reader.leakPtr());
330
331 checkpoint.Call(1);
332 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
333 checkpoint.Call(2);
334 ASSERT_TRUE(client);
335 client->didGetReadable();
336 checkpoint.Call(3);
337 fetchDataLoader->cancel();
338 checkpoint.Call(4);
339 }
340
341 TEST(FetchDataLoaderTest, LoadAsArrayBufferCancel)
342 {
343 Checkpoint checkpoint;
344
345 OwnPtr<MockHandle> handle = MockHandle::create();
346 OwnPtr<MockReader> reader = MockReader::create();
347 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsArrayBuffe r();
348 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
349
350 InSequence s;
351 EXPECT_CALL(checkpoint, Call(1));
352 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get())) ;
353 EXPECT_CALL(checkpoint, Call(2));
354 EXPECT_CALL(*reader, destruct());
355 EXPECT_CALL(checkpoint, Call(3));
356
357 // |reader| is adopted by |obtainReader|.
358 ASSERT_TRUE(reader.leakPtr());
359
360 checkpoint.Call(1);
361 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
362 checkpoint.Call(2);
363 fetchDataLoader->cancel();
364 checkpoint.Call(3);
365 }
366
367 TEST(FetchDataLoaderTest, LoadAsString)
368 {
369 char buffer[16] = "Quick brown fox";
370 WebDataConsumerHandle::Client *client = nullptr;
371 Checkpoint checkpoint;
372
373 OwnPtr<MockHandle> handle = MockHandle::create();
374 OwnPtr<MockReader> reader = MockReader::create();
375 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
376 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
377
378 InSequence s;
379 EXPECT_CALL(checkpoint, Call(1));
380 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli ent), Return(reader.get())));
381 EXPECT_CALL(checkpoint, Call(2));
382 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(buffer)), SetArgPointee<2>(15), Return(kOk)));
383 EXPECT_CALL(*reader, endRead(15)).WillOnce(Return(kOk));
384 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kDone));
385 EXPECT_CALL(*reader, destruct());
386 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadedString(String("Quick b rown fox")));
387 EXPECT_CALL(checkpoint, Call(3));
388 EXPECT_CALL(checkpoint, Call(4));
389
390 // |reader| is adopted by |obtainReader|.
391 ASSERT_TRUE(reader.leakPtr());
392
393 checkpoint.Call(1);
394 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
395 checkpoint.Call(2);
396 ASSERT_TRUE(client);
397 client->didGetReadable();
398 checkpoint.Call(3);
399 fetchDataLoader->cancel();
400 checkpoint.Call(4);
401 }
402
403 TEST(FetchDataLoaderTest, LoadAsStringError)
404 {
405 char buffer[16] = "Quick brown fox";
406 WebDataConsumerHandle::Client *client = nullptr;
407 Checkpoint checkpoint;
408
409 OwnPtr<MockHandle> handle = MockHandle::create();
410 OwnPtr<MockReader> reader = MockReader::create();
411 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
412 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
413
414 InSequence s;
415 EXPECT_CALL(checkpoint, Call(1));
416 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(DoAll(SaveArg<0>(&cli ent), Return(reader.get())));
417 EXPECT_CALL(checkpoint, Call(2));
418 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(DoAll(SetArgPointee<0> (static_cast<const void*>(buffer)), SetArgPointee<2>(15), Return(kOk)));
419 EXPECT_CALL(*reader, endRead(15)).WillOnce(Return(kOk));
420 EXPECT_CALL(*reader, beginRead(_, kNone, _)).WillOnce(Return(kUnexpectedErro r));
421 EXPECT_CALL(*reader, destruct());
422 EXPECT_CALL(*fetchDataLoaderClient, didFetchDataLoadFailed());
423 EXPECT_CALL(checkpoint, Call(3));
424 EXPECT_CALL(checkpoint, Call(4));
425
426 // |reader| is adopted by |obtainReader|.
427 ASSERT_TRUE(reader.leakPtr());
428
429 checkpoint.Call(1);
430 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
431 checkpoint.Call(2);
432 ASSERT_TRUE(client);
433 client->didGetReadable();
434 checkpoint.Call(3);
435 fetchDataLoader->cancel();
436 checkpoint.Call(4);
437 }
438
439 TEST(FetchDataLoaderTest, LoadAsStringCancel)
440 {
441 Checkpoint checkpoint;
442
443 OwnPtr<MockHandle> handle = MockHandle::create();
444 OwnPtr<MockReader> reader = MockReader::create();
445 FetchDataLoader* fetchDataLoader = FetchDataLoader::createLoaderAsString();
446 MockFetchDataLoaderClient* fetchDataLoaderClient = MockFetchDataLoaderClient ::create();
447
448 InSequence s;
449 EXPECT_CALL(checkpoint, Call(1));
450 EXPECT_CALL(*handle, obtainReaderInternal(_)).WillOnce(Return(reader.get())) ;
451 EXPECT_CALL(checkpoint, Call(2));
452 EXPECT_CALL(*reader, destruct());
453 EXPECT_CALL(checkpoint, Call(3));
454
455 // |reader| is adopted by |obtainReader|.
456 ASSERT_TRUE(reader.leakPtr());
457
458 checkpoint.Call(1);
459 fetchDataLoader->start(handle.get(), fetchDataLoaderClient);
460 checkpoint.Call(2);
461 fetchDataLoader->cancel();
462 checkpoint.Call(3);
463 }
464
465 } // namespace
466
467 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698