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

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,
554 base::Bind(&RunErrorMessageCallback, sent_message_ports, callback)),
555 callback);
nhiroki 2016/02/02 05:53:38 The second argument of the RunAfterStartWorker sho
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 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 960
947 void ServiceWorkerVersion::OnStartSentAndScriptEvaluated( 961 void ServiceWorkerVersion::OnStartSentAndScriptEvaluated(
948 ServiceWorkerStatusCode status) { 962 ServiceWorkerStatusCode status) {
949 if (status != SERVICE_WORKER_OK) { 963 if (status != SERVICE_WORKER_OK) {
950 scoped_refptr<ServiceWorkerVersion> protect(this); 964 scoped_refptr<ServiceWorkerVersion> protect(this);
951 RunCallbacks(this, &start_callbacks_, 965 RunCallbacks(this, &start_callbacks_,
952 DeduceStartWorkerFailureReason(status)); 966 DeduceStartWorkerFailureReason(status));
953 } 967 }
954 } 968 }
955 969
970 void ServiceWorkerVersion::DispatchExtendableMessageEventAfterStartWorker(
971 const base::string16& message,
972 const std::vector<TransferredMessagePort>& sent_message_ports,
973 const StatusCallback& callback) {
974 int request_id =
975 StartRequest(ServiceWorkerMetrics::EventType::MESSAGE, callback);
976
977 MessagePortMessageFilter* filter =
978 embedded_worker_->message_port_message_filter();
979 std::vector<int> new_routing_ids;
980 filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids);
981
982 DispatchSimpleEvent<ServiceWorkerHostMsg_ExtendableMessageEventFinished>(
983 request_id,
984 ServiceWorkerMsg_ExtendableMessageEvent(
985 request_id, message, sent_message_ports, new_routing_ids));
986 }
987
956 void ServiceWorkerVersion::OnGetClients( 988 void ServiceWorkerVersion::OnGetClients(
957 int request_id, 989 int request_id,
958 const ServiceWorkerClientQueryOptions& options) { 990 const ServiceWorkerClientQueryOptions& options) {
959 TRACE_EVENT_ASYNC_BEGIN2( 991 TRACE_EVENT_ASYNC_BEGIN2(
960 "ServiceWorker", "ServiceWorkerVersion::OnGetClients", request_id, 992 "ServiceWorker", "ServiceWorkerVersion::OnGetClients", request_id,
961 "client_type", options.client_type, "include_uncontrolled", 993 "client_type", options.client_type, "include_uncontrolled",
962 options.include_uncontrolled); 994 options.include_uncontrolled);
963 service_worker_client_utils::GetClients( 995 service_worker_client_utils::GetClients(
964 weak_factory_.GetWeakPtr(), options, 996 weak_factory_.GetWeakPtr(), options,
965 base::Bind(&ServiceWorkerVersion::OnGetClientsFinished, 997 base::Bind(&ServiceWorkerVersion::OnGetClientsFinished,
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after
1795 void ServiceWorkerVersion::OnBeginEvent() { 1827 void ServiceWorkerVersion::OnBeginEvent() {
1796 if (should_exclude_from_uma_ || running_status() != RUNNING || 1828 if (should_exclude_from_uma_ || running_status() != RUNNING ||
1797 idle_time_.is_null()) { 1829 idle_time_.is_null()) {
1798 return; 1830 return;
1799 } 1831 }
1800 ServiceWorkerMetrics::RecordTimeBetweenEvents(base::TimeTicks::Now() - 1832 ServiceWorkerMetrics::RecordTimeBetweenEvents(base::TimeTicks::Now() -
1801 idle_time_); 1833 idle_time_);
1802 } 1834 }
1803 1835
1804 } // namespace content 1836 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698