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, |
| 554 base::Bind(&RunErrorMessageCallback, sent_message_ports, callback)), |
| 555 callback); |
| 556 } |
| 557 |
544 void ServiceWorkerVersion::DispatchMessageEvent( | 558 void ServiceWorkerVersion::DispatchMessageEvent( |
545 const base::string16& message, | 559 const base::string16& message, |
546 const std::vector<TransferredMessagePort>& sent_message_ports, | 560 const std::vector<TransferredMessagePort>& sent_message_ports, |
547 const StatusCallback& callback) { | 561 const StatusCallback& callback) { |
548 for (const TransferredMessagePort& port : sent_message_ports) { | 562 for (const TransferredMessagePort& port : sent_message_ports) { |
549 MessagePortService::GetInstance()->HoldMessages(port.id); | 563 MessagePortService::GetInstance()->HoldMessages(port.id); |
550 } | 564 } |
551 | 565 |
552 DispatchMessageEventInternal(message, sent_message_ports, callback); | 566 DispatchMessageEventInternal(message, sent_message_ports, callback); |
553 } | 567 } |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 int request_id = AddRequest(callback, &activate_requests_, REQUEST_ACTIVATE, | 1032 int request_id = AddRequest(callback, &activate_requests_, REQUEST_ACTIVATE, |
1019 ServiceWorkerMetrics::EventType::ACTIVATE); | 1033 ServiceWorkerMetrics::EventType::ACTIVATE); |
1020 ServiceWorkerStatusCode status = | 1034 ServiceWorkerStatusCode status = |
1021 embedded_worker_->SendMessage(ServiceWorkerMsg_ActivateEvent(request_id)); | 1035 embedded_worker_->SendMessage(ServiceWorkerMsg_ActivateEvent(request_id)); |
1022 if (status != SERVICE_WORKER_OK) { | 1036 if (status != SERVICE_WORKER_OK) { |
1023 activate_requests_.Remove(request_id); | 1037 activate_requests_.Remove(request_id); |
1024 RunSoon(base::Bind(callback, status)); | 1038 RunSoon(base::Bind(callback, status)); |
1025 } | 1039 } |
1026 } | 1040 } |
1027 | 1041 |
| 1042 void ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker( |
| 1043 const base::string16& message, |
| 1044 const std::vector<TransferredMessagePort>& sent_message_ports, |
| 1045 const StatusCallback& callback) { |
| 1046 int request_id = |
| 1047 StartRequest(ServiceWorkerMetrics::EventType::MESSAGE, callback); |
| 1048 |
| 1049 MessagePortMessageFilter* filter = |
| 1050 embedded_worker_->message_port_message_filter(); |
| 1051 std::vector<int> new_routing_ids; |
| 1052 filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids); |
| 1053 |
| 1054 DispatchSimpleEvent<ServiceWorkerHostMsg_ExtendableMessageEventFinished>( |
| 1055 request_id, |
| 1056 ServiceWorkerMsg_ExtendableMessageEvent( |
| 1057 request_id, message, sent_message_ports, new_routing_ids)); |
| 1058 } |
| 1059 |
1028 void ServiceWorkerVersion::OnGetClients( | 1060 void ServiceWorkerVersion::OnGetClients( |
1029 int request_id, | 1061 int request_id, |
1030 const ServiceWorkerClientQueryOptions& options) { | 1062 const ServiceWorkerClientQueryOptions& options) { |
1031 TRACE_EVENT_ASYNC_BEGIN2( | 1063 TRACE_EVENT_ASYNC_BEGIN2( |
1032 "ServiceWorker", "ServiceWorkerVersion::OnGetClients", request_id, | 1064 "ServiceWorker", "ServiceWorkerVersion::OnGetClients", request_id, |
1033 "client_type", options.client_type, "include_uncontrolled", | 1065 "client_type", options.client_type, "include_uncontrolled", |
1034 options.include_uncontrolled); | 1066 options.include_uncontrolled); |
1035 service_worker_client_utils::GetClients( | 1067 service_worker_client_utils::GetClients( |
1036 weak_factory_.GetWeakPtr(), options, | 1068 weak_factory_.GetWeakPtr(), options, |
1037 base::Bind(&ServiceWorkerVersion::OnGetClientsFinished, | 1069 base::Bind(&ServiceWorkerVersion::OnGetClientsFinished, |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1931 void ServiceWorkerVersion::OnBeginEvent() { | 1963 void ServiceWorkerVersion::OnBeginEvent() { |
1932 if (should_exclude_from_uma_ || running_status() != RUNNING || | 1964 if (should_exclude_from_uma_ || running_status() != RUNNING || |
1933 idle_time_.is_null()) { | 1965 idle_time_.is_null()) { |
1934 return; | 1966 return; |
1935 } | 1967 } |
1936 ServiceWorkerMetrics::RecordTimeBetweenEvents(base::TimeTicks::Now() - | 1968 ServiceWorkerMetrics::RecordTimeBetweenEvents(base::TimeTicks::Now() - |
1937 idle_time_); | 1969 idle_time_); |
1938 } | 1970 } |
1939 | 1971 |
1940 } // namespace content | 1972 } // namespace content |
OLD | NEW |