Chromium Code Reviews| 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_version.h" | 5 #include "content/browser/service_worker/service_worker_version.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 193 // renderer shutdown like crash. | 193 // renderer shutdown like crash. |
| 194 embedded_worker->Detach(); | 194 embedded_worker->Detach(); |
| 195 break; | 195 break; |
| 196 case EmbeddedWorkerStatus::STOPPING: | 196 case EmbeddedWorkerStatus::STOPPING: |
| 197 case EmbeddedWorkerStatus::STOPPED: | 197 case EmbeddedWorkerStatus::STOPPED: |
| 198 // Do nothing | 198 // Do nothing |
| 199 break; | 199 break; |
| 200 } | 200 } |
| 201 } | 201 } |
| 202 | 202 |
| 203 mojom::ServiceWorkerProviderInfoForStartWorkerPtr | |
| 204 CompleteProviderHostPreparation( | |
| 205 ServiceWorkerVersion* version, | |
| 206 std::unique_ptr<ServiceWorkerProviderHost> provider_host, | |
| 207 base::WeakPtr<ServiceWorkerContextCore> context, | |
| 208 int process_id) { | |
| 209 auto info = | |
| 210 provider_host->CompleteStartWorkerPreparation(process_id, version); | |
| 211 context->AddProviderHost(std::move(provider_host)); | |
|
falken
2017/06/19 07:50:40
Could context be null?
If not, we could DCHECK(co
shimazu
2017/06/19 10:41:25
Done.
| |
| 212 return info; | |
| 213 } | |
| 214 | |
| 203 } // namespace | 215 } // namespace |
| 204 | 216 |
| 205 const int ServiceWorkerVersion::kTimeoutTimerDelaySeconds = 30; | 217 const int ServiceWorkerVersion::kTimeoutTimerDelaySeconds = 30; |
| 206 const int ServiceWorkerVersion::kStartInstalledWorkerTimeoutSeconds = 60; | 218 const int ServiceWorkerVersion::kStartInstalledWorkerTimeoutSeconds = 60; |
| 207 const int ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes = 5; | 219 const int ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes = 5; |
| 208 const int ServiceWorkerVersion::kRequestTimeoutMinutes = 5; | 220 const int ServiceWorkerVersion::kRequestTimeoutMinutes = 5; |
| 209 const int ServiceWorkerVersion::kStopWorkerTimeoutSeconds = 5; | 221 const int ServiceWorkerVersion::kStopWorkerTimeoutSeconds = 5; |
| 210 | 222 |
| 211 void ServiceWorkerVersion::RestartTick(base::TimeTicks* time) const { | 223 void ServiceWorkerVersion::RestartTick(base::TimeTicks* time) const { |
| 212 *time = tick_clock_->NowTicks(); | 224 *time = tick_clock_->NowTicks(); |
| (...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 840 ServiceWorkerMetrics::EventType event_type) | 852 ServiceWorkerMetrics::EventType event_type) |
| 841 : error_callback(callback), | 853 : error_callback(callback), |
| 842 start_time(time), | 854 start_time(time), |
| 843 start_time_ticks(time_ticks), | 855 start_time_ticks(time_ticks), |
| 844 event_type(event_type) {} | 856 event_type(event_type) {} |
| 845 | 857 |
| 846 ServiceWorkerVersion::PendingRequest::~PendingRequest() {} | 858 ServiceWorkerVersion::PendingRequest::~PendingRequest() {} |
| 847 | 859 |
| 848 void ServiceWorkerVersion::OnThreadStarted() { | 860 void ServiceWorkerVersion::OnThreadStarted() { |
| 849 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status()); | 861 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status()); |
| 862 DCHECK(provider_host_); | |
| 863 provider_host_->SetReadyToSendMessagesToWorker( | |
| 864 embedded_worker()->thread_id()); | |
| 850 // Activate ping/pong now that JavaScript execution will start. | 865 // Activate ping/pong now that JavaScript execution will start. |
| 851 ping_controller_->Activate(); | 866 ping_controller_->Activate(); |
| 852 } | 867 } |
| 853 | 868 |
| 854 void ServiceWorkerVersion::OnStarting() { | 869 void ServiceWorkerVersion::OnStarting() { |
| 855 for (auto& observer : listeners_) | 870 for (auto& observer : listeners_) |
| 856 observer.OnRunningStateChanged(this); | 871 observer.OnRunningStateChanged(this); |
| 857 } | 872 } |
| 858 | 873 |
| 859 void ServiceWorkerVersion::OnStarted() { | 874 void ServiceWorkerVersion::OnStarted() { |
| (...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1459 DCHECK_EQ(EmbeddedWorkerStatus::STOPPED, running_status()); | 1474 DCHECK_EQ(EmbeddedWorkerStatus::STOPPED, running_status()); |
| 1460 | 1475 |
| 1461 if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) { | 1476 if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) { |
| 1462 DCHECK(!event_recorder_); | 1477 DCHECK(!event_recorder_); |
| 1463 event_recorder_ = | 1478 event_recorder_ = |
| 1464 base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(); | 1479 base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(); |
| 1465 } | 1480 } |
| 1466 | 1481 |
| 1467 StartTimeoutTimer(); | 1482 StartTimeoutTimer(); |
| 1468 | 1483 |
| 1484 std::unique_ptr<ServiceWorkerProviderHost> pending_provider_host = | |
| 1485 ServiceWorkerProviderHost::PreCreateForController(context()); | |
| 1486 provider_host_ = pending_provider_host->AsWeakPtr(); | |
| 1487 | |
| 1469 auto params = base::MakeUnique<EmbeddedWorkerStartParams>(); | 1488 auto params = base::MakeUnique<EmbeddedWorkerStartParams>(); |
| 1470 params->service_worker_version_id = version_id_; | 1489 params->service_worker_version_id = version_id_; |
| 1471 params->scope = scope_; | 1490 params->scope = scope_; |
| 1472 params->script_url = script_url_; | 1491 params->script_url = script_url_; |
| 1473 params->is_installed = IsInstalled(status_); | 1492 params->is_installed = IsInstalled(status_); |
| 1474 params->pause_after_download = pause_after_download_; | 1493 params->pause_after_download = pause_after_download_; |
| 1475 | 1494 |
| 1476 embedded_worker_->Start( | 1495 embedded_worker_->Start( |
| 1477 std::move(params), mojo::MakeRequest(&event_dispatcher_), | 1496 std::move(params), |
| 1497 // Unretained is used here because the callback will be owned by | |
| 1498 // |embedded_worker_| whose owner is |this|. | |
| 1499 base::BindOnce(&CompleteProviderHostPreparation, base::Unretained(this), | |
| 1500 base::Passed(&pending_provider_host), context()), | |
| 1501 mojo::MakeRequest(&event_dispatcher_), | |
| 1478 base::Bind(&ServiceWorkerVersion::OnStartSentAndScriptEvaluated, | 1502 base::Bind(&ServiceWorkerVersion::OnStartSentAndScriptEvaluated, |
| 1479 weak_factory_.GetWeakPtr())); | 1503 weak_factory_.GetWeakPtr())); |
| 1480 event_dispatcher_.set_connection_error_handler(base::Bind( | 1504 event_dispatcher_.set_connection_error_handler(base::Bind( |
| 1481 &OnEventDispatcherConnectionError, embedded_worker_->AsWeakPtr())); | 1505 &OnEventDispatcherConnectionError, embedded_worker_->AsWeakPtr())); |
| 1482 } | 1506 } |
| 1483 | 1507 |
| 1484 void ServiceWorkerVersion::StartTimeoutTimer() { | 1508 void ServiceWorkerVersion::StartTimeoutTimer() { |
| 1485 DCHECK(!timeout_timer_.IsRunning()); | 1509 DCHECK(!timeout_timer_.IsRunning()); |
| 1486 | 1510 |
| 1487 if (embedded_worker_->devtools_attached()) { | 1511 if (embedded_worker_->devtools_attached()) { |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1859 | 1883 |
| 1860 void ServiceWorkerVersion::CleanUpExternalRequest( | 1884 void ServiceWorkerVersion::CleanUpExternalRequest( |
| 1861 const std::string& request_uuid, | 1885 const std::string& request_uuid, |
| 1862 ServiceWorkerStatusCode status) { | 1886 ServiceWorkerStatusCode status) { |
| 1863 if (status == SERVICE_WORKER_OK) | 1887 if (status == SERVICE_WORKER_OK) |
| 1864 return; | 1888 return; |
| 1865 external_request_uuid_to_request_id_.erase(request_uuid); | 1889 external_request_uuid_to_request_id_.erase(request_uuid); |
| 1866 } | 1890 } |
| 1867 | 1891 |
| 1868 } // namespace content | 1892 } // namespace content |
| OLD | NEW |