Chromium Code Reviews| 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 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 621 app_identifier.PersistToPrefs(profile_); | 621 app_identifier.PersistToPrefs(profile_); |
| 622 | 622 |
| 623 IncreasePushSubscriptionCount(1, false /* is_pending */); | 623 IncreasePushSubscriptionCount(1, false /* is_pending */); |
| 624 | 624 |
| 625 SubscribeEnd(callback, subscription_id, | 625 SubscribeEnd(callback, subscription_id, |
| 626 std::vector<uint8_t>(p256dh.begin(), p256dh.end()), | 626 std::vector<uint8_t>(p256dh.begin(), p256dh.end()), |
| 627 std::vector<uint8_t>(auth_secret.begin(), auth_secret.end()), | 627 std::vector<uint8_t>(auth_secret.begin(), auth_secret.end()), |
| 628 content::PUSH_REGISTRATION_STATUS_SUCCESS_FROM_PUSH_SERVICE); | 628 content::PUSH_REGISTRATION_STATUS_SUCCESS_FROM_PUSH_SERVICE); |
| 629 } | 629 } |
| 630 | 630 |
| 631 // GetEncryptionInfo methods --------------------------------------------------- | 631 // GetSubscriptionInfo methods |
| 632 // --------------------------------------------------- | |
|
Peter Beverloo
2017/03/20 23:50:13
nit: dito
johnme
2017/03/30 18:36:38
Done.
| |
| 632 | 633 |
| 633 void PushMessagingServiceImpl::GetEncryptionInfo( | 634 void PushMessagingServiceImpl::GetSubscriptionInfo( |
| 634 const GURL& origin, | 635 const GURL& origin, |
| 635 int64_t service_worker_registration_id, | 636 int64_t service_worker_registration_id, |
| 636 const std::string& sender_id, | 637 const std::string& sender_id, |
| 637 const PushMessagingService::EncryptionInfoCallback& callback) { | 638 const std::string& subscription_id, |
| 639 const SubscriptionInfoCallback& callback) { | |
| 638 PushMessagingAppIdentifier app_identifier = | 640 PushMessagingAppIdentifier app_identifier = |
| 639 PushMessagingAppIdentifier::FindByServiceWorker( | 641 PushMessagingAppIdentifier::FindByServiceWorker( |
| 640 profile_, origin, service_worker_registration_id); | 642 profile_, origin, service_worker_registration_id); |
| 641 | 643 |
| 642 DCHECK(!app_identifier.is_null()); | 644 if (app_identifier.is_null()) { |
| 645 callback.Run(false /* is_valid */, std::vector<uint8_t>() /* p256dh */, | |
| 646 std::vector<uint8_t>() /* auth */); | |
| 647 return; | |
| 648 } | |
| 649 | |
| 650 const std::string& app_id = app_identifier.app_id(); | |
| 651 base::Callback<void(bool)> validate_cb = | |
| 652 base::Bind(&PushMessagingServiceImpl::DidValidateSubscription, | |
| 653 weak_factory_.GetWeakPtr(), app_id, sender_id, callback); | |
| 654 | |
| 655 if (PushMessagingAppIdentifier::UseInstanceID(app_id)) { | |
| 656 GetInstanceIDDriver()->GetInstanceID(app_id)->ValidateToken( | |
| 657 NormalizeSenderInfo(sender_id), kGCMScope, subscription_id, | |
| 658 validate_cb); | |
| 659 } else { | |
| 660 GetGCMDriver()->ValidateRegistration( | |
| 661 app_id, {NormalizeSenderInfo(sender_id)}, subscription_id, validate_cb); | |
| 662 } | |
| 663 } | |
| 664 | |
| 665 void PushMessagingServiceImpl::DidValidateSubscription( | |
| 666 const std::string& app_id, | |
| 667 const std::string& sender_id, | |
| 668 const SubscriptionInfoCallback& callback, | |
| 669 bool is_valid) { | |
| 670 if (!is_valid) { | |
| 671 callback.Run(false /* is_valid */, std::vector<uint8_t>() /* p256dh */, | |
| 672 std::vector<uint8_t>() /* auth */); | |
| 673 return; | |
| 674 } | |
| 643 | 675 |
| 644 GetEncryptionInfoForAppId( | 676 GetEncryptionInfoForAppId( |
| 645 app_identifier.app_id(), sender_id, | 677 app_id, sender_id, |
| 646 base::Bind(&PushMessagingServiceImpl::DidGetEncryptionInfo, | 678 base::Bind(&PushMessagingServiceImpl::DidGetEncryptionInfo, |
| 647 weak_factory_.GetWeakPtr(), callback)); | 679 weak_factory_.GetWeakPtr(), callback)); |
| 648 } | 680 } |
| 649 | 681 |
| 650 void PushMessagingServiceImpl::DidGetEncryptionInfo( | 682 void PushMessagingServiceImpl::DidGetEncryptionInfo( |
| 651 const PushMessagingService::EncryptionInfoCallback& callback, | 683 const SubscriptionInfoCallback& callback, |
| 652 const std::string& p256dh, | 684 const std::string& p256dh, |
| 653 const std::string& auth_secret) const { | 685 const std::string& auth_secret) const { |
| 654 // I/O errors might prevent the GCM Driver from retrieving a key-pair. | 686 // I/O errors might prevent the GCM Driver from retrieving a key-pair. |
| 655 const bool success = !p256dh.empty(); | 687 bool is_valid = !p256dh.empty(); |
| 656 | 688 callback.Run(is_valid, std::vector<uint8_t>(p256dh.begin(), p256dh.end()), |
| 657 callback.Run(success, std::vector<uint8_t>(p256dh.begin(), p256dh.end()), | |
| 658 std::vector<uint8_t>(auth_secret.begin(), auth_secret.end())); | 689 std::vector<uint8_t>(auth_secret.begin(), auth_secret.end())); |
| 659 } | 690 } |
| 660 | 691 |
| 661 // Unsubscribe methods --------------------------------------------------------- | 692 // Unsubscribe methods --------------------------------------------------------- |
| 662 | 693 |
| 663 void PushMessagingServiceImpl::Unsubscribe( | 694 void PushMessagingServiceImpl::Unsubscribe( |
| 695 content::PushUnregistrationReason reason, | |
| 664 const GURL& requesting_origin, | 696 const GURL& requesting_origin, |
| 665 int64_t service_worker_registration_id, | 697 int64_t service_worker_registration_id, |
| 666 const std::string& sender_id, | 698 const std::string& sender_id, |
| 667 const UnregisterCallback& callback) { | 699 const UnregisterCallback& callback) { |
| 668 PushMessagingAppIdentifier app_identifier = | 700 PushMessagingAppIdentifier app_identifier = |
| 669 PushMessagingAppIdentifier::FindByServiceWorker( | 701 PushMessagingAppIdentifier::FindByServiceWorker( |
| 670 profile_, requesting_origin, service_worker_registration_id); | 702 profile_, requesting_origin, service_worker_registration_id); |
| 671 | 703 |
| 672 UnsubscribeInternal( | 704 UnsubscribeInternal( |
| 673 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, requesting_origin, | 705 reason, requesting_origin, service_worker_registration_id, |
| 674 service_worker_registration_id, | |
| 675 app_identifier.is_null() ? std::string() : app_identifier.app_id(), | 706 app_identifier.is_null() ? std::string() : app_identifier.app_id(), |
| 676 sender_id, callback); | 707 sender_id, callback); |
| 677 } | 708 } |
| 678 | 709 |
| 679 void PushMessagingServiceImpl::UnsubscribeInternal( | 710 void PushMessagingServiceImpl::UnsubscribeInternal( |
| 680 content::PushUnregistrationReason reason, | 711 content::PushUnregistrationReason reason, |
| 681 const GURL& origin, | 712 const GURL& origin, |
| 682 int64_t service_worker_registration_id, | 713 int64_t service_worker_registration_id, |
| 683 const std::string& app_id, | 714 const std::string& app_id, |
| 684 const std::string& sender_id, | 715 const std::string& sender_id, |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 984 } | 1015 } |
| 985 | 1016 |
| 986 instance_id::InstanceIDDriver* PushMessagingServiceImpl::GetInstanceIDDriver() | 1017 instance_id::InstanceIDDriver* PushMessagingServiceImpl::GetInstanceIDDriver() |
| 987 const { | 1018 const { |
| 988 instance_id::InstanceIDProfileService* instance_id_profile_service = | 1019 instance_id::InstanceIDProfileService* instance_id_profile_service = |
| 989 instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile_); | 1020 instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile_); |
| 990 CHECK(instance_id_profile_service); | 1021 CHECK(instance_id_profile_service); |
| 991 CHECK(instance_id_profile_service->driver()); | 1022 CHECK(instance_id_profile_service->driver()); |
| 992 return instance_id_profile_service->driver(); | 1023 return instance_id_profile_service->driver(); |
| 993 } | 1024 } |
| OLD | NEW |