OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/child/push_messaging/push_provider.h" | 5 #include "content/child/push_messaging/push_provider.h" |
6 | 6 |
7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/threading/thread_local.h" | 10 #include "base/threading/thread_local.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 148 |
149 void PushProvider::OnSubscribeFromWorkerSuccess( | 149 void PushProvider::OnSubscribeFromWorkerSuccess( |
150 int request_id, | 150 int request_id, |
151 const GURL& endpoint, | 151 const GURL& endpoint, |
152 const std::vector<uint8_t>& curve25519dh) { | 152 const std::vector<uint8_t>& curve25519dh) { |
153 blink::WebPushSubscriptionCallbacks* callbacks = | 153 blink::WebPushSubscriptionCallbacks* callbacks = |
154 subscription_callbacks_.Lookup(request_id); | 154 subscription_callbacks_.Lookup(request_id); |
155 if (!callbacks) | 155 if (!callbacks) |
156 return; | 156 return; |
157 | 157 |
158 scoped_ptr<blink::WebPushSubscription> subscription( | 158 callbacks->onSuccess(blink::adoptWebPtr( |
159 new blink::WebPushSubscription(endpoint, curve25519dh)); | 159 new blink::WebPushSubscription(endpoint, curve25519dh))); |
160 callbacks->onSuccess(subscription.release()); | |
161 | 160 |
162 subscription_callbacks_.Remove(request_id); | 161 subscription_callbacks_.Remove(request_id); |
163 } | 162 } |
164 | 163 |
165 void PushProvider::OnSubscribeFromWorkerError(int request_id, | 164 void PushProvider::OnSubscribeFromWorkerError(int request_id, |
166 PushRegistrationStatus status) { | 165 PushRegistrationStatus status) { |
167 blink::WebPushSubscriptionCallbacks* callbacks = | 166 blink::WebPushSubscriptionCallbacks* callbacks = |
168 subscription_callbacks_.Lookup(request_id); | 167 subscription_callbacks_.Lookup(request_id); |
169 if (!callbacks) | 168 if (!callbacks) |
170 return; | 169 return; |
171 | 170 |
172 scoped_ptr<blink::WebPushError> error(new blink::WebPushError( | 171 callbacks->onError(blink::WebPushError( |
173 blink::WebPushError::ErrorTypeAbort, | 172 blink::WebPushError::ErrorTypeAbort, |
174 blink::WebString::fromUTF8(PushRegistrationStatusToString(status)))); | 173 blink::WebString::fromUTF8(PushRegistrationStatusToString(status)))); |
175 callbacks->onError(error.release()); | |
176 | 174 |
177 subscription_callbacks_.Remove(request_id); | 175 subscription_callbacks_.Remove(request_id); |
178 } | 176 } |
179 | 177 |
180 void PushProvider::OnUnsubscribeSuccess(int request_id, bool did_unsubscribe) { | 178 void PushProvider::OnUnsubscribeSuccess(int request_id, bool did_unsubscribe) { |
181 blink::WebPushUnsubscribeCallbacks* callbacks = | 179 blink::WebPushUnsubscribeCallbacks* callbacks = |
182 unsubscribe_callbacks_.Lookup(request_id); | 180 unsubscribe_callbacks_.Lookup(request_id); |
183 if (!callbacks) | 181 if (!callbacks) |
184 return; | 182 return; |
185 | 183 |
(...skipping 19 matching lines...) Expand all Loading... |
205 | 203 |
206 void PushProvider::OnGetRegistrationSuccess( | 204 void PushProvider::OnGetRegistrationSuccess( |
207 int request_id, | 205 int request_id, |
208 const GURL& endpoint, | 206 const GURL& endpoint, |
209 const std::vector<uint8_t>& curve25519dh) { | 207 const std::vector<uint8_t>& curve25519dh) { |
210 blink::WebPushSubscriptionCallbacks* callbacks = | 208 blink::WebPushSubscriptionCallbacks* callbacks = |
211 subscription_callbacks_.Lookup(request_id); | 209 subscription_callbacks_.Lookup(request_id); |
212 if (!callbacks) | 210 if (!callbacks) |
213 return; | 211 return; |
214 | 212 |
215 scoped_ptr<blink::WebPushSubscription> subscription( | 213 callbacks->onSuccess(blink::adoptWebPtr( |
216 new blink::WebPushSubscription(endpoint, curve25519dh)); | 214 new blink::WebPushSubscription(endpoint, curve25519dh))); |
217 callbacks->onSuccess(subscription.release()); | |
218 | 215 |
219 subscription_callbacks_.Remove(request_id); | 216 subscription_callbacks_.Remove(request_id); |
220 } | 217 } |
221 | 218 |
222 void PushProvider::OnGetRegistrationError( | 219 void PushProvider::OnGetRegistrationError( |
223 int request_id, | 220 int request_id, |
224 PushGetRegistrationStatus status) { | 221 PushGetRegistrationStatus status) { |
225 blink::WebPushSubscriptionCallbacks* callbacks = | 222 blink::WebPushSubscriptionCallbacks* callbacks = |
226 subscription_callbacks_.Lookup(request_id); | 223 subscription_callbacks_.Lookup(request_id); |
227 if (!callbacks) | 224 if (!callbacks) |
228 return; | 225 return; |
229 | 226 |
230 // We are only expecting an error if we can't find a registration. | 227 // We are only expecting an error if we can't find a registration. |
231 callbacks->onSuccess(nullptr); | 228 callbacks->onSuccess(nullptr); |
232 | 229 |
233 subscription_callbacks_.Remove(request_id); | 230 subscription_callbacks_.Remove(request_id); |
234 } | 231 } |
235 | 232 |
236 void PushProvider::OnGetPermissionStatusSuccess( | 233 void PushProvider::OnGetPermissionStatusSuccess( |
237 int request_id, | 234 int request_id, |
238 blink::WebPushPermissionStatus status) { | 235 blink::WebPushPermissionStatus status) { |
239 blink::WebPushPermissionStatusCallbacks* callbacks = | 236 blink::WebPushPermissionStatusCallbacks* callbacks = |
240 permission_status_callbacks_.Lookup(request_id); | 237 permission_status_callbacks_.Lookup(request_id); |
241 if (!callbacks) | 238 if (!callbacks) |
242 return; | 239 return; |
243 | 240 |
244 callbacks->onSuccess(&status); | 241 callbacks->onSuccess(status); |
245 | 242 |
246 permission_status_callbacks_.Remove(request_id); | 243 permission_status_callbacks_.Remove(request_id); |
247 } | 244 } |
248 | 245 |
249 void PushProvider::OnGetPermissionStatusError( | 246 void PushProvider::OnGetPermissionStatusError( |
250 int request_id, | 247 int request_id, |
251 blink::WebPushError::ErrorType error) { | 248 blink::WebPushError::ErrorType error) { |
252 blink::WebPushPermissionStatusCallbacks* callbacks = | 249 blink::WebPushPermissionStatusCallbacks* callbacks = |
253 permission_status_callbacks_.Lookup(request_id); | 250 permission_status_callbacks_.Lookup(request_id); |
254 if (!callbacks) | 251 if (!callbacks) |
255 return; | 252 return; |
256 | 253 |
257 std::string error_message; | 254 std::string error_message; |
258 if (error == blink::WebPushError::ErrorTypeNotSupported) { | 255 if (error == blink::WebPushError::ErrorTypeNotSupported) { |
259 error_message = | 256 error_message = |
260 "Push subscriptions that don't enable userVisibleOnly are not " | 257 "Push subscriptions that don't enable userVisibleOnly are not " |
261 "supported."; | 258 "supported."; |
262 } | 259 } |
263 | 260 |
264 scoped_ptr<blink::WebPushError> web_error(new blink::WebPushError( | 261 callbacks->onError(blink::WebPushError( |
265 error, blink::WebString::fromUTF8(error_message))); | 262 error, blink::WebString::fromUTF8(error_message))); |
266 | 263 |
267 callbacks->onError(web_error.release()); | |
268 | |
269 permission_status_callbacks_.Remove(request_id); | 264 permission_status_callbacks_.Remove(request_id); |
270 } | 265 } |
271 | 266 |
272 } // namespace content | 267 } // namespace content |
OLD | NEW |