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

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

Issue 1632113004: ServiceWorker: Add initial implementation of ExtendableMessageEvent behind a flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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/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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698