OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/navigator_connect/navigator_connect_service_worker_ser
vice_factory.h" | 5 #include "content/browser/navigator_connect/navigator_connect_service_worker_ser
vice_factory.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "content/browser/message_port_service.h" | 8 #include "content/browser/message_port_service.h" |
9 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 9 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
10 #include "content/browser/service_worker/service_worker_utils.h" | 10 #include "content/browser/service_worker/service_worker_utils.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 DCHECK(route_id == client_.message_port_id); | 76 DCHECK(route_id == client_.message_port_id); |
77 DCHECK(message.message_as_value.empty()); | 77 DCHECK(message.message_as_value.empty()); |
78 | 78 |
79 // Hold messages on transferred message ports. Actual delivery of the message | 79 // Hold messages on transferred message ports. Actual delivery of the message |
80 // by the service can be asynchronous. When a message is delivered, | 80 // by the service can be asynchronous. When a message is delivered, |
81 // WebMessagePortChannelImpl instances will be constructed which send | 81 // WebMessagePortChannelImpl instances will be constructed which send |
82 // MessagePortHostMsg_ReleaseMessages to release messages. | 82 // MessagePortHostMsg_ReleaseMessages to release messages. |
83 for (const auto& port : sent_message_ports) | 83 for (const auto& port : sent_message_ports) |
84 MessagePortService::GetInstance()->HoldMessages(port.id); | 84 MessagePortService::GetInstance()->HoldMessages(port.id); |
85 | 85 |
86 service_worker_context_->context()->storage()->FindRegistrationForId( | 86 service_worker_context_->FindRegistrationForId( |
87 service_worker_registration_id_, service_worker_registration_origin_, | 87 service_worker_registration_id_, service_worker_registration_origin_, |
88 base::Bind(&NavigatorConnectServiceWorkerService::DeliverMessage, | 88 base::Bind(&NavigatorConnectServiceWorkerService::DeliverMessage, |
89 weak_factory_.GetWeakPtr(), message.message_as_string, | 89 weak_factory_.GetWeakPtr(), message.message_as_string, |
90 sent_message_ports)); | 90 sent_message_ports)); |
91 } | 91 } |
92 | 92 |
93 void NavigatorConnectServiceWorkerService::SendMessagesAreQueued(int route_id) { | 93 void NavigatorConnectServiceWorkerService::SendMessagesAreQueued(int route_id) { |
94 NOTREACHED() << "navigator.connect endpoints should never queue messages."; | 94 NOTREACHED() << "navigator.connect endpoints should never queue messages."; |
95 } | 95 } |
96 | 96 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 // if no other factory claims to handle the url. | 136 // if no other factory claims to handle the url. |
137 return true; | 137 return true; |
138 } | 138 } |
139 | 139 |
140 void NavigatorConnectServiceWorkerServiceFactory::Connect( | 140 void NavigatorConnectServiceWorkerServiceFactory::Connect( |
141 const NavigatorConnectClient& client, | 141 const NavigatorConnectClient& client, |
142 const ConnectCallback& callback) { | 142 const ConnectCallback& callback) { |
143 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 143 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
144 | 144 |
145 // Find the right service worker to service this connection. | 145 // Find the right service worker to service this connection. |
146 service_worker_context_->context()->storage()->FindRegistrationForDocument( | 146 service_worker_context_->FindRegistrationForDocument( |
147 client.target_url, | 147 client.target_url, |
148 base::Bind(&NavigatorConnectServiceWorkerServiceFactory:: | 148 base::Bind(&NavigatorConnectServiceWorkerServiceFactory:: |
149 GotServiceWorkerRegistration, | 149 GotServiceWorkerRegistration, |
150 weak_factory_.GetWeakPtr(), callback, client)); | 150 weak_factory_.GetWeakPtr(), callback, client)); |
151 } | 151 } |
152 | 152 |
153 void NavigatorConnectServiceWorkerServiceFactory::GotServiceWorkerRegistration( | 153 void NavigatorConnectServiceWorkerServiceFactory::GotServiceWorkerRegistration( |
154 const ConnectCallback& callback, | 154 const ConnectCallback& callback, |
155 const NavigatorConnectClient& client, | 155 const NavigatorConnectClient& client, |
156 ServiceWorkerStatusCode status, | 156 ServiceWorkerStatusCode status, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 // TODO(mek): http://crbug.com/462744 Keep track of these | 192 // TODO(mek): http://crbug.com/462744 Keep track of these |
193 // NavigatorConnectServiceWorkerService instances and clean them up when a | 193 // NavigatorConnectServiceWorkerService instances and clean them up when a |
194 // service worker registration is deleted. | 194 // service worker registration is deleted. |
195 callback.Run( | 195 callback.Run( |
196 new NavigatorConnectServiceWorkerService(service_worker_context_, client, | 196 new NavigatorConnectServiceWorkerService(service_worker_context_, client, |
197 service_worker_registration), | 197 service_worker_registration), |
198 false); | 198 false); |
199 } | 199 } |
200 | 200 |
201 } // namespace content | 201 } // namespace content |
OLD | NEW |