| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/service_worker/service_worker_register_job.h" | 5 #include "content/browser/service_worker/service_worker_register_job.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "content/browser/service_worker/service_worker_context_core.h" | 10 #include "content/browser/service_worker/service_worker_context_core.h" |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 // this way. | 337 // this way. |
| 338 NOTREACHED(); | 338 NOTREACHED(); |
| 339 // TODO(falken): Register an continuation task to wait for NoControllees | 339 // TODO(falken): Register an continuation task to wait for NoControllees |
| 340 // notification so that we can resume activation later. | 340 // notification so that we can resume activation later. |
| 341 Complete(SERVICE_WORKER_OK); | 341 Complete(SERVICE_WORKER_OK); |
| 342 return; | 342 return; |
| 343 } | 343 } |
| 344 | 344 |
| 345 // "5. Set serviceWorkerRegistration.activeWorker to activatingWorker." | 345 // "5. Set serviceWorkerRegistration.activeWorker to activatingWorker." |
| 346 // "6. Set serviceWorkerRegistration.waitingWorker to null." | 346 // "6. Set serviceWorkerRegistration.waitingWorker to null." |
| 347 DisassociateVersionFromDocuments(context_, new_version()); |
| 347 registration()->SetActiveVersion(new_version()); | 348 registration()->SetActiveVersion(new_version()); |
| 349 AssociateActiveVersionToDocuments(context_, new_version()); |
| 348 | 350 |
| 349 // "7. Run the [[UpdateState]] algorithm passing registration.activeWorker and | 351 // "7. Run the [[UpdateState]] algorithm passing registration.activeWorker and |
| 350 // "activating" as arguments." | 352 // "activating" as arguments." |
| 351 new_version()->SetStatus(ServiceWorkerVersion::ACTIVATING); | 353 new_version()->SetStatus(ServiceWorkerVersion::ACTIVATING); |
| 352 | 354 |
| 353 // TODO(nhiroki): "8. Fire a simple event named controllerchange..." | 355 // TODO(nhiroki): "8. Fire a simple event named controllerchange..." |
| 354 | 356 |
| 355 // "9. Fire an event named activate..." | 357 // "9. Fire an event named activate..." |
| 356 new_version()->DispatchActivateEvent( | 358 new_version()->DispatchActivateEvent( |
| 357 base::Bind(&ServiceWorkerRegisterJob::OnActivateFinished, | 359 base::Bind(&ServiceWorkerRegisterJob::OnActivateFinished, |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 if (ServiceWorkerUtils::ScopeMatches(version->scope(), | 478 if (ServiceWorkerUtils::ScopeMatches(version->scope(), |
| 477 host->document_url())) { | 479 host->document_url())) { |
| 478 if (!host->CanAssociateVersion(version)) | 480 if (!host->CanAssociateVersion(version)) |
| 479 continue; | 481 continue; |
| 480 host->SetWaitingVersion(version); | 482 host->SetWaitingVersion(version); |
| 481 } | 483 } |
| 482 } | 484 } |
| 483 } | 485 } |
| 484 | 486 |
| 485 // static | 487 // static |
| 488 void ServiceWorkerRegisterJob::AssociateActiveVersionToDocuments( |
| 489 base::WeakPtr<ServiceWorkerContextCore> context, |
| 490 ServiceWorkerVersion* version) { |
| 491 DCHECK(context); |
| 492 DCHECK(version); |
| 493 |
| 494 for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = |
| 495 context->GetProviderHostIterator(); |
| 496 !it->IsAtEnd(); it->Advance()) { |
| 497 ServiceWorkerProviderHost* host = it->GetProviderHost(); |
| 498 if (ServiceWorkerUtils::ScopeMatches(version->scope(), |
| 499 host->document_url())) { |
| 500 if (!host->CanAssociateVersion(version)) |
| 501 continue; |
| 502 host->SetActiveVersion(version); |
| 503 } |
| 504 } |
| 505 } |
| 506 |
| 507 // static |
| 486 void ServiceWorkerRegisterJob::DisassociateVersionFromDocuments( | 508 void ServiceWorkerRegisterJob::DisassociateVersionFromDocuments( |
| 487 base::WeakPtr<ServiceWorkerContextCore> context, | 509 base::WeakPtr<ServiceWorkerContextCore> context, |
| 488 ServiceWorkerVersion* version) { | 510 ServiceWorkerVersion* version) { |
| 489 DCHECK(context); | 511 DCHECK(context); |
| 490 for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = | 512 for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = |
| 491 context->GetProviderHostIterator(); | 513 context->GetProviderHostIterator(); |
| 492 !it->IsAtEnd(); it->Advance()) { | 514 !it->IsAtEnd(); it->Advance()) { |
| 493 ServiceWorkerProviderHost* host = it->GetProviderHost(); | 515 ServiceWorkerProviderHost* host = it->GetProviderHost(); |
| 494 host->UnsetVersion(version); | 516 host->UnsetVersion(version); |
| 495 } | 517 } |
| 496 } | 518 } |
| 497 | 519 |
| 498 } // namespace content | 520 } // namespace content |
| OLD | NEW |