OLD | NEW |
---|---|
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 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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_mainThreadLoaderHolder); |
228 DCHECK(!m_client); | 228 DCHECK(!m_client); |
haraken
2016/08/18 04:58:37
Shall we add DCHECK(!m_workerLoader)?
yhirano
2016/08/18 05:09:04
Oops, the CL description was wrong. m_workerLoader
| |
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; |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
460 { | 460 { |
461 DCHECK(isMainThread()); | 461 DCHECK(isMainThread()); |
462 if (!m_mainThreadLoader) | 462 if (!m_mainThreadLoader) |
463 return; | 463 return; |
464 m_mainThreadLoader->overrideTimeout(timeoutMilliseconds); | 464 m_mainThreadLoader->overrideTimeout(timeoutMilliseconds); |
465 } | 465 } |
466 | 466 |
467 void WorkerThreadableLoader::MainThreadLoaderHolder::cancel() | 467 void WorkerThreadableLoader::MainThreadLoaderHolder::cancel() |
468 { | 468 { |
469 DCHECK(isMainThread()); | 469 DCHECK(isMainThread()); |
470 m_workerLoader = nullptr; | |
470 if (!m_mainThreadLoader) | 471 if (!m_mainThreadLoader) |
471 return; | 472 return; |
472 m_mainThreadLoader->cancel(); | 473 m_mainThreadLoader->cancel(); |
473 m_mainThreadLoader = nullptr; | 474 m_mainThreadLoader = nullptr; |
474 } | 475 } |
475 | 476 |
476 void WorkerThreadableLoader::MainThreadLoaderHolder::didSendData(unsigned long l ong bytesSent, unsigned long long totalBytesToBeSent) | 477 void WorkerThreadableLoader::MainThreadLoaderHolder::didSendData(unsigned long l ong bytesSent, unsigned long long totalBytesToBeSent) |
477 { | 478 { |
478 DCHECK(isMainThread()); | 479 DCHECK(isMainThread()); |
479 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 480 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
514 DCHECK(isMainThread()); | 515 DCHECK(isMainThread()); |
515 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 516 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); |
516 if (!workerLoader || !m_forwarder) | 517 if (!workerLoader || !m_forwarder) |
517 return; | 518 return; |
518 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveCachedMetadata, workerLoader, passed(createVectorFromMemo ryRegion(data, dataLength)))); | 519 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveCachedMetadata, workerLoader, passed(createVectorFromMemo ryRegion(data, dataLength)))); |
519 } | 520 } |
520 | 521 |
521 void WorkerThreadableLoader::MainThreadLoaderHolder::didFinishLoading(unsigned l ong identifier, double finishTime) | 522 void WorkerThreadableLoader::MainThreadLoaderHolder::didFinishLoading(unsigned l ong identifier, double finishTime) |
522 { | 523 { |
523 DCHECK(isMainThread()); | 524 DCHECK(isMainThread()); |
524 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 525 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. release(); |
525 if (!workerLoader || !m_forwarder) | 526 if (!workerLoader || !m_forwarder) |
526 return; | 527 return; |
527 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFinishLoading, workerLoader, identifier, finishTim e)); | 528 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFinishLoading, workerLoader, identifier, finishTim e)); |
528 m_forwarder = nullptr; | 529 m_forwarder = nullptr; |
529 } | 530 } |
530 | 531 |
531 void WorkerThreadableLoader::MainThreadLoaderHolder::didFail(const ResourceError & error) | 532 void WorkerThreadableLoader::MainThreadLoaderHolder::didFail(const ResourceError & error) |
532 { | 533 { |
533 DCHECK(isMainThread()); | 534 DCHECK(isMainThread()); |
534 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 535 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. release(); |
535 if (!workerLoader || !m_forwarder) | 536 if (!workerLoader || !m_forwarder) |
536 return; | 537 return; |
537 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFail, workerLoader, error)); | 538 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFail, workerLoader, error)); |
538 m_forwarder = nullptr; | 539 m_forwarder = nullptr; |
539 } | 540 } |
540 | 541 |
541 void WorkerThreadableLoader::MainThreadLoaderHolder::didFailAccessControlCheck(c onst ResourceError& error) | 542 void WorkerThreadableLoader::MainThreadLoaderHolder::didFailAccessControlCheck(c onst ResourceError& error) |
542 { | 543 { |
543 DCHECK(isMainThread()); | 544 DCHECK(isMainThread()); |
544 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 545 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. release(); |
545 if (!workerLoader || !m_forwarder) | 546 if (!workerLoader || !m_forwarder) |
546 return; | 547 return; |
547 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailAccessControlCheck, workerLoader, error)); | 548 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailAccessControlCheck, workerLoader, error)); |
548 m_forwarder = nullptr; | 549 m_forwarder = nullptr; |
549 } | 550 } |
550 | 551 |
551 void WorkerThreadableLoader::MainThreadLoaderHolder::didFailRedirectCheck() | 552 void WorkerThreadableLoader::MainThreadLoaderHolder::didFailRedirectCheck() |
552 { | 553 { |
553 DCHECK(isMainThread()); | 554 DCHECK(isMainThread()); |
554 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 555 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. release(); |
555 if (!workerLoader || !m_forwarder) | 556 if (!workerLoader || !m_forwarder) |
556 return; | 557 return; |
557 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailRedirectCheck, workerLoader)); | 558 m_forwarder->forwardTaskWithDoneSignal(BLINK_FROM_HERE, createCrossThreadTas k(&WorkerThreadableLoader::didFailRedirectCheck, workerLoader)); |
558 m_forwarder = nullptr; | 559 m_forwarder = nullptr; |
559 } | 560 } |
560 | 561 |
561 void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveResourceTiming(co nst ResourceTimingInfo& info) | 562 void WorkerThreadableLoader::MainThreadLoaderHolder::didReceiveResourceTiming(co nst ResourceTimingInfo& info) |
562 { | 563 { |
563 DCHECK(isMainThread()); | 564 DCHECK(isMainThread()); |
564 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); | 565 CrossThreadPersistent<WorkerThreadableLoader> workerLoader = m_workerLoader. get(); |
565 if (!workerLoader || !m_forwarder) | 566 if (!workerLoader || !m_forwarder) |
566 return; | 567 return; |
567 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveResourceTiming, workerLoader, info)); | 568 m_forwarder->forwardTask(BLINK_FROM_HERE, createCrossThreadTask(&WorkerThrea dableLoader::didReceiveResourceTiming, workerLoader, info)); |
568 } | 569 } |
569 | 570 |
570 void WorkerThreadableLoader::MainThreadLoaderHolder::contextDestroyed() | 571 void WorkerThreadableLoader::MainThreadLoaderHolder::contextDestroyed() |
571 { | 572 { |
572 DCHECK(isMainThread()); | 573 DCHECK(isMainThread()); |
573 if (m_forwarder) { | 574 if (m_forwarder) { |
574 m_forwarder->abort(); | 575 m_forwarder->abort(); |
575 m_forwarder = nullptr; | 576 m_forwarder = nullptr; |
576 } | 577 } |
577 m_workerLoader = nullptr; | |
578 cancel(); | 578 cancel(); |
579 } | 579 } |
580 | 580 |
581 DEFINE_TRACE(WorkerThreadableLoader::MainThreadLoaderHolder) | 581 DEFINE_TRACE(WorkerThreadableLoader::MainThreadLoaderHolder) |
582 { | 582 { |
583 visitor->trace(m_forwarder); | 583 visitor->trace(m_forwarder); |
584 visitor->trace(m_mainThreadLoader); | 584 visitor->trace(m_mainThreadLoader); |
585 WorkerThreadLifecycleObserver::trace(visitor); | 585 WorkerThreadLifecycleObserver::trace(visitor); |
586 } | 586 } |
587 | 587 |
(...skipping 11 matching lines...) Expand all Loading... | |
599 const ResourceLoaderOptions& originalResourceLoaderOptions) | 599 const ResourceLoaderOptions& originalResourceLoaderOptions) |
600 { | 600 { |
601 DCHECK(isMainThread()); | 601 DCHECK(isMainThread()); |
602 ResourceLoaderOptions resourceLoaderOptions = originalResourceLoaderOptions; | 602 ResourceLoaderOptions resourceLoaderOptions = originalResourceLoaderOptions; |
603 resourceLoaderOptions.requestInitiatorContext = WorkerContext; | 603 resourceLoaderOptions.requestInitiatorContext = WorkerContext; |
604 m_mainThreadLoader = DocumentThreadableLoader::create(document, this, option s, resourceLoaderOptions); | 604 m_mainThreadLoader = DocumentThreadableLoader::create(document, this, option s, resourceLoaderOptions); |
605 m_mainThreadLoader->start(ResourceRequest(request.get())); | 605 m_mainThreadLoader->start(ResourceRequest(request.get())); |
606 } | 606 } |
607 | 607 |
608 } // namespace blink | 608 } // namespace blink |
OLD | NEW |