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

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

Issue 2177243002: Use per-frame TaskRunner instead of thread's default in DataConsumerHandle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@data_consumer_handle_unique_ptr
Patch Set: update Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/fetch/FetchBlobDataConsumerHandle.h" 5 #include "modules/fetch/FetchBlobDataConsumerHandle.h"
6 6
7 #include "core/dom/ExecutionContext.h" 7 #include "core/dom/ExecutionContext.h"
8 #include "core/fetch/ResourceLoaderOptions.h" 8 #include "core/fetch/ResourceLoaderOptions.h"
9 #include "core/loader/MockThreadableLoader.h" 9 #include "core/loader/MockThreadableLoader.h"
10 #include "core/loader/ThreadableLoaderClient.h" 10 #include "core/loader/ThreadableLoaderClient.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 EXPECT_CALL(*loaderPtr, start(_)).WillOnce(SaveArg<0>(&request)); 112 EXPECT_CALL(*loaderPtr, start(_)).WillOnce(SaveArg<0>(&request));
113 EXPECT_CALL(checkpoint, Call(2)); 113 EXPECT_CALL(checkpoint, Call(2));
114 EXPECT_CALL(*loaderPtr, cancel()); 114 EXPECT_CALL(*loaderPtr, cancel());
115 115
116 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 116 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
117 std::unique_ptr<WebDataConsumerHandle> handle 117 std::unique_ptr<WebDataConsumerHandle> handle
118 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 118 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
119 testing::runPendingTasks(); 119 testing::runPendingTasks();
120 120
121 size_t size = 0; 121 size_t size = 0;
122 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 122 handle->obtainReader(nullptr, getCurrentTaskRunner())->read(nullptr, 0, kNon e, &size);
123 checkpoint.Call(1); 123 checkpoint.Call(1);
124 testing::runPendingTasks(); 124 testing::runPendingTasks();
125 checkpoint.Call(2); 125 checkpoint.Call(2);
126 126
127 EXPECT_TRUE(request.url().getString().startsWith("blob:")); 127 EXPECT_TRUE(request.url().getString().startsWith("blob:"));
128 EXPECT_TRUE(request.useStreamOnResponse()); 128 EXPECT_TRUE(request.useStreamOnResponse());
129 129
130 EXPECT_EQ(ConsiderPreflight, options.preflightPolicy); 130 EXPECT_EQ(ConsiderPreflight, options.preflightPolicy);
131 EXPECT_EQ(DenyCrossOriginRequests, options.crossOriginRequestPolicy); 131 EXPECT_EQ(DenyCrossOriginRequests, options.crossOriginRequestPolicy);
132 EXPECT_EQ(DoNotEnforceContentSecurityPolicy, options.contentSecurityPolicyEn forcement); 132 EXPECT_EQ(DoNotEnforceContentSecurityPolicy, options.contentSecurityPolicyEn forcement);
(...skipping 22 matching lines...) Expand all
155 EXPECT_CALL(checkpoint, Call(2)); 155 EXPECT_CALL(checkpoint, Call(2));
156 EXPECT_CALL(*loaderPtr, cancel()); 156 EXPECT_CALL(*loaderPtr, cancel());
157 EXPECT_CALL(checkpoint, Call(3)); 157 EXPECT_CALL(checkpoint, Call(3));
158 158
159 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 159 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
160 std::unique_ptr<WebDataConsumerHandle> handle 160 std::unique_ptr<WebDataConsumerHandle> handle
161 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 161 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
162 testing::runPendingTasks(); 162 testing::runPendingTasks();
163 163
164 size_t size = 0; 164 size_t size = 0;
165 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 165 handle->obtainReader(nullptr, getCurrentTaskRunner())->read(nullptr, 0, kNon e, &size);
166 checkpoint.Call(1); 166 checkpoint.Call(1);
167 testing::runPendingTasks(); 167 testing::runPendingTasks();
168 checkpoint.Call(2); 168 checkpoint.Call(2);
169 document().stopActiveDOMObjects(); 169 document().stopActiveDOMObjects();
170 checkpoint.Call(3); 170 checkpoint.Call(3);
171 } 171 }
172 172
173 TEST_F(FetchBlobDataConsumerHandleTest, CancelLoaderWhenDestinationDetached) 173 TEST_F(FetchBlobDataConsumerHandleTest, CancelLoaderWhenDestinationDetached)
174 { 174 {
175 auto factory = new StrictMock<MockLoaderFactory>; 175 auto factory = new StrictMock<MockLoaderFactory>;
176 Checkpoint checkpoint; 176 Checkpoint checkpoint;
177 177
178 std::unique_ptr<MockThreadableLoader> loader = MockThreadableLoader::create( ); 178 std::unique_ptr<MockThreadableLoader> loader = MockThreadableLoader::create( );
179 MockThreadableLoader* loaderPtr = loader.get(); 179 MockThreadableLoader* loaderPtr = loader.get();
180 180
181 InSequence s; 181 InSequence s;
182 EXPECT_CALL(checkpoint, Call(1)); 182 EXPECT_CALL(checkpoint, Call(1));
183 EXPECT_CALL(*factory, createInternal(Ref(document()), _, _, _)).WillOnce(Ret urn(loader.release())); 183 EXPECT_CALL(*factory, createInternal(Ref(document()), _, _, _)).WillOnce(Ret urn(loader.release()));
184 EXPECT_CALL(*loaderPtr, start(_)); 184 EXPECT_CALL(*loaderPtr, start(_));
185 EXPECT_CALL(checkpoint, Call(2)); 185 EXPECT_CALL(checkpoint, Call(2));
186 EXPECT_CALL(checkpoint, Call(3)); 186 EXPECT_CALL(checkpoint, Call(3));
187 EXPECT_CALL(*loaderPtr, cancel()); 187 EXPECT_CALL(*loaderPtr, cancel());
188 EXPECT_CALL(checkpoint, Call(4)); 188 EXPECT_CALL(checkpoint, Call(4));
189 189
190 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 190 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
191 std::unique_ptr<WebDataConsumerHandle> handle 191 std::unique_ptr<WebDataConsumerHandle> handle
192 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 192 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
193 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr); 193 std::unique_ptr<WebDataConsumerHandle::Reader> reader = handle->obtainReader (nullptr, getCurrentTaskRunner());
194 testing::runPendingTasks(); 194 testing::runPendingTasks();
195 195
196 size_t size = 0; 196 size_t size = 0;
197 reader->read(nullptr, 0, kNone, &size); 197 reader->read(nullptr, 0, kNone, &size);
198 checkpoint.Call(1); 198 checkpoint.Call(1);
199 testing::runPendingTasks(); 199 testing::runPendingTasks();
200 checkpoint.Call(2); 200 checkpoint.Call(2);
201 handle = nullptr; 201 handle = nullptr;
202 reader = nullptr; 202 reader = nullptr;
203 checkpoint.Call(3); 203 checkpoint.Call(3);
(...skipping 22 matching lines...) Expand all
226 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 226 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
227 227
228 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); 228 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create();
229 src->add(Command(Command::Wait)); 229 src->add(Command(Command::Wait));
230 src->add(Command(Command::Data, "hello, ")); 230 src->add(Command(Command::Data, "hello, "));
231 src->add(Command(Command::Data, "world")); 231 src->add(Command(Command::Data, "world"));
232 src->add(Command(Command::Wait)); 232 src->add(Command(Command::Wait));
233 src->add(Command(Command::Done)); 233 src->add(Command(Command::Done));
234 234
235 size_t size = 0; 235 size_t size = 0;
236 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 236 handle->obtainReader(nullptr, getCurrentTaskRunner())->read(nullptr, 0, kNon e, &size);
237 checkpoint.Call(1); 237 checkpoint.Call(1);
238 testing::runPendingTasks(); 238 testing::runPendingTasks();
239 checkpoint.Call(2); 239 checkpoint.Call(2);
240 client->didReceiveResponse(0, ResourceResponse(), std::move(src)); 240 client->didReceiveResponse(0, ResourceResponse(), std::move(src));
241 HandleReaderRunner<HandleReader> runner(std::move(handle)); 241 HandleReaderRunner<HandleReader> runner(std::move(handle));
242 std::unique_ptr<HandleReadResult> r = runner.wait(); 242 std::unique_ptr<HandleReadResult> r = runner.wait();
243 EXPECT_EQ(kDone, r->result()); 243 EXPECT_EQ(kDone, r->result());
244 EXPECT_EQ("hello, world", toString(r->data())); 244 EXPECT_EQ("hello, world", toString(r->data()));
245 } 245 }
246 246
(...skipping 18 matching lines...) Expand all
265 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 265 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
266 266
267 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); 267 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create();
268 src->add(Command(Command::Wait)); 268 src->add(Command(Command::Wait));
269 src->add(Command(Command::Data, "hello, ")); 269 src->add(Command(Command::Data, "hello, "));
270 src->add(Command(Command::Data, "world")); 270 src->add(Command(Command::Data, "world"));
271 src->add(Command(Command::Wait)); 271 src->add(Command(Command::Wait));
272 src->add(Command(Command::Done)); 272 src->add(Command(Command::Done));
273 273
274 size_t size = 0; 274 size_t size = 0;
275 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 275 handle->obtainReader(nullptr, getCurrentTaskRunner())->read(nullptr, 0, kNon e, &size);
276 checkpoint.Call(1); 276 checkpoint.Call(1);
277 testing::runPendingTasks(); 277 testing::runPendingTasks();
278 checkpoint.Call(2); 278 checkpoint.Call(2);
279 client->didReceiveResponse(0, ResourceResponse(), std::move(src)); 279 client->didReceiveResponse(0, ResourceResponse(), std::move(src));
280 HandleReaderRunner<HandleTwoPhaseReader> runner(std::move(handle)); 280 HandleReaderRunner<HandleTwoPhaseReader> runner(std::move(handle));
281 std::unique_ptr<HandleReadResult> r = runner.wait(); 281 std::unique_ptr<HandleReadResult> r = runner.wait();
282 EXPECT_EQ(kDone, r->result()); 282 EXPECT_EQ(kDone, r->result());
283 EXPECT_EQ("hello, world", toString(r->data())); 283 EXPECT_EQ("hello, world", toString(r->data()));
284 } 284 }
285 285
(...skipping 10 matching lines...) Expand all
296 EXPECT_CALL(checkpoint, Call(1)); 296 EXPECT_CALL(checkpoint, Call(1));
297 EXPECT_CALL(*factory, createInternal(Ref(document()), _, _, _)).WillOnce(DoA ll(SaveArg<1>(&client), Return(loader.release()))); 297 EXPECT_CALL(*factory, createInternal(Ref(document()), _, _, _)).WillOnce(DoA ll(SaveArg<1>(&client), Return(loader.release())));
298 EXPECT_CALL(*loaderPtr, start(_)); 298 EXPECT_CALL(*loaderPtr, start(_));
299 EXPECT_CALL(checkpoint, Call(2)); 299 EXPECT_CALL(checkpoint, Call(2));
300 300
301 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 301 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
302 std::unique_ptr<WebDataConsumerHandle> handle 302 std::unique_ptr<WebDataConsumerHandle> handle
303 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 303 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
304 304
305 size_t size = 0; 305 size_t size = 0;
306 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 306 handle->obtainReader(nullptr, getCurrentTaskRunner())->read(nullptr, 0, kNon e, &size);
307 checkpoint.Call(1); 307 checkpoint.Call(1);
308 testing::runPendingTasks(); 308 testing::runPendingTasks();
309 checkpoint.Call(2); 309 checkpoint.Call(2);
310 client->didFail(ResourceError()); 310 client->didFail(ResourceError());
311 HandleReaderRunner<HandleReader> runner(std::move(handle)); 311 HandleReaderRunner<HandleReader> runner(std::move(handle));
312 std::unique_ptr<HandleReadResult> r = runner.wait(); 312 std::unique_ptr<HandleReadResult> r = runner.wait();
313 EXPECT_EQ(kUnexpectedError, r->result()); 313 EXPECT_EQ(kUnexpectedError, r->result());
314 } 314 }
315 315
316 TEST_F(FetchBlobDataConsumerHandleTest, BodyLoadErrorTest) 316 TEST_F(FetchBlobDataConsumerHandleTest, BodyLoadErrorTest)
(...skipping 15 matching lines...) Expand all
332 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 332 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
333 std::unique_ptr<WebDataConsumerHandle> handle 333 std::unique_ptr<WebDataConsumerHandle> handle
334 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 334 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
335 335
336 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create(); 336 std::unique_ptr<ReplayingHandle> src = ReplayingHandle::create();
337 src->add(Command(Command::Wait)); 337 src->add(Command(Command::Wait));
338 src->add(Command(Command::Data, "hello, ")); 338 src->add(Command(Command::Data, "hello, "));
339 src->add(Command(Command::Error)); 339 src->add(Command(Command::Error));
340 340
341 size_t size = 0; 341 size_t size = 0;
342 handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &size); 342 handle->obtainReader(nullptr, getCurrentTaskRunner())->read(nullptr, 0, kNon e, &size);
343 checkpoint.Call(1); 343 checkpoint.Call(1);
344 testing::runPendingTasks(); 344 testing::runPendingTasks();
345 checkpoint.Call(2); 345 checkpoint.Call(2);
346 client->didReceiveResponse(0, ResourceResponse(), std::move(src)); 346 client->didReceiveResponse(0, ResourceResponse(), std::move(src));
347 HandleReaderRunner<HandleReader> runner(std::move(handle)); 347 HandleReaderRunner<HandleReader> runner(std::move(handle));
348 std::unique_ptr<HandleReadResult> r = runner.wait(); 348 std::unique_ptr<HandleReadResult> r = runner.wait();
349 EXPECT_EQ(kUnexpectedError, r->result()); 349 EXPECT_EQ(kUnexpectedError, r->result());
350 } 350 }
351 351
352 TEST_F(FetchBlobDataConsumerHandleTest, DrainAsBlobDataHandle) 352 TEST_F(FetchBlobDataConsumerHandleTest, DrainAsBlobDataHandle)
353 { 353 {
354 auto factory = new StrictMock<MockLoaderFactory>; 354 auto factory = new StrictMock<MockLoaderFactory>;
355 355
356 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 356 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
357 std::unique_ptr<FetchDataConsumerHandle> handle 357 std::unique_ptr<FetchDataConsumerHandle> handle
358 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 358 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
359 359
360 size_t size = 0; 360 size_t size = 0;
361 EXPECT_EQ(blobDataHandle, handle->obtainFetchDataReader(nullptr)->drainAsBlo bDataHandle()); 361 EXPECT_EQ(blobDataHandle, handle->obtainFetchDataReader(nullptr, getCurrentT askRunner())->drainAsBlobDataHandle());
362 EXPECT_FALSE(handle->obtainFetchDataReader(nullptr)->drainAsFormData()); 362 EXPECT_FALSE(handle->obtainFetchDataReader(nullptr, getCurrentTaskRunner())- >drainAsFormData());
363 363
364 EXPECT_EQ(kDone, handle->obtainReader(nullptr)->read(nullptr, 0, kNone, &siz e)); 364 EXPECT_EQ(kDone, handle->obtainReader(nullptr, getCurrentTaskRunner())->read (nullptr, 0, kNone, &size));
365 } 365 }
366 366
367 TEST_F(FetchBlobDataConsumerHandleTest, DrainAsFormData) 367 TEST_F(FetchBlobDataConsumerHandleTest, DrainAsFormData)
368 { 368 {
369 auto factory = new StrictMock<MockLoaderFactory>; 369 auto factory = new StrictMock<MockLoaderFactory>;
370 370
371 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 371 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
372 std::unique_ptr<FetchDataConsumerHandle> handle 372 std::unique_ptr<FetchDataConsumerHandle> handle
373 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 373 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
374 374
375 RefPtr<EncodedFormData> formData = handle->obtainFetchDataReader(nullptr)->d rainAsFormData(); 375 RefPtr<EncodedFormData> formData = handle->obtainFetchDataReader(nullptr, ge tCurrentTaskRunner())->drainAsFormData();
376 ASSERT_TRUE(formData); 376 ASSERT_TRUE(formData);
377 EXPECT_TRUE(formData->isSafeToSendToAnotherThread()); 377 EXPECT_TRUE(formData->isSafeToSendToAnotherThread());
378 ASSERT_EQ(1u, formData->elements().size()); 378 ASSERT_EQ(1u, formData->elements().size());
379 EXPECT_EQ(FormDataElement::encodedBlob, formData->elements()[0].m_type); 379 EXPECT_EQ(FormDataElement::encodedBlob, formData->elements()[0].m_type);
380 EXPECT_EQ(blobDataHandle->uuid(), formData->elements()[0].m_blobUUID); 380 EXPECT_EQ(blobDataHandle->uuid(), formData->elements()[0].m_blobUUID);
381 EXPECT_EQ(blobDataHandle, formData->elements()[0].m_optionalBlobDataHandle); 381 EXPECT_EQ(blobDataHandle, formData->elements()[0].m_optionalBlobDataHandle);
382 382
383 EXPECT_FALSE(handle->obtainFetchDataReader(nullptr)->drainAsBlobDataHandle() ); 383 EXPECT_FALSE(handle->obtainFetchDataReader(nullptr, getCurrentTaskRunner())- >drainAsBlobDataHandle());
384 size_t size; 384 size_t size;
385 EXPECT_EQ(kDone, handle->obtainFetchDataReader(nullptr)->read(nullptr, 0, kN one, &size)); 385 EXPECT_EQ(kDone, handle->obtainFetchDataReader(nullptr, getCurrentTaskRunner ())->read(nullptr, 0, kNone, &size));
386 } 386 }
387 387
388 TEST_F(FetchBlobDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining) 388 TEST_F(FetchBlobDataConsumerHandleTest, ZeroByteReadDoesNotAffectDraining)
389 { 389 {
390 auto factory = new StrictMock<MockLoaderFactory>; 390 auto factory = new StrictMock<MockLoaderFactory>;
391 391
392 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 392 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
393 std::unique_ptr<FetchDataConsumerHandle> handle 393 std::unique_ptr<FetchDataConsumerHandle> handle
394 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 394 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
395 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc hDataReader(nullptr); 395 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc hDataReader(nullptr, getCurrentTaskRunner());
396 396
397 size_t readSize; 397 size_t readSize;
398 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize)); 398 EXPECT_EQ(kShouldWait, reader->read(nullptr, 0, kNone, &readSize));
399 EXPECT_EQ(blobDataHandle, reader->drainAsBlobDataHandle()); 399 EXPECT_EQ(blobDataHandle, reader->drainAsBlobDataHandle());
400 } 400 }
401 401
402 TEST_F(FetchBlobDataConsumerHandleTest, OneByteReadAffectsDraining) 402 TEST_F(FetchBlobDataConsumerHandleTest, OneByteReadAffectsDraining)
403 { 403 {
404 auto factory = new StrictMock<MockLoaderFactory>; 404 auto factory = new StrictMock<MockLoaderFactory>;
405 405
406 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 406 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
407 std::unique_ptr<FetchDataConsumerHandle> handle 407 std::unique_ptr<FetchDataConsumerHandle> handle
408 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 408 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
409 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc hDataReader(nullptr); 409 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc hDataReader(nullptr, getCurrentTaskRunner());
410 410
411 size_t readSize; 411 size_t readSize;
412 char c; 412 char c;
413 EXPECT_EQ(kShouldWait, reader->read(&c, 1, kNone, &readSize)); 413 EXPECT_EQ(kShouldWait, reader->read(&c, 1, kNone, &readSize));
414 EXPECT_FALSE(reader->drainAsFormData()); 414 EXPECT_FALSE(reader->drainAsFormData());
415 } 415 }
416 416
417 TEST_F(FetchBlobDataConsumerHandleTest, BeginReadAffectsDraining) 417 TEST_F(FetchBlobDataConsumerHandleTest, BeginReadAffectsDraining)
418 { 418 {
419 auto factory = new StrictMock<MockLoaderFactory>; 419 auto factory = new StrictMock<MockLoaderFactory>;
420 420
421 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me"); 421 RefPtr<BlobDataHandle> blobDataHandle = createBlobDataHandle("Once upon a ti me");
422 std::unique_ptr<FetchDataConsumerHandle> handle 422 std::unique_ptr<FetchDataConsumerHandle> handle
423 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry); 423 = FetchBlobDataConsumerHandle::create(&document(), blobDataHandle, facto ry);
424 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc hDataReader(nullptr); 424 std::unique_ptr<FetchDataConsumerHandle::Reader> reader = handle->obtainFetc hDataReader(nullptr, getCurrentTaskRunner());
425 425
426 const void* buffer; 426 const void* buffer;
427 size_t available; 427 size_t available;
428 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available)); 428 EXPECT_EQ(kShouldWait, reader->beginRead(&buffer, kNone, &available));
429 EXPECT_FALSE(reader->drainAsBlobDataHandle()); 429 EXPECT_FALSE(reader->drainAsBlobDataHandle());
430 } 430 }
431 431
432 } // namespace 432 } // namespace
433 } // namespace blink 433 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698