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::ServiceWorkerProviderClientInfoPtr CompleteProviderHostPreperation( | |
falken
2017/06/16 15:44:46
typo: Preparation
shimazu
2017/06/19 03:53:30
Done.
| |
204 ServiceWorkerVersion* version, | |
205 std::unique_ptr<ServiceWorkerProviderHost> provider_host, | |
206 base::WeakPtr<ServiceWorkerContextCore> context, | |
207 int process_id) { | |
208 auto info = | |
209 provider_host->CompleteStartWorkerPreparation(process_id, version); | |
210 context->AddProviderHost(std::move(provider_host)); | |
211 return info; | |
212 } | |
213 | |
203 } // namespace | 214 } // namespace |
204 | 215 |
205 const int ServiceWorkerVersion::kTimeoutTimerDelaySeconds = 30; | 216 const int ServiceWorkerVersion::kTimeoutTimerDelaySeconds = 30; |
206 const int ServiceWorkerVersion::kStartInstalledWorkerTimeoutSeconds = 60; | 217 const int ServiceWorkerVersion::kStartInstalledWorkerTimeoutSeconds = 60; |
207 const int ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes = 5; | 218 const int ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes = 5; |
208 const int ServiceWorkerVersion::kRequestTimeoutMinutes = 5; | 219 const int ServiceWorkerVersion::kRequestTimeoutMinutes = 5; |
209 const int ServiceWorkerVersion::kStopWorkerTimeoutSeconds = 5; | 220 const int ServiceWorkerVersion::kStopWorkerTimeoutSeconds = 5; |
210 | 221 |
211 void ServiceWorkerVersion::RestartTick(base::TimeTicks* time) const { | 222 void ServiceWorkerVersion::RestartTick(base::TimeTicks* time) const { |
212 *time = tick_clock_->NowTicks(); | 223 *time = tick_clock_->NowTicks(); |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
840 ServiceWorkerMetrics::EventType event_type) | 851 ServiceWorkerMetrics::EventType event_type) |
841 : error_callback(callback), | 852 : error_callback(callback), |
842 start_time(time), | 853 start_time(time), |
843 start_time_ticks(time_ticks), | 854 start_time_ticks(time_ticks), |
844 event_type(event_type) {} | 855 event_type(event_type) {} |
845 | 856 |
846 ServiceWorkerVersion::PendingRequest::~PendingRequest() {} | 857 ServiceWorkerVersion::PendingRequest::~PendingRequest() {} |
847 | 858 |
848 void ServiceWorkerVersion::OnThreadStarted() { | 859 void ServiceWorkerVersion::OnThreadStarted() { |
849 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status()); | 860 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status()); |
861 DCHECK(provider_host_); | |
862 provider_host_->SetReadyToSendMessagesToWorker( | |
863 embedded_worker()->thread_id()); | |
850 // Activate ping/pong now that JavaScript execution will start. | 864 // Activate ping/pong now that JavaScript execution will start. |
851 ping_controller_->Activate(); | 865 ping_controller_->Activate(); |
852 } | 866 } |
853 | 867 |
854 void ServiceWorkerVersion::OnStarting() { | 868 void ServiceWorkerVersion::OnStarting() { |
855 for (auto& observer : listeners_) | 869 for (auto& observer : listeners_) |
856 observer.OnRunningStateChanged(this); | 870 observer.OnRunningStateChanged(this); |
857 } | 871 } |
858 | 872 |
859 void ServiceWorkerVersion::OnStarted() { | 873 void ServiceWorkerVersion::OnStarted() { |
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1459 DCHECK_EQ(EmbeddedWorkerStatus::STOPPED, running_status()); | 1473 DCHECK_EQ(EmbeddedWorkerStatus::STOPPED, running_status()); |
1460 | 1474 |
1461 if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) { | 1475 if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) { |
1462 DCHECK(!event_recorder_); | 1476 DCHECK(!event_recorder_); |
1463 event_recorder_ = | 1477 event_recorder_ = |
1464 base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(); | 1478 base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(); |
1465 } | 1479 } |
1466 | 1480 |
1467 StartTimeoutTimer(); | 1481 StartTimeoutTimer(); |
1468 | 1482 |
1483 std::unique_ptr<ServiceWorkerProviderHost> pending_provider_host = | |
1484 ServiceWorkerProviderHost::PreCreateForController(context()); | |
1485 provider_host_ = pending_provider_host->AsWeakPtr(); | |
1486 | |
1469 auto params = base::MakeUnique<EmbeddedWorkerStartParams>(); | 1487 auto params = base::MakeUnique<EmbeddedWorkerStartParams>(); |
1470 params->service_worker_version_id = version_id_; | 1488 params->service_worker_version_id = version_id_; |
1471 params->scope = scope_; | 1489 params->scope = scope_; |
1472 params->script_url = script_url_; | 1490 params->script_url = script_url_; |
1473 params->is_installed = IsInstalled(status_); | 1491 params->is_installed = IsInstalled(status_); |
1474 params->pause_after_download = pause_after_download_; | 1492 params->pause_after_download = pause_after_download_; |
1475 | 1493 |
1476 embedded_worker_->Start( | 1494 embedded_worker_->Start( |
1477 std::move(params), mojo::MakeRequest(&event_dispatcher_), | 1495 std::move(params), |
1496 base::BindOnce(&CompleteProviderHostPreperation, base::Unretained(this), | |
kinuko
2017/06/16 09:33:50
Maybe comment about why Unretained is fine (e.g. p
shimazu
2017/06/19 03:53:30
Done.
| |
1497 base::Passed(&pending_provider_host), context()), | |
1498 mojo::MakeRequest(&event_dispatcher_), | |
1478 base::Bind(&ServiceWorkerVersion::OnStartSentAndScriptEvaluated, | 1499 base::Bind(&ServiceWorkerVersion::OnStartSentAndScriptEvaluated, |
1479 weak_factory_.GetWeakPtr())); | 1500 weak_factory_.GetWeakPtr())); |
1480 event_dispatcher_.set_connection_error_handler(base::Bind( | 1501 event_dispatcher_.set_connection_error_handler(base::Bind( |
1481 &OnEventDispatcherConnectionError, embedded_worker_->AsWeakPtr())); | 1502 &OnEventDispatcherConnectionError, embedded_worker_->AsWeakPtr())); |
1482 } | 1503 } |
1483 | 1504 |
1484 void ServiceWorkerVersion::StartTimeoutTimer() { | 1505 void ServiceWorkerVersion::StartTimeoutTimer() { |
1485 DCHECK(!timeout_timer_.IsRunning()); | 1506 DCHECK(!timeout_timer_.IsRunning()); |
1486 | 1507 |
1487 if (embedded_worker_->devtools_attached()) { | 1508 if (embedded_worker_->devtools_attached()) { |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1859 | 1880 |
1860 void ServiceWorkerVersion::CleanUpExternalRequest( | 1881 void ServiceWorkerVersion::CleanUpExternalRequest( |
1861 const std::string& request_uuid, | 1882 const std::string& request_uuid, |
1862 ServiceWorkerStatusCode status) { | 1883 ServiceWorkerStatusCode status) { |
1863 if (status == SERVICE_WORKER_OK) | 1884 if (status == SERVICE_WORKER_OK) |
1864 return; | 1885 return; |
1865 external_request_uuid_to_request_id_.erase(request_uuid); | 1886 external_request_uuid_to_request_id_.erase(request_uuid); |
1866 } | 1887 } |
1867 | 1888 |
1868 } // namespace content | 1889 } // namespace content |
OLD | NEW |