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 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 ServiceWorkerMetrics::EventType event_type) | 820 ServiceWorkerMetrics::EventType event_type) |
821 : error_callback(callback), | 821 : error_callback(callback), |
822 start_time(time), | 822 start_time(time), |
823 start_time_ticks(time_ticks), | 823 start_time_ticks(time_ticks), |
824 event_type(event_type) {} | 824 event_type(event_type) {} |
825 | 825 |
826 ServiceWorkerVersion::PendingRequest::~PendingRequest() {} | 826 ServiceWorkerVersion::PendingRequest::~PendingRequest() {} |
827 | 827 |
828 void ServiceWorkerVersion::OnThreadStarted() { | 828 void ServiceWorkerVersion::OnThreadStarted() { |
829 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status()); | 829 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, running_status()); |
| 830 DCHECK(provider_host_); |
| 831 provider_host_->SetReadyToSendMessagesToWorker( |
| 832 embedded_worker()->thread_id()); |
830 // Activate ping/pong now that JavaScript execution will start. | 833 // Activate ping/pong now that JavaScript execution will start. |
831 ping_controller_->Activate(); | 834 ping_controller_->Activate(); |
832 } | 835 } |
833 | 836 |
834 void ServiceWorkerVersion::OnStarting() { | 837 void ServiceWorkerVersion::OnStarting() { |
835 for (auto& observer : listeners_) | 838 for (auto& observer : listeners_) |
836 observer.OnRunningStateChanged(this); | 839 observer.OnRunningStateChanged(this); |
837 } | 840 } |
838 | 841 |
| 842 void ServiceWorkerVersion::OnStartWorkerMessageSent() { |
| 843 DCHECK(pending_provider_host_); |
| 844 context()->AddProviderHost(std::move(pending_provider_host_)); |
| 845 } |
| 846 |
839 void ServiceWorkerVersion::OnStarted() { | 847 void ServiceWorkerVersion::OnStarted() { |
840 DCHECK_EQ(EmbeddedWorkerStatus::RUNNING, running_status()); | 848 DCHECK_EQ(EmbeddedWorkerStatus::RUNNING, running_status()); |
841 RestartTick(&idle_time_); | 849 RestartTick(&idle_time_); |
842 | 850 |
843 // Fire all start callbacks. | 851 // Fire all start callbacks. |
844 scoped_refptr<ServiceWorkerVersion> protect(this); | 852 scoped_refptr<ServiceWorkerVersion> protect(this); |
845 FinishStartWorker(SERVICE_WORKER_OK); | 853 FinishStartWorker(SERVICE_WORKER_OK); |
846 for (auto& observer : listeners_) | 854 for (auto& observer : listeners_) |
847 observer.OnRunningStateChanged(this); | 855 observer.OnRunningStateChanged(this); |
848 } | 856 } |
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1421 DCHECK_EQ(EmbeddedWorkerStatus::STOPPED, running_status()); | 1429 DCHECK_EQ(EmbeddedWorkerStatus::STOPPED, running_status()); |
1422 | 1430 |
1423 if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) { | 1431 if (!ServiceWorkerMetrics::ShouldExcludeSiteFromHistogram(site_for_uma_)) { |
1424 DCHECK(!event_recorder_); | 1432 DCHECK(!event_recorder_); |
1425 event_recorder_ = | 1433 event_recorder_ = |
1426 base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(); | 1434 base::MakeUnique<ServiceWorkerMetrics::ScopedEventRecorder>(); |
1427 } | 1435 } |
1428 | 1436 |
1429 StartTimeoutTimer(); | 1437 StartTimeoutTimer(); |
1430 | 1438 |
| 1439 DCHECK(!pending_provider_host_); |
| 1440 pending_provider_host_ = |
| 1441 ServiceWorkerProviderHost::PreCreateForWorkerContext(this, context()); |
| 1442 provider_host_ = pending_provider_host_->AsWeakPtr(); |
| 1443 |
1431 auto params = base::MakeUnique<EmbeddedWorkerStartParams>(); | 1444 auto params = base::MakeUnique<EmbeddedWorkerStartParams>(); |
1432 params->service_worker_version_id = version_id_; | 1445 params->service_worker_version_id = version_id_; |
1433 params->scope = scope_; | 1446 params->scope = scope_; |
1434 params->script_url = script_url_; | 1447 params->script_url = script_url_; |
1435 params->is_installed = IsInstalled(status_); | 1448 params->is_installed = IsInstalled(status_); |
1436 params->pause_after_download = pause_after_download_; | 1449 params->pause_after_download = pause_after_download_; |
| 1450 params->controller_provider = pending_provider_host_.get(); |
1437 | 1451 |
1438 embedded_worker_->Start( | 1452 embedded_worker_->Start( |
1439 std::move(params), mojo::MakeRequest(&event_dispatcher_), | 1453 std::move(params), mojo::MakeRequest(&event_dispatcher_), |
1440 base::Bind(&ServiceWorkerVersion::OnStartSentAndScriptEvaluated, | 1454 base::Bind(&ServiceWorkerVersion::OnStartSentAndScriptEvaluated, |
1441 weak_factory_.GetWeakPtr())); | 1455 weak_factory_.GetWeakPtr())); |
1442 } | 1456 } |
1443 | 1457 |
1444 void ServiceWorkerVersion::StartTimeoutTimer() { | 1458 void ServiceWorkerVersion::StartTimeoutTimer() { |
1445 DCHECK(!timeout_timer_.IsRunning()); | 1459 DCHECK(!timeout_timer_.IsRunning()); |
1446 | 1460 |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1819 | 1833 |
1820 void ServiceWorkerVersion::CleanUpExternalRequest( | 1834 void ServiceWorkerVersion::CleanUpExternalRequest( |
1821 const std::string& request_uuid, | 1835 const std::string& request_uuid, |
1822 ServiceWorkerStatusCode status) { | 1836 ServiceWorkerStatusCode status) { |
1823 if (status == SERVICE_WORKER_OK) | 1837 if (status == SERVICE_WORKER_OK) |
1824 return; | 1838 return; |
1825 external_request_uuid_to_request_id_.erase(request_uuid); | 1839 external_request_uuid_to_request_id_.erase(request_uuid); |
1826 } | 1840 } |
1827 | 1841 |
1828 } // namespace content | 1842 } // namespace content |
OLD | NEW |