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

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: rebase 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, 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
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
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
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_version.h ('k') | content/child/service_worker/web_service_worker_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698