| 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 |