| Index: chrome/browser/push_messaging/push_messaging_service_impl.cc
|
| diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chrome/browser/push_messaging/push_messaging_service_impl.cc
|
| index 7b3a1e602c673d3b5613c2b3fd92306261062198..48bc0d813ced6d859e455ec399fe6cbe089e9c0f 100644
|
| --- a/chrome/browser/push_messaging/push_messaging_service_impl.cc
|
| +++ b/chrome/browser/push_messaging/push_messaging_service_impl.cc
|
| @@ -315,6 +315,17 @@ GURL PushMessagingServiceImpl::GetPushEndpoint() {
|
| return GURL(std::string(kPushMessagingEndpoint));
|
| }
|
|
|
| +// GetPublicEncryptionKey method -----------------------------------------------
|
| +
|
| +void PushMessagingServiceImpl::GetPublicEncryptionKey(
|
| + const GURL& origin,
|
| + int64_t service_worker_registration_id,
|
| + const PushMessagingService::PublicKeyCallback& callback) {
|
| + // TODO(peter): Get the public key from the GCM Driver. Right now we have to
|
| + // return success=true here, otherwise subscriptions would fail.
|
| + callback.Run(true /* success */, std::vector<uint8_t>());
|
| +}
|
| +
|
| // Subscribe and GetPermissionStatus methods -----------------------------------
|
|
|
| void PushMessagingServiceImpl::SubscribeFromDocument(
|
| @@ -331,8 +342,8 @@ void PushMessagingServiceImpl::SubscribeFromDocument(
|
|
|
| if (push_subscription_count_ + pending_push_subscription_count_ >=
|
| kMaxRegistrations) {
|
| - SubscribeEnd(callback, std::string(),
|
| - content::PUSH_REGISTRATION_STATUS_LIMIT_REACHED);
|
| + SubscribeEndWithError(callback,
|
| + content::PUSH_REGISTRATION_STATUS_LIMIT_REACHED);
|
| return;
|
| }
|
|
|
| @@ -348,9 +359,8 @@ void PushMessagingServiceImpl::SubscribeFromDocument(
|
| content::CONSOLE_MESSAGE_LEVEL_ERROR,
|
| kSilentPushUnsupportedMessage);
|
|
|
| - SubscribeEnd(callback,
|
| - std::string(),
|
| - content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
|
| + SubscribeEndWithError(callback,
|
| + content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
|
| return;
|
| }
|
|
|
| @@ -377,8 +387,8 @@ void PushMessagingServiceImpl::SubscribeFromWorker(
|
|
|
| if (profile_->GetPrefs()->GetInteger(
|
| prefs::kPushMessagingRegistrationCount) >= kMaxRegistrations) {
|
| - SubscribeEnd(register_callback, std::string(),
|
| - content::PUSH_REGISTRATION_STATUS_LIMIT_REACHED);
|
| + SubscribeEndWithError(register_callback,
|
| + content::PUSH_REGISTRATION_STATUS_LIMIT_REACHED);
|
| return;
|
| }
|
|
|
| @@ -388,8 +398,8 @@ void PushMessagingServiceImpl::SubscribeFromWorker(
|
| embedding_origin,
|
| user_visible);
|
| if (permission_status != blink::WebPushPermissionStatusGranted) {
|
| - SubscribeEnd(register_callback, std::string(),
|
| - content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
|
| + SubscribeEndWithError(register_callback,
|
| + content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
|
| return;
|
| }
|
|
|
| @@ -420,8 +430,16 @@ bool PushMessagingServiceImpl::SupportNonVisibleMessages() {
|
| void PushMessagingServiceImpl::SubscribeEnd(
|
| const content::PushMessagingService::RegisterCallback& callback,
|
| const std::string& subscription_id,
|
| + const std::vector<uint8_t>& curve25519dh,
|
| content::PushRegistrationStatus status) {
|
| - callback.Run(subscription_id, status);
|
| + callback.Run(subscription_id, curve25519dh, status);
|
| +}
|
| +
|
| +void PushMessagingServiceImpl::SubscribeEndWithError(
|
| + const content::PushMessagingService::RegisterCallback& callback,
|
| + content::PushRegistrationStatus status) {
|
| + SubscribeEnd(callback, std::string() /* subscription_id */,
|
| + std::vector<uint8_t>() /* curve25519dh */, status);
|
| }
|
|
|
| void PushMessagingServiceImpl::DidSubscribe(
|
| @@ -431,10 +449,15 @@ void PushMessagingServiceImpl::DidSubscribe(
|
| gcm::GCMClient::Result result) {
|
| content::PushRegistrationStatus status =
|
| content::PUSH_REGISTRATION_STATUS_SERVICE_ERROR;
|
| + std::vector<uint8_t> curve25519dh;
|
| +
|
| switch (result) {
|
| case gcm::GCMClient::SUCCESS:
|
| status = content::PUSH_REGISTRATION_STATUS_SUCCESS_FROM_PUSH_SERVICE;
|
| app_identifier.PersistToPrefs(profile_);
|
| +
|
| + // TODO(peter): Hook up getting the keys from the GCM Driver.
|
| +
|
| IncreasePushSubscriptionCount(1, false /* is_pending */);
|
| break;
|
| case gcm::GCMClient::INVALID_PARAMETER:
|
| @@ -449,7 +472,8 @@ void PushMessagingServiceImpl::DidSubscribe(
|
| status = content::PUSH_REGISTRATION_STATUS_NETWORK_ERROR;
|
| break;
|
| }
|
| - SubscribeEnd(callback, subscription_id, status);
|
| +
|
| + SubscribeEnd(callback, subscription_id, curve25519dh, status);
|
| DecreasePushSubscriptionCount(1, true /* was_pending */);
|
| }
|
|
|
| @@ -459,9 +483,8 @@ void PushMessagingServiceImpl::DidRequestPermission(
|
| const content::PushMessagingService::RegisterCallback& register_callback,
|
| content::PermissionStatus permission_status) {
|
| if (permission_status != content::PERMISSION_STATUS_GRANTED) {
|
| - SubscribeEnd(register_callback,
|
| - std::string(),
|
| - content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
|
| + SubscribeEndWithError(register_callback,
|
| + content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED);
|
| return;
|
| }
|
|
|
|
|