Chromium Code Reviews| 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 |