| 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 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 DCHECK(status_ == EmbeddedWorkerStatus::STOPPED); | 445 DCHECK(status_ == EmbeddedWorkerStatus::STOPPED); |
| 446 | 446 |
| 447 DCHECK(!params->pause_after_download || !params->is_installed); | 447 DCHECK(!params->pause_after_download || !params->is_installed); |
| 448 DCHECK_NE(kInvalidServiceWorkerVersionId, params->service_worker_version_id); | 448 DCHECK_NE(kInvalidServiceWorkerVersionId, params->service_worker_version_id); |
| 449 step_time_ = base::TimeTicks::Now(); | 449 step_time_ = base::TimeTicks::Now(); |
| 450 status_ = EmbeddedWorkerStatus::STARTING; | 450 status_ = EmbeddedWorkerStatus::STARTING; |
| 451 starting_phase_ = ALLOCATING_PROCESS; | 451 starting_phase_ = ALLOCATING_PROCESS; |
| 452 network_accessed_for_script_ = false; | 452 network_accessed_for_script_ = false; |
| 453 interface_registry_.reset(new service_manager::InterfaceRegistry); | 453 interface_registry_.reset(new service_manager::InterfaceRegistry); |
| 454 remote_interfaces_.reset(new service_manager::InterfaceProvider); | 454 remote_interfaces_.reset(new service_manager::InterfaceProvider); |
| 455 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarting()); | 455 for (auto& observer : listener_list_) |
| 456 observer.OnStarting(); |
| 456 | 457 |
| 457 params->embedded_worker_id = embedded_worker_id_; | 458 params->embedded_worker_id = embedded_worker_id_; |
| 458 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; | 459 params->worker_devtools_agent_route_id = MSG_ROUTING_NONE; |
| 459 params->wait_for_debugger = false; | 460 params->wait_for_debugger = false; |
| 460 params->settings.v8_cache_options = GetV8CacheOptions(); | 461 params->settings.v8_cache_options = GetV8CacheOptions(); |
| 461 | 462 |
| 462 mojom::EmbeddedWorkerInstanceClientRequest request; | 463 mojom::EmbeddedWorkerInstanceClientRequest request; |
| 463 if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { | 464 if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) { |
| 464 request = mojo::GetProxy(&client_); | 465 request = mojo::GetProxy(&client_); |
| 465 client_.set_connection_error_handler( | 466 client_.set_connection_error_handler( |
| (...skipping 25 matching lines...) Expand all Loading... |
| 491 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.SendStopWorker.Status", status, | 492 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.SendStopWorker.Status", status, |
| 492 SERVICE_WORKER_ERROR_MAX_VALUE); | 493 SERVICE_WORKER_ERROR_MAX_VALUE); |
| 493 // StopWorker could fail if we were starting up and don't have a process yet, | 494 // StopWorker could fail if we were starting up and don't have a process yet, |
| 494 // or we can no longer communicate with the process. So just detach. | 495 // or we can no longer communicate with the process. So just detach. |
| 495 if (status != SERVICE_WORKER_OK) { | 496 if (status != SERVICE_WORKER_OK) { |
| 496 OnDetached(); | 497 OnDetached(); |
| 497 return status; | 498 return status; |
| 498 } | 499 } |
| 499 | 500 |
| 500 status_ = EmbeddedWorkerStatus::STOPPING; | 501 status_ = EmbeddedWorkerStatus::STOPPING; |
| 501 FOR_EACH_OBSERVER(Listener, listener_list_, OnStopping()); | 502 for (auto& observer : listener_list_) |
| 503 observer.OnStopping(); |
| 502 return status; | 504 return status; |
| 503 } | 505 } |
| 504 | 506 |
| 505 void EmbeddedWorkerInstance::StopIfIdle() { | 507 void EmbeddedWorkerInstance::StopIfIdle() { |
| 506 if (devtools_attached_) { | 508 if (devtools_attached_) { |
| 507 if (devtools_proxy_) { | 509 if (devtools_proxy_) { |
| 508 // Check ShouldNotifyWorkerStopIgnored not to show the same message | 510 // Check ShouldNotifyWorkerStopIgnored not to show the same message |
| 509 // multiple times in DevTools. | 511 // multiple times in DevTools. |
| 510 if (devtools_proxy_->ShouldNotifyWorkerStopIgnored()) { | 512 if (devtools_proxy_->ShouldNotifyWorkerStopIgnored()) { |
| 511 AddMessageToConsole(CONSOLE_MESSAGE_LEVEL_DEBUG, | 513 AddMessageToConsole(CONSOLE_MESSAGE_LEVEL_DEBUG, |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 | 572 |
| 571 void EmbeddedWorkerInstance::OnProcessAllocated( | 573 void EmbeddedWorkerInstance::OnProcessAllocated( |
| 572 std::unique_ptr<WorkerProcessHandle> handle, | 574 std::unique_ptr<WorkerProcessHandle> handle, |
| 573 ServiceWorkerMetrics::StartSituation start_situation) { | 575 ServiceWorkerMetrics::StartSituation start_situation) { |
| 574 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); | 576 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); |
| 575 DCHECK(!process_handle_); | 577 DCHECK(!process_handle_); |
| 576 | 578 |
| 577 process_handle_ = std::move(handle); | 579 process_handle_ = std::move(handle); |
| 578 starting_phase_ = REGISTERING_TO_DEVTOOLS; | 580 starting_phase_ = REGISTERING_TO_DEVTOOLS; |
| 579 start_situation_ = start_situation; | 581 start_situation_ = start_situation; |
| 580 FOR_EACH_OBSERVER(Listener, listener_list_, OnProcessAllocated()); | 582 for (auto& observer : listener_list_) |
| 583 observer.OnProcessAllocated(); |
| 581 } | 584 } |
| 582 | 585 |
| 583 void EmbeddedWorkerInstance::OnRegisteredToDevToolsManager( | 586 void EmbeddedWorkerInstance::OnRegisteredToDevToolsManager( |
| 584 bool is_new_process, | 587 bool is_new_process, |
| 585 int worker_devtools_agent_route_id, | 588 int worker_devtools_agent_route_id, |
| 586 bool wait_for_debugger) { | 589 bool wait_for_debugger) { |
| 587 if (worker_devtools_agent_route_id != MSG_ROUTING_NONE) { | 590 if (worker_devtools_agent_route_id != MSG_ROUTING_NONE) { |
| 588 DCHECK(!devtools_proxy_); | 591 DCHECK(!devtools_proxy_); |
| 589 devtools_proxy_.reset( | 592 devtools_proxy_.reset( |
| 590 new DevToolsProxy(process_id(), worker_devtools_agent_route_id)); | 593 new DevToolsProxy(process_id(), worker_devtools_agent_route_id)); |
| 591 } | 594 } |
| 592 if (wait_for_debugger) { | 595 if (wait_for_debugger) { |
| 593 // We don't measure the start time when wait_for_debugger flag is set. So | 596 // We don't measure the start time when wait_for_debugger flag is set. So |
| 594 // we set the NULL time here. | 597 // we set the NULL time here. |
| 595 step_time_ = base::TimeTicks(); | 598 step_time_ = base::TimeTicks(); |
| 596 } | 599 } |
| 597 FOR_EACH_OBSERVER(Listener, listener_list_, OnRegisteredToDevToolsManager()); | 600 for (auto& observer : listener_list_) |
| 601 observer.OnRegisteredToDevToolsManager(); |
| 598 } | 602 } |
| 599 | 603 |
| 600 void EmbeddedWorkerInstance::SendMojoStartWorker( | 604 void EmbeddedWorkerInstance::SendMojoStartWorker( |
| 601 std::unique_ptr<EmbeddedWorkerStartParams> params) { | 605 std::unique_ptr<EmbeddedWorkerStartParams> params) { |
| 602 client_->StartWorker(*params); | 606 client_->StartWorker(*params); |
| 603 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); | 607 registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); |
| 604 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", | 608 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 605 this, "SendStartWorker", "Status", "mojo"); | 609 this, "SendStartWorker", "Status", "mojo"); |
| 606 OnStartWorkerMessageSent(); | 610 OnStartWorkerMessageSent(); |
| 607 } | 611 } |
| 608 | 612 |
| 609 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { | 613 void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { |
| 610 if (!step_time_.is_null()) { | 614 if (!step_time_.is_null()) { |
| 611 base::TimeDelta duration = UpdateStepTime(); | 615 base::TimeDelta duration = UpdateStepTime(); |
| 612 if (inflight_start_task_->is_installed()) { | 616 if (inflight_start_task_->is_installed()) { |
| 613 ServiceWorkerMetrics::RecordTimeToSendStartWorker(duration, | 617 ServiceWorkerMetrics::RecordTimeToSendStartWorker(duration, |
| 614 start_situation_); | 618 start_situation_); |
| 615 } | 619 } |
| 616 } | 620 } |
| 617 | 621 |
| 618 starting_phase_ = SENT_START_WORKER; | 622 starting_phase_ = SENT_START_WORKER; |
| 619 FOR_EACH_OBSERVER(Listener, listener_list_, OnStartWorkerMessageSent()); | 623 for (auto& observer : listener_list_) |
| 624 observer.OnStartWorkerMessageSent(); |
| 620 } | 625 } |
| 621 | 626 |
| 622 void EmbeddedWorkerInstance::OnReadyForInspection() { | 627 void EmbeddedWorkerInstance::OnReadyForInspection() { |
| 623 if (devtools_proxy_) | 628 if (devtools_proxy_) |
| 624 devtools_proxy_->NotifyWorkerReadyForInspection(); | 629 devtools_proxy_->NotifyWorkerReadyForInspection(); |
| 625 } | 630 } |
| 626 | 631 |
| 627 void EmbeddedWorkerInstance::OnScriptReadStarted() { | 632 void EmbeddedWorkerInstance::OnScriptReadStarted() { |
| 628 starting_phase_ = SCRIPT_READ_STARTED; | 633 starting_phase_ = SCRIPT_READ_STARTED; |
| 629 } | 634 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 650 "ServiceWorker", "EmbeddedWorkerInstance::Start", | 655 "ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 651 inflight_start_task_.get(), "OnScriptLoaded", "Source", | 656 inflight_start_task_.get(), "OnScriptLoaded", "Source", |
| 652 ServiceWorkerMetrics::LoadSourceToString(source)); | 657 ServiceWorkerMetrics::LoadSourceToString(source)); |
| 653 | 658 |
| 654 if (!step_time_.is_null()) { | 659 if (!step_time_.is_null()) { |
| 655 base::TimeDelta duration = UpdateStepTime(); | 660 base::TimeDelta duration = UpdateStepTime(); |
| 656 ServiceWorkerMetrics::RecordTimeToLoad(duration, source, start_situation_); | 661 ServiceWorkerMetrics::RecordTimeToLoad(duration, source, start_situation_); |
| 657 } | 662 } |
| 658 | 663 |
| 659 starting_phase_ = SCRIPT_LOADED; | 664 starting_phase_ = SCRIPT_LOADED; |
| 660 FOR_EACH_OBSERVER(Listener, listener_list_, OnScriptLoaded()); | 665 for (auto& observer : listener_list_) |
| 666 observer.OnScriptLoaded(); |
| 661 // |this| may be destroyed by the callback. | 667 // |this| may be destroyed by the callback. |
| 662 } | 668 } |
| 663 | 669 |
| 664 void EmbeddedWorkerInstance::OnURLJobCreatedForMainScript() { | 670 void EmbeddedWorkerInstance::OnURLJobCreatedForMainScript() { |
| 665 if (!inflight_start_task_) | 671 if (!inflight_start_task_) |
| 666 return; | 672 return; |
| 667 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", | 673 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 668 inflight_start_task_.get(), "OnURLJobCreated"); | 674 inflight_start_task_.get(), "OnURLJobCreated"); |
| 669 if (!step_time_.is_null()) { | 675 if (!step_time_.is_null()) { |
| 670 base::TimeDelta duration = UpdateStepTime(); | 676 base::TimeDelta duration = UpdateStepTime(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 690 inflight_start_task_.get(), "OnThreadStarted"); | 696 inflight_start_task_.get(), "OnThreadStarted"); |
| 691 | 697 |
| 692 starting_phase_ = THREAD_STARTED; | 698 starting_phase_ = THREAD_STARTED; |
| 693 if (!step_time_.is_null()) { | 699 if (!step_time_.is_null()) { |
| 694 base::TimeDelta duration = UpdateStepTime(); | 700 base::TimeDelta duration = UpdateStepTime(); |
| 695 if (inflight_start_task_->is_installed()) | 701 if (inflight_start_task_->is_installed()) |
| 696 ServiceWorkerMetrics::RecordTimeToStartThread(duration, start_situation_); | 702 ServiceWorkerMetrics::RecordTimeToStartThread(duration, start_situation_); |
| 697 } | 703 } |
| 698 | 704 |
| 699 thread_id_ = thread_id; | 705 thread_id_ = thread_id; |
| 700 FOR_EACH_OBSERVER(Listener, listener_list_, OnThreadStarted()); | 706 for (auto& observer : listener_list_) |
| 707 observer.OnThreadStarted(); |
| 701 | 708 |
| 702 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; | 709 service_manager::mojom::InterfaceProviderPtr exposed_interfaces; |
| 703 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces)); | 710 interface_registry_->Bind(mojo::GetProxy(&exposed_interfaces)); |
| 704 service_manager::mojom::InterfaceProviderPtr remote_interfaces; | 711 service_manager::mojom::InterfaceProviderPtr remote_interfaces; |
| 705 service_manager::mojom::InterfaceProviderRequest request = | 712 service_manager::mojom::InterfaceProviderRequest request = |
| 706 mojo::GetProxy(&remote_interfaces); | 713 mojo::GetProxy(&remote_interfaces); |
| 707 remote_interfaces_->Bind(std::move(remote_interfaces)); | 714 remote_interfaces_->Bind(std::move(remote_interfaces)); |
| 708 BrowserThread::PostTask( | 715 BrowserThread::PostTask( |
| 709 BrowserThread::UI, FROM_HERE, | 716 BrowserThread::UI, FROM_HERE, |
| 710 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, | 717 base::Bind(SetupMojoOnUIThread, process_id(), thread_id_, |
| 711 base::Passed(&request), | 718 base::Passed(&request), |
| 712 base::Passed(exposed_interfaces.PassInterface()))); | 719 base::Passed(exposed_interfaces.PassInterface()))); |
| 713 } | 720 } |
| 714 | 721 |
| 715 void EmbeddedWorkerInstance::OnScriptLoadFailed() { | 722 void EmbeddedWorkerInstance::OnScriptLoadFailed() { |
| 716 if (!inflight_start_task_) | 723 if (!inflight_start_task_) |
| 717 return; | 724 return; |
| 718 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", | 725 TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 719 inflight_start_task_.get(), | 726 inflight_start_task_.get(), |
| 720 "OnScriptLoadFailed"); | 727 "OnScriptLoadFailed"); |
| 721 FOR_EACH_OBSERVER(Listener, listener_list_, OnScriptLoadFailed()); | 728 for (auto& observer : listener_list_) |
| 729 observer.OnScriptLoadFailed(); |
| 722 } | 730 } |
| 723 | 731 |
| 724 void EmbeddedWorkerInstance::OnScriptEvaluated(bool success) { | 732 void EmbeddedWorkerInstance::OnScriptEvaluated(bool success) { |
| 725 if (!inflight_start_task_) | 733 if (!inflight_start_task_) |
| 726 return; | 734 return; |
| 727 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); | 735 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); |
| 728 | 736 |
| 729 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", | 737 TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", |
| 730 inflight_start_task_.get(), "OnScriptEvaluated", | 738 inflight_start_task_.get(), "OnScriptEvaluated", |
| 731 "Success", success); | 739 "Success", success); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 745 // |this| may be destroyed by the callback. | 753 // |this| may be destroyed by the callback. |
| 746 } | 754 } |
| 747 | 755 |
| 748 void EmbeddedWorkerInstance::OnStarted() { | 756 void EmbeddedWorkerInstance::OnStarted() { |
| 749 // Stop is requested before OnStarted is sent back from the worker. | 757 // Stop is requested before OnStarted is sent back from the worker. |
| 750 if (status_ == EmbeddedWorkerStatus::STOPPING) | 758 if (status_ == EmbeddedWorkerStatus::STOPPING) |
| 751 return; | 759 return; |
| 752 DCHECK(status_ == EmbeddedWorkerStatus::STARTING); | 760 DCHECK(status_ == EmbeddedWorkerStatus::STARTING); |
| 753 status_ = EmbeddedWorkerStatus::RUNNING; | 761 status_ = EmbeddedWorkerStatus::RUNNING; |
| 754 inflight_start_task_.reset(); | 762 inflight_start_task_.reset(); |
| 755 FOR_EACH_OBSERVER(Listener, listener_list_, OnStarted()); | 763 for (auto& observer : listener_list_) |
| 764 observer.OnStarted(); |
| 756 } | 765 } |
| 757 | 766 |
| 758 void EmbeddedWorkerInstance::OnStopped() { | 767 void EmbeddedWorkerInstance::OnStopped() { |
| 759 EmbeddedWorkerStatus old_status = status_; | 768 EmbeddedWorkerStatus old_status = status_; |
| 760 ReleaseProcess(); | 769 ReleaseProcess(); |
| 761 FOR_EACH_OBSERVER(Listener, listener_list_, OnStopped(old_status)); | 770 for (auto& observer : listener_list_) |
| 771 observer.OnStopped(old_status); |
| 762 } | 772 } |
| 763 | 773 |
| 764 void EmbeddedWorkerInstance::OnDetached() { | 774 void EmbeddedWorkerInstance::OnDetached() { |
| 765 EmbeddedWorkerStatus old_status = status_; | 775 EmbeddedWorkerStatus old_status = status_; |
| 766 ReleaseProcess(); | 776 ReleaseProcess(); |
| 767 FOR_EACH_OBSERVER(Listener, listener_list_, OnDetached(old_status)); | 777 for (auto& observer : listener_list_) |
| 778 observer.OnDetached(old_status); |
| 768 } | 779 } |
| 769 | 780 |
| 770 void EmbeddedWorkerInstance::Detach() { | 781 void EmbeddedWorkerInstance::Detach() { |
| 771 registry_->DetachWorker(process_id(), embedded_worker_id()); | 782 registry_->DetachWorker(process_id(), embedded_worker_id()); |
| 772 OnDetached(); | 783 OnDetached(); |
| 773 } | 784 } |
| 774 | 785 |
| 775 base::WeakPtr<EmbeddedWorkerInstance> EmbeddedWorkerInstance::AsWeakPtr() { | 786 base::WeakPtr<EmbeddedWorkerInstance> EmbeddedWorkerInstance::AsWeakPtr() { |
| 776 return weak_factory_.GetWeakPtr(); | 787 return weak_factory_.GetWeakPtr(); |
| 777 } | 788 } |
| 778 | 789 |
| 779 bool EmbeddedWorkerInstance::OnMessageReceived(const IPC::Message& message) { | 790 bool EmbeddedWorkerInstance::OnMessageReceived(const IPC::Message& message) { |
| 780 for (auto& listener : listener_list_) { | 791 for (auto& listener : listener_list_) { |
| 781 if (listener.OnMessageReceived(message)) | 792 if (listener.OnMessageReceived(message)) |
| 782 return true; | 793 return true; |
| 783 } | 794 } |
| 784 return false; | 795 return false; |
| 785 } | 796 } |
| 786 | 797 |
| 787 void EmbeddedWorkerInstance::OnReportException( | 798 void EmbeddedWorkerInstance::OnReportException( |
| 788 const base::string16& error_message, | 799 const base::string16& error_message, |
| 789 int line_number, | 800 int line_number, |
| 790 int column_number, | 801 int column_number, |
| 791 const GURL& source_url) { | 802 const GURL& source_url) { |
| 792 FOR_EACH_OBSERVER( | 803 for (auto& observer : listener_list_) { |
| 793 Listener, | 804 observer.OnReportException(error_message, line_number, column_number, |
| 794 listener_list_, | 805 source_url); |
| 795 OnReportException(error_message, line_number, column_number, source_url)); | 806 } |
| 796 } | 807 } |
| 797 | 808 |
| 798 void EmbeddedWorkerInstance::OnReportConsoleMessage( | 809 void EmbeddedWorkerInstance::OnReportConsoleMessage( |
| 799 int source_identifier, | 810 int source_identifier, |
| 800 int message_level, | 811 int message_level, |
| 801 const base::string16& message, | 812 const base::string16& message, |
| 802 int line_number, | 813 int line_number, |
| 803 const GURL& source_url) { | 814 const GURL& source_url) { |
| 804 FOR_EACH_OBSERVER( | 815 for (auto& observer : listener_list_) { |
| 805 Listener, | 816 observer.OnReportConsoleMessage(source_identifier, message_level, message, |
| 806 listener_list_, | 817 line_number, source_url); |
| 807 OnReportConsoleMessage( | 818 } |
| 808 source_identifier, message_level, message, line_number, source_url)); | |
| 809 } | 819 } |
| 810 | 820 |
| 811 int EmbeddedWorkerInstance::process_id() const { | 821 int EmbeddedWorkerInstance::process_id() const { |
| 812 if (process_handle_) | 822 if (process_handle_) |
| 813 return process_handle_->process_id(); | 823 return process_handle_->process_id(); |
| 814 return ChildProcessHost::kInvalidUniqueID; | 824 return ChildProcessHost::kInvalidUniqueID; |
| 815 } | 825 } |
| 816 | 826 |
| 817 bool EmbeddedWorkerInstance::is_new_process() const { | 827 bool EmbeddedWorkerInstance::is_new_process() const { |
| 818 DCHECK(process_handle_); | 828 DCHECK(process_handle_); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 interface_registry_.reset(); | 865 interface_registry_.reset(); |
| 856 remote_interfaces_.reset(); | 866 remote_interfaces_.reset(); |
| 857 } | 867 } |
| 858 | 868 |
| 859 void EmbeddedWorkerInstance::OnStartFailed(const StatusCallback& callback, | 869 void EmbeddedWorkerInstance::OnStartFailed(const StatusCallback& callback, |
| 860 ServiceWorkerStatusCode status) { | 870 ServiceWorkerStatusCode status) { |
| 861 EmbeddedWorkerStatus old_status = status_; | 871 EmbeddedWorkerStatus old_status = status_; |
| 862 ReleaseProcess(); | 872 ReleaseProcess(); |
| 863 base::WeakPtr<EmbeddedWorkerInstance> weak_this = weak_factory_.GetWeakPtr(); | 873 base::WeakPtr<EmbeddedWorkerInstance> weak_this = weak_factory_.GetWeakPtr(); |
| 864 callback.Run(status); | 874 callback.Run(status); |
| 865 if (weak_this && old_status != EmbeddedWorkerStatus::STOPPED) | 875 if (weak_this && old_status != EmbeddedWorkerStatus::STOPPED) { |
| 866 FOR_EACH_OBSERVER(Listener, weak_this->listener_list_, | 876 for (auto& observer : weak_this->listener_list_) |
| 867 OnStopped(old_status)); | 877 observer.OnStopped(old_status); |
| 878 } |
| 868 } | 879 } |
| 869 | 880 |
| 870 base::TimeDelta EmbeddedWorkerInstance::UpdateStepTime() { | 881 base::TimeDelta EmbeddedWorkerInstance::UpdateStepTime() { |
| 871 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 882 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 872 DCHECK(!step_time_.is_null()); | 883 DCHECK(!step_time_.is_null()); |
| 873 base::TimeTicks now = base::TimeTicks::Now(); | 884 base::TimeTicks now = base::TimeTicks::Now(); |
| 874 base::TimeDelta duration = now - step_time_; | 885 base::TimeDelta duration = now - step_time_; |
| 875 step_time_ = now; | 886 step_time_ = now; |
| 876 return duration; | 887 return duration; |
| 877 } | 888 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 927 case SCRIPT_READ_FINISHED: | 938 case SCRIPT_READ_FINISHED: |
| 928 return "Script read finished"; | 939 return "Script read finished"; |
| 929 case STARTING_PHASE_MAX_VALUE: | 940 case STARTING_PHASE_MAX_VALUE: |
| 930 NOTREACHED(); | 941 NOTREACHED(); |
| 931 } | 942 } |
| 932 NOTREACHED() << phase; | 943 NOTREACHED() << phase; |
| 933 return std::string(); | 944 return std::string(); |
| 934 } | 945 } |
| 935 | 946 |
| 936 } // namespace content | 947 } // namespace content |
| OLD | NEW |