| 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/embedded_worker_instance.h" | 5 #include "content/browser/service_worker/embedded_worker_instance.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 EmbeddedWorkerInstance::EmbeddedWorkerInstance( | 549 EmbeddedWorkerInstance::EmbeddedWorkerInstance( |
| 550 base::WeakPtr<ServiceWorkerContextCore> context, | 550 base::WeakPtr<ServiceWorkerContextCore> context, |
| 551 int embedded_worker_id) | 551 int embedded_worker_id) |
| 552 : context_(context), | 552 : context_(context), |
| 553 registry_(context->embedded_worker_registry()), | 553 registry_(context->embedded_worker_registry()), |
| 554 embedded_worker_id_(embedded_worker_id), | 554 embedded_worker_id_(embedded_worker_id), |
| 555 status_(EmbeddedWorkerStatus::STOPPED), | 555 status_(EmbeddedWorkerStatus::STOPPED), |
| 556 starting_phase_(NOT_STARTING), | 556 starting_phase_(NOT_STARTING), |
| 557 restart_count_(0), | 557 restart_count_(0), |
| 558 thread_id_(kInvalidEmbeddedWorkerThreadId), | 558 thread_id_(kInvalidEmbeddedWorkerThreadId), |
| 559 instance_host_binding_(this), |
| 559 devtools_attached_(false), | 560 devtools_attached_(false), |
| 560 network_accessed_for_script_(false), | 561 network_accessed_for_script_(false), |
| 561 weak_factory_(this) {} | 562 weak_factory_(this) {} |
| 562 | 563 |
| 563 void EmbeddedWorkerInstance::OnProcessAllocated( | 564 void EmbeddedWorkerInstance::OnProcessAllocated( |
| 564 std::unique_ptr<WorkerProcessHandle> handle, | 565 std::unique_ptr<WorkerProcessHandle> handle, |
| 565 ServiceWorkerMetrics::StartSituation start_situation) { | 566 ServiceWorkerMetrics::StartSituation start_situation) { |
| 566 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); | 567 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); |
| 567 DCHECK(!process_handle_); | 568 DCHECK(!process_handle_); |
| 568 | 569 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 588 step_time_ = base::TimeTicks(); | 589 step_time_ = base::TimeTicks(); |
| 589 } | 590 } |
| 590 for (auto& observer : listener_list_) | 591 for (auto& observer : listener_list_) |
| 591 observer.OnRegisteredToDevToolsManager(); | 592 observer.OnRegisteredToDevToolsManager(); |
| 592 } | 593 } |
| 593 | 594 |
| 594 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendStartWorker( | 595 ServiceWorkerStatusCode EmbeddedWorkerInstance::SendStartWorker( |
| 595 std::unique_ptr<EmbeddedWorkerStartParams> params) { | 596 std::unique_ptr<EmbeddedWorkerStartParams> params) { |
| 596 if (!context_) | 597 if (!context_) |
| 597 return SERVICE_WORKER_ERROR_ABORT; | 598 return SERVICE_WORKER_ERROR_ABORT; |
| 599 |
| 600 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo host_ptr_info; |
| 601 instance_host_binding_.Bind(&host_ptr_info); |
| 602 |
| 598 DCHECK(pending_dispatcher_request_.is_pending()); | 603 DCHECK(pending_dispatcher_request_.is_pending()); |
| 599 client_->StartWorker(*params, std::move(pending_dispatcher_request_)); | 604 client_->StartWorker(*params, std::move(pending_dispatcher_request_), |
| 605 std::move(host_ptr_info)); |
| 600 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); | 606 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); |
| 601 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", | 607 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 602 this, "SendStartWorker"); | 608 this, "SendStartWorker"); |
| 603 OnStartWorkerMessageSent(); | 609 OnStartWorkerMessageSent(); |
| 604 return SERVICE_WORKER_OK; | 610 return SERVICE_WORKER_OK; |
| 605 } | 611 } |
| 606 | 612 |
| 607 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { | 613 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { |
| 608 if (!step_time_.is_null()) { | 614 if (!step_time_.is_null()) { |
| 609 base::TimeDelta duration = UpdateStepTime(); | 615 base::TimeDelta duration = UpdateStepTime(); |
| 610 if (inflight_start_task_->is_installed()) { | 616 if (inflight_start_task_->is_installed()) { |
| 611 ServiceWorkerMetrics::RecordTimeToSendStartWorker(duration, | 617 ServiceWorkerMetrics::RecordTimeToSendStartWorker(duration, |
| 612 start_situation_); | 618 start_situation_); |
| 613 } | 619 } |
| 614 } | 620 } |
| 615 | 621 |
| 616 starting_phase_ = SENT_START_WORKER; | 622 starting_phase_ = SENT_START_WORKER; |
| 617 for (auto& observer : listener_list_) | 623 for (auto& observer : listener_list_) |
| 618 observer.OnStartWorkerMessageSent(); | 624 observer.OnStartWorkerMessageSent(); |
| 619 } | 625 } |
| 620 | 626 |
| 621 void EmbeddedWorkerInstance::OnReadyForInspection() { | 627 void EmbeddedWorkerInstance::OnReadyForInspection() { |
| 628 TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnReadyForInspection"); |
| 622 if (devtools_proxy_) | 629 if (devtools_proxy_) |
| 623 devtools_proxy_->NotifyWorkerReadyForInspection(); | 630 devtools_proxy_->NotifyWorkerReadyForInspection(); |
| 624 } | 631 } |
| 625 | 632 |
| 626 void EmbeddedWorkerInstance::OnScriptReadStarted() { | 633 void EmbeddedWorkerInstance::OnScriptReadStarted() { |
| 627 starting_phase_ = SCRIPT_READ_STARTED; | 634 starting_phase_ = SCRIPT_READ_STARTED; |
| 628 } | 635 } |
| 629 | 636 |
| 630 void EmbeddedWorkerInstance::OnScriptReadFinished() { | 637 void EmbeddedWorkerInstance::OnScriptReadFinished() { |
| 631 starting_phase_ = SCRIPT_READ_FINISHED; | 638 starting_phase_ = SCRIPT_READ_FINISHED; |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 case SCRIPT_READ_FINISHED: | 926 case SCRIPT_READ_FINISHED: |
| 920 return "Script read finished"; | 927 return "Script read finished"; |
| 921 case STARTING_PHASE_MAX_VALUE: | 928 case STARTING_PHASE_MAX_VALUE: |
| 922 NOTREACHED(); | 929 NOTREACHED(); |
| 923 } | 930 } |
| 924 NOTREACHED() << phase; | 931 NOTREACHED() << phase; |
| 925 return std::string(); | 932 return std::string(); |
| 926 } | 933 } |
| 927 | 934 |
| 928 } // namespace content | 935 } // namespace content |
| OLD | NEW |