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 "chrome/browser/push_messaging/push_messaging_service_impl.h" | 5 #include "chrome/browser/push_messaging/push_messaging_service_impl.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/barrier_closure.h" | 9 #include "base/barrier_closure.h" |
10 #include "base/base64url.h" | 10 #include "base/base64url.h" |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 179 |
180 PushMessagingServiceImpl* push_service = | 180 PushMessagingServiceImpl* push_service = |
181 PushMessagingServiceFactory::GetForProfile(profile); | 181 PushMessagingServiceFactory::GetForProfile(profile); |
182 push_service->IncreasePushSubscriptionCount(count, false /* is_pending */); | 182 push_service->IncreasePushSubscriptionCount(count, false /* is_pending */); |
183 } | 183 } |
184 | 184 |
185 PushMessagingServiceImpl::PushMessagingServiceImpl(Profile* profile) | 185 PushMessagingServiceImpl::PushMessagingServiceImpl(Profile* profile) |
186 : profile_(profile), | 186 : profile_(profile), |
187 push_subscription_count_(0), | 187 push_subscription_count_(0), |
188 pending_push_subscription_count_(0), | 188 pending_push_subscription_count_(0), |
189 #if defined(ENABLE_NOTIFICATIONS) | |
190 notification_manager_(profile), | 189 notification_manager_(profile), |
191 #endif | |
192 push_messaging_service_observer_(PushMessagingServiceObserver::Create()), | 190 push_messaging_service_observer_(PushMessagingServiceObserver::Create()), |
193 weak_factory_(this) { | 191 weak_factory_(this) { |
194 DCHECK(profile); | 192 DCHECK(profile); |
195 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); | 193 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); |
196 } | 194 } |
197 | 195 |
198 PushMessagingServiceImpl::~PushMessagingServiceImpl() { | 196 PushMessagingServiceImpl::~PushMessagingServiceImpl() { |
199 HostContentSettingsMapFactory::GetForProfile(profile_)->RemoveObserver(this); | 197 HostContentSettingsMapFactory::GetForProfile(profile_)->RemoveObserver(this); |
200 } | 198 } |
201 | 199 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 // Service Worker corresponding to app_id (and/or on an internals page). | 365 // Service Worker corresponding to app_id (and/or on an internals page). |
368 // See https://crbug.com/508516 for options. | 366 // See https://crbug.com/508516 for options. |
369 switch (status) { | 367 switch (status) { |
370 // Call EnforceUserVisibleOnlyRequirements if the message was delivered to | 368 // Call EnforceUserVisibleOnlyRequirements if the message was delivered to |
371 // the Service Worker JavaScript, even if the website's event handler failed | 369 // the Service Worker JavaScript, even if the website's event handler failed |
372 // (to prevent sites deliberately failing in order to avoid having to show | 370 // (to prevent sites deliberately failing in order to avoid having to show |
373 // notifications). | 371 // notifications). |
374 case content::PUSH_DELIVERY_STATUS_SUCCESS: | 372 case content::PUSH_DELIVERY_STATUS_SUCCESS: |
375 case content::PUSH_DELIVERY_STATUS_EVENT_WAITUNTIL_REJECTED: | 373 case content::PUSH_DELIVERY_STATUS_EVENT_WAITUNTIL_REJECTED: |
376 case content::PUSH_DELIVERY_STATUS_TIMEOUT: | 374 case content::PUSH_DELIVERY_STATUS_TIMEOUT: |
377 #if defined(ENABLE_NOTIFICATIONS) | |
378 // Only enforce the user visible requirements if this is currently running | 375 // Only enforce the user visible requirements if this is currently running |
379 // as the delivery callback for the last in-flight message, and silent | 376 // as the delivery callback for the last in-flight message, and silent |
380 // push has not been enabled through a command line flag. | 377 // push has not been enabled through a command line flag. |
381 if (in_flight_message_deliveries_.count(app_id) == 1 && | 378 if (in_flight_message_deliveries_.count(app_id) == 1 && |
382 !base::CommandLine::ForCurrentProcess()->HasSwitch( | 379 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
383 switches::kAllowSilentPush)) { | 380 switches::kAllowSilentPush)) { |
384 notification_manager_.EnforceUserVisibleOnlyRequirements( | 381 notification_manager_.EnforceUserVisibleOnlyRequirements( |
385 requesting_origin, service_worker_registration_id, | 382 requesting_origin, service_worker_registration_id, |
386 completion_closure_runner.Release()); | 383 completion_closure_runner.Release()); |
387 } | 384 } |
388 #endif | |
389 break; | 385 break; |
390 case content::PUSH_DELIVERY_STATUS_SERVICE_WORKER_ERROR: | 386 case content::PUSH_DELIVERY_STATUS_SERVICE_WORKER_ERROR: |
391 // Do nothing, and hope the error is transient. | 387 // Do nothing, and hope the error is transient. |
392 break; | 388 break; |
393 case content::PUSH_DELIVERY_STATUS_UNKNOWN_APP_ID: | 389 case content::PUSH_DELIVERY_STATUS_UNKNOWN_APP_ID: |
394 unsubscribe_reason = | 390 unsubscribe_reason = |
395 content::PUSH_UNREGISTRATION_REASON_DELIVERY_UNKNOWN_APP_ID; | 391 content::PUSH_UNREGISTRATION_REASON_DELIVERY_UNKNOWN_APP_ID; |
396 break; | 392 break; |
397 case content::PUSH_DELIVERY_STATUS_PERMISSION_DENIED: | 393 case content::PUSH_DELIVERY_STATUS_PERMISSION_DENIED: |
398 unsubscribe_reason = | 394 unsubscribe_reason = |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
973 } | 969 } |
974 | 970 |
975 instance_id::InstanceIDDriver* PushMessagingServiceImpl::GetInstanceIDDriver() | 971 instance_id::InstanceIDDriver* PushMessagingServiceImpl::GetInstanceIDDriver() |
976 const { | 972 const { |
977 instance_id::InstanceIDProfileService* instance_id_profile_service = | 973 instance_id::InstanceIDProfileService* instance_id_profile_service = |
978 instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile_); | 974 instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile_); |
979 CHECK(instance_id_profile_service); | 975 CHECK(instance_id_profile_service); |
980 CHECK(instance_id_profile_service->driver()); | 976 CHECK(instance_id_profile_service->driver()); |
981 return instance_id_profile_service->driver(); | 977 return instance_id_profile_service->driver(); |
982 } | 978 } |
OLD | NEW |