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 <map> | 9 #include <map> |
10 #include <string> | 10 #include <string> |
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 const StatusCallback& error_callback) { | 534 const StatusCallback& error_callback) { |
535 if (running_status() == RUNNING) { | 535 if (running_status() == RUNNING) { |
536 DCHECK(start_callbacks_.empty()); | 536 DCHECK(start_callbacks_.empty()); |
537 task.Run(); | 537 task.Run(); |
538 return; | 538 return; |
539 } | 539 } |
540 StartWorker(base::Bind(&RunTaskAfterStartWorker, weak_factory_.GetWeakPtr(), | 540 StartWorker(base::Bind(&RunTaskAfterStartWorker, weak_factory_.GetWeakPtr(), |
541 error_callback, task)); | 541 error_callback, task)); |
542 } | 542 } |
543 | 543 |
| 544 void ServiceWorkerVersion::DispatchExtendableMessageEvent( |
| 545 const base::string16& message, |
| 546 const std::vector<TransferredMessagePort>& sent_message_ports, |
| 547 const StatusCallback& callback) { |
| 548 for (const TransferredMessagePort& port : sent_message_ports) |
| 549 MessagePortService::GetInstance()->HoldMessages(port.id); |
| 550 RunAfterStartWorker( |
| 551 base::Bind( |
| 552 &ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker, |
| 553 weak_factory_.GetWeakPtr(), message, sent_message_ports, callback), |
| 554 base::Bind(&RunErrorMessageCallback, sent_message_ports, callback)); |
| 555 } |
| 556 |
544 void ServiceWorkerVersion::DispatchMessageEvent( | 557 void ServiceWorkerVersion::DispatchMessageEvent( |
545 const base::string16& message, | 558 const base::string16& message, |
546 const std::vector<TransferredMessagePort>& sent_message_ports, | 559 const std::vector<TransferredMessagePort>& sent_message_ports, |
547 const StatusCallback& callback) { | 560 const StatusCallback& callback) { |
548 for (const TransferredMessagePort& port : sent_message_ports) { | 561 for (const TransferredMessagePort& port : sent_message_ports) { |
549 MessagePortService::GetInstance()->HoldMessages(port.id); | 562 MessagePortService::GetInstance()->HoldMessages(port.id); |
550 } | 563 } |
551 | 564 |
552 DispatchMessageEventInternal(message, sent_message_ports, callback); | 565 DispatchMessageEventInternal(message, sent_message_ports, callback); |
553 } | 566 } |
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 | 959 |
947 void ServiceWorkerVersion::OnStartSentAndScriptEvaluated( | 960 void ServiceWorkerVersion::OnStartSentAndScriptEvaluated( |
948 ServiceWorkerStatusCode status) { | 961 ServiceWorkerStatusCode status) { |
949 if (status != SERVICE_WORKER_OK) { | 962 if (status != SERVICE_WORKER_OK) { |
950 scoped_refptr<ServiceWorkerVersion> protect(this); | 963 scoped_refptr<ServiceWorkerVersion> protect(this); |
951 RunCallbacks(this, &start_callbacks_, | 964 RunCallbacks(this, &start_callbacks_, |
952 DeduceStartWorkerFailureReason(status)); | 965 DeduceStartWorkerFailureReason(status)); |
953 } | 966 } |
954 } | 967 } |
955 | 968 |
| 969 void ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker( |
| 970 const base::string16& message, |
| 971 const std::vector<TransferredMessagePort>& sent_message_ports, |
| 972 const StatusCallback& callback) { |
| 973 int request_id = |
| 974 StartRequest(ServiceWorkerMetrics::EventType::MESSAGE, callback); |
| 975 |
| 976 MessagePortMessageFilter* filter = |
| 977 embedded_worker_->message_port_message_filter(); |
| 978 std::vector<int> new_routing_ids; |
| 979 filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids); |
| 980 |
| 981 DispatchSimpleEvent<ServiceWorkerHostMsg_ExtendableMessageEventFinished>( |
| 982 request_id, |
| 983 ServiceWorkerMsg_ExtendableMessageEvent( |
| 984 request_id, message, sent_message_ports, new_routing_ids)); |
| 985 } |
| 986 |
956 void ServiceWorkerVersion::OnGetClients( | 987 void ServiceWorkerVersion::OnGetClients( |
957 int request_id, | 988 int request_id, |
958 const ServiceWorkerClientQueryOptions& options) { | 989 const ServiceWorkerClientQueryOptions& options) { |
959 TRACE_EVENT_ASYNC_BEGIN2( | 990 TRACE_EVENT_ASYNC_BEGIN2( |
960 "ServiceWorker", "ServiceWorkerVersion::OnGetClients", request_id, | 991 "ServiceWorker", "ServiceWorkerVersion::OnGetClients", request_id, |
961 "client_type", options.client_type, "include_uncontrolled", | 992 "client_type", options.client_type, "include_uncontrolled", |
962 options.include_uncontrolled); | 993 options.include_uncontrolled); |
963 service_worker_client_utils::GetClients( | 994 service_worker_client_utils::GetClients( |
964 weak_factory_.GetWeakPtr(), options, | 995 weak_factory_.GetWeakPtr(), options, |
965 base::Bind(&ServiceWorkerVersion::OnGetClientsFinished, | 996 base::Bind(&ServiceWorkerVersion::OnGetClientsFinished, |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1795 void ServiceWorkerVersion::OnBeginEvent() { | 1826 void ServiceWorkerVersion::OnBeginEvent() { |
1796 if (should_exclude_from_uma_ || running_status() != RUNNING || | 1827 if (should_exclude_from_uma_ || running_status() != RUNNING || |
1797 idle_time_.is_null()) { | 1828 idle_time_.is_null()) { |
1798 return; | 1829 return; |
1799 } | 1830 } |
1800 ServiceWorkerMetrics::RecordTimeBetweenEvents(base::TimeTicks::Now() - | 1831 ServiceWorkerMetrics::RecordTimeBetweenEvents(base::TimeTicks::Now() - |
1801 idle_time_); | 1832 idle_time_); |
1802 } | 1833 } |
1803 | 1834 |
1804 } // namespace content | 1835 } // namespace content |
OLD | NEW |