diff options
Diffstat (limited to 'chrome/browser/push_messaging')
3 files changed, 11 insertions, 11 deletions
diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chrome/browser/push_messaging/push_messaging_service_impl.cc index b8725fc..7cc246c 100644 --- a/chrome/browser/push_messaging/push_messaging_service_impl.cc +++ b/chrome/browser/push_messaging/push_messaging_service_impl.cc @@ -401,10 +401,10 @@ void PushMessagingServiceImpl::SubscribeFromWorker( return; } - GURL embedding_origin = requesting_origin; blink::WebPushPermissionStatus permission_status = - PushMessagingServiceImpl::GetPermissionStatus( - requesting_origin, embedding_origin, user_visible); + PushMessagingServiceImpl::GetPermissionStatus(requesting_origin, + user_visible); + if (permission_status != blink::WebPushPermissionStatusGranted) { SubscribeEndWithError(register_callback, content::PUSH_REGISTRATION_STATUS_PERMISSION_DENIED); @@ -420,15 +420,16 @@ void PushMessagingServiceImpl::SubscribeFromWorker( } blink::WebPushPermissionStatus PushMessagingServiceImpl::GetPermissionStatus( - const GURL& requesting_origin, - const GURL& embedding_origin, + const GURL& origin, bool user_visible) { if (!user_visible) return blink::WebPushPermissionStatusDenied; + // Because the Push API is tied to Service Workers, many usages of the API + // won't have an embedding origin at all. Only consider the requesting + // |origin| when checking whether permission to use the API has been granted. return ToPushPermission(profile_->GetPermissionManager()->GetPermissionStatus( - content::PermissionType::PUSH_MESSAGING, requesting_origin, - embedding_origin)); + content::PermissionType::PUSH_MESSAGING, origin, origin)); } bool PushMessagingServiceImpl::SupportNonVisibleMessages() { @@ -764,7 +765,7 @@ void PushMessagingServiceImpl::OnMenuClick() { // Assumes user_visible always since this is just meant to check // if the permission was previously granted and not revoked. bool PushMessagingServiceImpl::IsPermissionSet(const GURL& origin) { - return GetPermissionStatus(origin, origin, true /* user_visible */) == + return GetPermissionStatus(origin, true /* user_visible */) == blink::WebPushPermissionStatusGranted; } diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.h b/chrome/browser/push_messaging/push_messaging_service_impl.h index 449154b9..cae261f 100644 --- a/chrome/browser/push_messaging/push_messaging_service_impl.h +++ b/chrome/browser/push_messaging/push_messaging_service_impl.h @@ -96,8 +96,7 @@ class PushMessagingServiceImpl : public content::PushMessagingService, const std::string& sender_id, const content::PushMessagingService::UnregisterCallback&) override; blink::WebPushPermissionStatus GetPermissionStatus( - const GURL& requesting_origin, - const GURL& embedding_origin, + const GURL& origin, bool user_visible) override; bool SupportNonVisibleMessages() override; diff --git a/chrome/browser/push_messaging/push_messaging_service_unittest.cc b/chrome/browser/push_messaging/push_messaging_service_unittest.cc index 31a6d9e..61fdd47 100644 --- a/chrome/browser/push_messaging/push_messaging_service_unittest.cc +++ b/chrome/browser/push_messaging/push_messaging_service_unittest.cc @@ -151,7 +151,7 @@ TEST_F(PushMessagingServiceTest, PayloadEncryptionTest) { // (1) Make sure that |kExampleOrigin| has access to use Push Messaging. ASSERT_EQ(blink::WebPushPermissionStatusGranted, - push_service->GetPermissionStatus(origin, origin, true)); + push_service->GetPermissionStatus(origin, true)); std::string subscription_id; std::vector<uint8_t> p256dh, auth; |