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

Side by Side Diff: third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp

Issue 2225733002: Revert of Move ThreadableLoader to Oilpan heap (3/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@onheap-threadable-loader
Patch Set: 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
« no previous file with comments | « third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 DCHECK(client); 217 DCHECK(client);
218 } 218 }
219 219
220 void WorkerThreadableLoader::loadResourceSynchronously(WorkerGlobalScope& worker GlobalScope, const ResourceRequest& request, ThreadableLoaderClient& client, con st ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoader Options) 220 void WorkerThreadableLoader::loadResourceSynchronously(WorkerGlobalScope& worker GlobalScope, const ResourceRequest& request, ThreadableLoaderClient& client, con st ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoader Options)
221 { 221 {
222 (new WorkerThreadableLoader(workerGlobalScope, &client, options, resourceLoa derOptions, LoadSynchronously))->start(request); 222 (new WorkerThreadableLoader(workerGlobalScope, &client, options, resourceLoa derOptions, LoadSynchronously))->start(request);
223 } 223 }
224 224
225 WorkerThreadableLoader::~WorkerThreadableLoader() 225 WorkerThreadableLoader::~WorkerThreadableLoader()
226 { 226 {
227 DCHECK(!m_mainThreadLoaderHolder); 227 DCHECK(!m_peer);
228 DCHECK(!m_client); 228 DCHECK(!m_client);
229 } 229 }
230 230
231 void WorkerThreadableLoader::start(const ResourceRequest& originalRequest) 231 void WorkerThreadableLoader::start(const ResourceRequest& originalRequest)
232 { 232 {
233 ResourceRequest request(originalRequest); 233 ResourceRequest request(originalRequest);
234 if (!request.didSetHTTPReferrer()) 234 if (!request.didSetHTTPReferrer())
235 request.setHTTPReferrer(SecurityPolicy::generateReferrer(m_workerGlobalS cope->getReferrerPolicy(), request.url(), m_workerGlobalScope->outgoingReferrer( ))); 235 request.setHTTPReferrer(SecurityPolicy::generateReferrer(m_workerGlobalS cope->getReferrerPolicy(), request.url(), m_workerGlobalScope->outgoingReferrer( )));
236 236
237 DCHECK(!isMainThread()); 237 DCHECK(!isMainThread());
238 RefPtr<WaitableEventWithTasks> eventWithTasks; 238 RefPtr<WaitableEventWithTasks> eventWithTasks;
239 if (m_blockingBehavior == LoadSynchronously) 239 if (m_blockingBehavior == LoadSynchronously)
240 eventWithTasks = WaitableEventWithTasks::create(); 240 eventWithTasks = WaitableEventWithTasks::create();
241 241
242 m_workerLoaderProxy->postTaskToLoader(BLINK_FROM_HERE, createCrossThreadTask ( 242 m_workerLoaderProxy->postTaskToLoader(BLINK_FROM_HERE, createCrossThreadTask (
243 &MainThreadLoaderHolder::createAndStart, 243 &Peer::createAndStart,
244 wrapCrossThreadPersistent(this), 244 wrapCrossThreadPersistent(this),
245 m_workerLoaderProxy, 245 m_workerLoaderProxy,
246 wrapCrossThreadPersistent(m_workerGlobalScope->thread()->getWorkerThread LifecycleContext()), 246 wrapCrossThreadPersistent(m_workerGlobalScope->thread()->getWorkerThread LifecycleContext()),
247 request, 247 request,
248 m_threadableLoaderOptions, 248 m_threadableLoaderOptions,
249 m_resourceLoaderOptions, 249 m_resourceLoaderOptions,
250 eventWithTasks)); 250 eventWithTasks));
251 251
252 if (m_blockingBehavior == LoadAsynchronously) 252 if (m_blockingBehavior == LoadAsynchronously)
253 return; 253 return;
(...skipping 17 matching lines...) Expand all
271 271
272 // m_clientTask contains only CallClosureTasks. So, it's ok to pass 272 // m_clientTask contains only CallClosureTasks. So, it's ok to pass
273 // the nullptr. 273 // the nullptr.
274 task.m_task->performTask(nullptr); 274 task.m_task->performTask(nullptr);
275 } 275 }
276 } 276 }
277 277
278 void WorkerThreadableLoader::overrideTimeout(unsigned long timeoutMilliseconds) 278 void WorkerThreadableLoader::overrideTimeout(unsigned long timeoutMilliseconds)
279 { 279 {
280 DCHECK(!isMainThread()); 280 DCHECK(!isMainThread());
281 if (!m_mainThreadLoaderHolder) 281 if (!m_peer)
282 return; 282 return;
283 m_workerLoaderProxy->postTaskToLoader(BLINK_FROM_HERE, createCrossThreadTask (&MainThreadLoaderHolder::overrideTimeout, m_mainThreadLoaderHolder, timeoutMill iseconds)); 283 m_workerLoaderProxy->postTaskToLoader(BLINK_FROM_HERE, createCrossThreadTask (&Peer::overrideTimeout, m_peer, timeoutMilliseconds));
284 } 284 }
285 285
286 void WorkerThreadableLoader::cancel() 286 void WorkerThreadableLoader::cancel()
287 { 287 {
288 DCHECK(!isMainThread()); 288 DCHECK(!isMainThread());
289 if (m_mainThreadLoaderHolder) { 289 if (m_peer) {
290 m_workerLoaderProxy->postTaskToLoader(BLINK_FROM_HERE, createCrossThread Task(&MainThreadLoaderHolder::cancel, m_mainThreadLoaderHolder)); 290 m_workerLoaderProxy->postTaskToLoader(BLINK_FROM_HERE, createCrossThread Task(&Peer::cancel, m_peer));
291 m_mainThreadLoaderHolder = nullptr; 291 m_peer = nullptr;
292 } 292 }
293 293
294 if (!m_client) 294 if (!m_client)
295 return; 295 return;
296 296
297 // If the client hasn't reached a termination state, then transition it 297 // If the client hasn't reached a termination state, then transition it
298 // by sending a cancellation error. 298 // by sending a cancellation error.
299 // Note: no more client callbacks will be done after this method -- the 299 // Note: no more client callbacks will be done after this method -- the
300 // clearClient() call ensures that. 300 // clearClient() call ensures that.
301 ResourceError error(String(), 0, String(), String()); 301 ResourceError error(String(), 0, String(), String());
302 error.setIsCancellation(true); 302 error.setIsCancellation(true);
303 didFail(error); 303 didFail(error);
304 DCHECK(!m_client); 304 DCHECK(!m_client);
305 } 305 }
306 306
307 void WorkerThreadableLoader::didStart(MainThreadLoaderHolder* mainThreadLoaderHo lder) 307 void WorkerThreadableLoader::didStart(Peer* peer)
308 { 308 {
309 DCHECK(!isMainThread()); 309 DCHECK(!isMainThread());
310 DCHECK(!m_mainThreadLoaderHolder); 310 DCHECK(!m_peer);
311 DCHECK(mainThreadLoaderHolder); 311 DCHECK(peer);
312 if (!m_client) { 312 if (!m_client) {
313 // The loading is already cancelled. 313 // The loading is already cancelled.
314 return; 314 return;
315 } 315 }
316 316
317 m_mainThreadLoaderHolder = mainThreadLoaderHolder; 317 m_peer = peer;
318 } 318 }
319 319
320 void WorkerThreadableLoader::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) 320 void WorkerThreadableLoader::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
321 { 321 {
322 DCHECK(!isMainThread()); 322 DCHECK(!isMainThread());
323 if (!m_client) 323 if (!m_client)
324 return; 324 return;
325 m_client->didSendData(bytesSent, totalBytesToBeSent); 325 m_client->didSendData(bytesSent, totalBytesToBeSent);
326 } 326 }
327 327
(...skipping 23 matching lines...) Expand all
351 m_client->didReceiveCachedMetadata(data->data(), data->size()); 351 m_client->didReceiveCachedMetadata(data->data(), data->size());
352 } 352 }
353 353
354 void WorkerThreadableLoader::didFinishLoading(unsigned long identifier, double f inishTime) 354 void WorkerThreadableLoader::didFinishLoading(unsigned long identifier, double f inishTime)
355 { 355 {
356 DCHECK(!isMainThread()); 356 DCHECK(!isMainThread());
357 if (!m_client) 357 if (!m_client)
358 return; 358 return;
359 auto* client = m_client; 359 auto* client = m_client;
360 m_client = nullptr; 360 m_client = nullptr;
361 m_mainThreadLoaderHolder = nullptr; 361 m_peer = nullptr;
362 client->didFinishLoading(identifier, finishTime); 362 client->didFinishLoading(identifier, finishTime);
363 } 363 }
364 364
365 void WorkerThreadableLoader::didFail(const ResourceError& error) 365 void WorkerThreadableLoader::didFail(const ResourceError& error)
366 { 366 {
367 DCHECK(!isMainThread()); 367 DCHECK(!isMainThread());
368 if (!m_client) 368 if (!m_client)
369 return; 369 return;
370 auto* client = m_client; 370 auto* client = m_client;
371 m_client = nullptr; 371 m_client = nullptr;
372 m_mainThreadLoaderHolder = nullptr; 372 m_peer = nullptr;
373 client->didFail(error); 373 client->didFail(error);
374 } 374 }
375 375
376 void WorkerThreadableLoader::didFailAccessControlCheck(const ResourceError& erro r) 376 void WorkerThreadableLoader::didFailAccessControlCheck(const ResourceError& erro r)
377 { 377 {
378 DCHECK(!isMainThread()); 378 DCHECK(!isMainThread());
379 if (!m_client) 379 if (!m_client)
380 return; 380 return;
381 auto* client = m_client; 381 auto* client = m_client;
382 m_client = nullptr; 382 m_client = nullptr;
383 m_mainThreadLoaderHolder = nullptr; 383 m_peer = nullptr;
384 client->didFailAccessControlCheck(error); 384 client->didFailAccessControlCheck(error);
385 } 385 }
386 386
387 void WorkerThreadableLoader::didFailRedirectCheck() 387 void WorkerThreadableLoader::didFailRedirectCheck()
388 { 388 {
389 DCHECK(!isMainThread()); 389 DCHECK(!isMainThread());
390 if (!m_client) 390 if (!m_client)
391 return; 391 return;
392 auto* client = m_client; 392 auto* client = m_client;
393 m_client = nullptr; 393 m_client = nullptr;
394 m_mainThreadLoaderHolder = nullptr; 394 m_peer = nullptr;
395 client->didFailRedirectCheck(); 395 client->didFailRedirectCheck();
396 } 396 }
397 397
398 void WorkerThreadableLoader::didDownloadData(int dataLength) 398 void WorkerThreadableLoader::didDownloadData(int dataLength)
399 { 399 {
400 DCHECK(!isMainThread()); 400 DCHECK(!isMainThread());
401 if (!m_client) 401 if (!m_client)
402 return; 402 return;
403 m_client->didDownloadData(dataLength); 403 m_client->didDownloadData(dataLength);
404 } 404 }
405 405
406 void WorkerThreadableLoader::didReceiveResourceTiming(std::unique_ptr<CrossThrea dResourceTimingInfoData> timingData) 406 void WorkerThreadableLoader::didReceiveResourceTiming(std::unique_ptr<CrossThrea dResourceTimingInfoData> timingData)
407 { 407 {
408 DCHECK(!isMainThread()); 408 DCHECK(!isMainThread());
409 if (!m_client) 409 if (!m_client)
410 return; 410 return;
411 std::unique_ptr<ResourceTimingInfo> info(ResourceTimingInfo::adopt(std::move (timingData))); 411 std::unique_ptr<ResourceTimingInfo> info(ResourceTimingInfo::adopt(std::move (timingData)));
412 WorkerGlobalScopePerformance::performance(*m_workerGlobalScope)->addResource Timing(*info); 412 WorkerGlobalScopePerformance::performance(*m_workerGlobalScope)->addResource Timing(*info);
413 m_client->didReceiveResourceTiming(*info); 413 m_client->didReceiveResourceTiming(*info);
414 } 414 }
415 415
416 DEFINE_TRACE(WorkerThreadableLoader) 416 DEFINE_TRACE(WorkerThreadableLoader)
417 { 417 {
418 visitor->trace(m_workerGlobalScope); 418 visitor->trace(m_workerGlobalScope);
419 ThreadableLoader::trace(visitor); 419 ThreadableLoader::trace(visitor);
420 } 420 }
421 421
422 void WorkerThreadableLoader::MainThreadLoaderHolder::createAndStart( 422 void WorkerThreadableLoader::Peer::createAndStart(
423 WorkerThreadableLoader* workerLoader, 423 WorkerThreadableLoader* workerLoader,
424 PassRefPtr<WorkerLoaderProxy> passLoaderProxy, 424 PassRefPtr<WorkerLoaderProxy> passLoaderProxy,
425 WorkerThreadLifecycleContext* workerThreadLifecycleContext, 425 WorkerThreadLifecycleContext* workerThreadLifecycleContext,
426 std::unique_ptr<CrossThreadResourceRequestData> request, 426 std::unique_ptr<CrossThreadResourceRequestData> request,
427 const ThreadableLoaderOptions& options, 427 const ThreadableLoaderOptions& options,
428 const ResourceLoaderOptions& resourceLoaderOptions, 428 const ResourceLoaderOptions& resourceLoaderOptions,
429 PassRefPtr<WaitableEventWithTasks> eventWithTasks, 429 PassRefPtr<WaitableEventWithTasks> eventWithTasks,
430 ExecutionContext* executionContext) 430 ExecutionContext* executionContext)
431 { 431 {
432 DCHECK(isMainThread()); 432 DCHECK(isMainThread());
433 TaskForwarder* forwarder; 433 TaskForwarder* forwarder;
434 RefPtr<WorkerLoaderProxy> loaderProxy = passLoaderProxy; 434 RefPtr<WorkerLoaderProxy> loaderProxy = passLoaderProxy;
435 if (eventWithTasks) 435 if (eventWithTasks)
436 forwarder = new SyncTaskForwarder(eventWithTasks); 436 forwarder = new SyncTaskForwarder(eventWithTasks);
437 else 437 else
438 forwarder = new AsyncTaskForwarder(loaderProxy); 438 forwarder = new AsyncTaskForwarder(loaderProxy);
439 439
440 MainThreadLoaderHolder* mainThreadLoaderHolder = new MainThreadLoaderHolder( forwarder, workerThreadLifecycleContext); 440 Peer* peer = new Peer(forwarder, workerThreadLifecycleContext);
441 if (mainThreadLoaderHolder->wasContextDestroyedBeforeObserverCreation()) { 441 if (peer->wasContextDestroyedBeforeObserverCreation()) {
442 // The thread is already terminating. 442 // The thread is already terminating.
443 forwarder->abort(); 443 forwarder->abort();
444 mainThreadLoaderHolder->m_forwarder = nullptr; 444 peer->m_forwarder = nullptr;
445 return; 445 return;
446 } 446 }
447 mainThreadLoaderHolder->m_workerLoader = workerLoader; 447 peer->m_workerLoader = workerLoader;
448 mainThreadLoaderHolder->start(*toDocument(executionContext), std::move(reque st), options, resourceLoaderOptions); 448 peer->start(*toDocument(executionContext), std::move(request), options, reso urceLoaderOptions);
449 forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThreada bleLoader::didStart, wrapCrossThreadPersistent(workerLoader), wrapCrossThreadPer sistent(mainThreadLoaderHolder))); 449 forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThreada bleLoader::didStart, wrapCrossThreadPersistent(workerLoader), wrapCrossThreadPer sistent(peer)));
450 } 450 }
451 451
452 WorkerThreadableLoader::MainThreadLoaderHolder::~MainThreadLoaderHolder() 452 WorkerThreadableLoader::Peer::~Peer()
453 { 453 {
454 DCHECK(isMainThread()); 454 DCHECK(isMainThread());
455 DCHECK(!m_workerLoader); 455 DCHECK(!m_workerLoader);
456 } 456 }
457 457
458 void WorkerThreadableLoader::MainThreadLoaderHolder::overrideTimeout(unsigned lo ng timeoutMilliseconds) 458 void WorkerThreadableLoader::Peer::overrideTimeout(unsigned long timeoutMillisec onds)
459 { 459 {
460 DCHECK(isMainThread()); 460 DCHECK(isMainThread());
461 if (!m_mainThreadLoader) 461 if (!m_mainThreadLoader)
462 return; 462 return;
463 m_mainThreadLoader->overrideTimeout(timeoutMilliseconds); 463 m_mainThreadLoader->overrideTimeout(timeoutMilliseconds);
464 } 464 }
465 465
466 void WorkerThreadableLoader::MainThreadLoaderHolder::cancel() 466 void WorkerThreadableLoader::Peer::cancel()
467 { 467 {
468 DCHECK(isMainThread()); 468 DCHECK(isMainThread());
469 if (!m_mainThreadLoader) 469 if (!m_mainThreadLoader)
470 return; 470 return;
471 m_mainThreadLoader->cancel(); 471 m_mainThreadLoader->cancel();
472 m_mainThreadLoader = nullptr; 472 m_mainThreadLoader = nullptr;
473 } 473 }
474 474
475 void WorkerThreadableLoader::MainThreadLoaderHolder::didSendData(unsigned long l ong bytesSent, unsigned long long totalBytesToBeSent) 475 void WorkerThreadableLoader::Peer::didSendData(unsigned long long bytesSent, uns igned long long totalBytesToBeSent)
476 { 476 {
477 DCHECK(isMainThread()); 477 DCHECK(isMainThread());
478 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 478 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
479 if (!workerLoader || !m_forwarder) 479 if (!workerLoader || !m_forwarder)
480 return; 480 return;
481 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didSendData, workerLoader, bytesSent, totalBytesToBeSent)); 481 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didSendData, workerLoader, bytesSent, totalBytesToBeSent));
482 } 482 }
483 483
484 void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveResponse(unsigned long identifier, const ResourceResponse& response, std::unique_ptr<WebDataConsu merHandle> handle) 484 void WorkerThreadableLoader::Peer::didReceiveResponse(unsigned long identifier, const ResourceResponse& response, std::unique_ptr<WebDataConsumerHandle> handle)
485 { 485 {
486 DCHECK(isMainThread()); 486 DCHECK(isMainThread());
487 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 487 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
488 if (!workerLoader || !m_forwarder) 488 if (!workerLoader || !m_forwarder)
489 return; 489 return;
490 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveResponse, workerLoader, identifier, response, passed(std: :move(handle)))); 490 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveResponse, workerLoader, identifier, response, passed(std: :move(handle))));
491 } 491 }
492 492
493 void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveData(const char* data, unsigned dataLength) 493 void WorkerThreadableLoader::Peer::didReceiveData(const char* data, unsigned dat aLength)
494 { 494 {
495 DCHECK(isMainThread()); 495 DCHECK(isMainThread());
496 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 496 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
497 if (!workerLoader || !m_forwarder) 497 if (!workerLoader || !m_forwarder)
498 return; 498 return;
499 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveData, workerLoader, passed(createVectorFromMemoryRegion(d ata, dataLength)))); 499 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveData, workerLoader, passed(createVectorFromMemoryRegion(d ata, dataLength))));
500 } 500 }
501 501
502 void WorkerThreadableLoader::MainThreadLoaderHolder::didDownloadData(int dataLen gth) 502 void WorkerThreadableLoader::Peer::didDownloadData(int dataLength)
503 { 503 {
504 DCHECK(isMainThread()); 504 DCHECK(isMainThread());
505 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 505 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
506 if (!workerLoader || !m_forwarder) 506 if (!workerLoader || !m_forwarder)
507 return; 507 return;
508 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didDownloadData, workerLoader, dataLength)); 508 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didDownloadData, workerLoader, dataLength));
509 } 509 }
510 510
511 void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveCachedMetadata(co nst char* data, int dataLength) 511 void WorkerThreadableLoader::Peer::didReceiveCachedMetadata(const char* data, in t dataLength)
512 { 512 {
513 DCHECK(isMainThread()); 513 DCHECK(isMainThread());
514 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 514 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
515 if (!workerLoader || !m_forwarder) 515 if (!workerLoader || !m_forwarder)
516 return; 516 return;
517 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveCachedMetadata, workerLoader, passed(createVectorFromMemo ryRegion(data, dataLength)))); 517 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveCachedMetadata, workerLoader, passed(createVectorFromMemo ryRegion(data, dataLength))));
518 } 518 }
519 519
520 void WorkerThreadableLoader::MainThreadLoaderHolder::didFinishLoading(unsigned l ong identifier, double finishTime) 520 void WorkerThreadableLoader::Peer::didFinishLoading(unsigned long identifier, do uble finishTime)
521 { 521 {
522 DCHECK(isMainThread()); 522 DCHECK(isMainThread());
523 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 523 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
524 if (!workerLoader || !m_forwarder) 524 if (!workerLoader || !m_forwarder)
525 return; 525 return;
526 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFinishLoading, workerLoader, identifier, finishTim e)); 526 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFinishLoading, workerLoader, identifier, finishTim e));
527 m_forwarder = nullptr; 527 m_forwarder = nullptr;
528 } 528 }
529 529
530 void WorkerThreadableLoader::MainThreadLoaderHolder::didFail(const ResourceError & error) 530 void WorkerThreadableLoader::Peer::didFail(const ResourceError& error)
531 { 531 {
532 DCHECK(isMainThread()); 532 DCHECK(isMainThread());
533 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 533 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
534 if (!workerLoader || !m_forwarder) 534 if (!workerLoader || !m_forwarder)
535 return; 535 return;
536 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFail, workerLoader, error)); 536 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFail, workerLoader, error));
537 m_forwarder = nullptr; 537 m_forwarder = nullptr;
538 } 538 }
539 539
540 void WorkerThreadableLoader::MainThreadLoaderHolder::didFailAccessControlCheck(c onst ResourceError& error) 540 void WorkerThreadableLoader::Peer::didFailAccessControlCheck(const ResourceError & error)
541 { 541 {
542 DCHECK(isMainThread()); 542 DCHECK(isMainThread());
543 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 543 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
544 if (!workerLoader || !m_forwarder) 544 if (!workerLoader || !m_forwarder)
545 return; 545 return;
546 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailAccessControlCheck, workerLoader, error)); 546 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailAccessControlCheck, workerLoader, error));
547 m_forwarder = nullptr; 547 m_forwarder = nullptr;
548 } 548 }
549 549
550 void WorkerThreadableLoader::MainThreadLoaderHolder::didFailRedirectCheck() 550 void WorkerThreadableLoader::Peer::didFailRedirectCheck()
551 { 551 {
552 DCHECK(isMainThread()); 552 DCHECK(isMainThread());
553 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 553 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
554 if (!workerLoader || !m_forwarder) 554 if (!workerLoader || !m_forwarder)
555 return; 555 return;
556 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailRedirectCheck, workerLoader)); 556 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailRedirectCheck, workerLoader));
557 m_forwarder = nullptr; 557 m_forwarder = nullptr;
558 } 558 }
559 559
560 void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveResourceTiming(co nst ResourceTimingInfo& info) 560 void WorkerThreadableLoader::Peer::didReceiveResourceTiming(const ResourceTiming Info& info)
561 { 561 {
562 DCHECK(isMainThread()); 562 DCHECK(isMainThread());
563 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); 563 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get();
564 if (!workerLoader || !m_forwarder) 564 if (!workerLoader || !m_forwarder)
565 return; 565 return;
566 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveResourceTiming, workerLoader, info)); 566 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveResourceTiming, workerLoader, info));
567 } 567 }
568 568
569 void WorkerThreadableLoader::MainThreadLoaderHolder::contextDestroyed() 569 void WorkerThreadableLoader::Peer::contextDestroyed()
570 { 570 {
571 DCHECK(isMainThread()); 571 DCHECK(isMainThread());
572 if (m_forwarder) { 572 if (m_forwarder) {
573 m_forwarder->abort(); 573 m_forwarder->abort();
574 m_forwarder = nullptr; 574 m_forwarder = nullptr;
575 } 575 }
576 m_workerLoader = nullptr; 576 m_workerLoader = nullptr;
577 cancel(); 577 cancel();
578 } 578 }
579 579
580 DEFINE_TRACE(WorkerThreadableLoader::MainThreadLoaderHolder) 580 DEFINE_TRACE(WorkerThreadableLoader::Peer)
581 { 581 {
582 visitor->trace(m_forwarder); 582 visitor->trace(m_forwarder);
583 visitor->trace(m_mainThreadLoader); 583 visitor->trace(m_mainThreadLoader);
584 WorkerThreadLifecycleObserver::trace(visitor); 584 WorkerThreadLifecycleObserver::trace(visitor);
585 } 585 }
586 586
587 WorkerThreadableLoader::MainThreadLoaderHolder::MainThreadLoaderHolder(TaskForwa rder* forwarder, WorkerThreadLifecycleContext* context) 587 WorkerThreadableLoader::Peer::Peer(TaskForwarder* forwarder, WorkerThreadLifecyc leContext* context)
588 : WorkerThreadLifecycleObserver(context) 588 : WorkerThreadLifecycleObserver(context)
589 , m_forwarder(forwarder) 589 , m_forwarder(forwarder)
590 { 590 {
591 DCHECK(isMainThread()); 591 DCHECK(isMainThread());
592 } 592 }
593 593
594 void WorkerThreadableLoader::MainThreadLoaderHolder::start( 594 void WorkerThreadableLoader::Peer::start(
595 Document& document, 595 Document& document,
596 std::unique_ptr<CrossThreadResourceRequestData> request, 596 std::unique_ptr<CrossThreadResourceRequestData> request,
597 const ThreadableLoaderOptions& options, 597 const ThreadableLoaderOptions& options,
598 const ResourceLoaderOptions& originalResourceLoaderOptions) 598 const ResourceLoaderOptions& originalResourceLoaderOptions)
599 { 599 {
600 DCHECK(isMainThread()); 600 DCHECK(isMainThread());
601 ResourceLoaderOptions resourceLoaderOptions = originalResourceLoaderOptions; 601 ResourceLoaderOptions resourceLoaderOptions = originalResourceLoaderOptions;
602 resourceLoaderOptions.requestInitiatorContext = WorkerContext; 602 resourceLoaderOptions.requestInitiatorContext = WorkerContext;
603 m_mainThreadLoader = DocumentThreadableLoader::create(document, this, option s, resourceLoaderOptions); 603 m_mainThreadLoader = DocumentThreadableLoader::create(document, this, option s, resourceLoaderOptions);
604 m_mainThreadLoader->start(ResourceRequest(request.get())); 604 m_mainThreadLoader->start(ResourceRequest(request.get()));
605 } 605 }
606 606
607 } // namespace blink 607 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698