Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(488)

Side by Side Diff: content/browser/service_worker/embedded_worker_instance.cc

Issue 2787883003: [ServiceWorker] Add EmbeddedWorkerInstanceHost Interface. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698