summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeter <peter@chromium.org>2016-02-18 16:32:10 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-19 00:33:37 +0000
commit948f209d8309e636c8085d67e4476cee69c427e6 (patch)
tree85bd88530f55c91331aba2bdb27b566ee0e97034
parentbc576c1ad6abd1500b100620d93034513bf3f3a1 (diff)
downloadchromium_src-948f209d8309e636c8085d67e4476cee69c427e6.zip
chromium_src-948f209d8309e636c8085d67e4476cee69c427e6.tar.gz
chromium_src-948f209d8309e636c8085d67e4476cee69c427e6.tar.bz2
Simplify push' GetPermissionStatus code
The code is pretending to care about differences in the requesting and embedding origin, but it really doesn't and gets the same value for both in all code paths. Reflect this in the implementation. BUG= Review URL: https://codereview.chromium.org/1709983002 Cr-Commit-Position: refs/heads/master@{#376310}
-rw-r--r--chrome/browser/push_messaging/push_messaging_service_impl.cc17
-rw-r--r--chrome/browser/push_messaging/push_messaging_service_impl.h3
-rw-r--r--chrome/browser/push_messaging/push_messaging_service_unittest.cc2
-rw-r--r--content/browser/push_messaging/push_messaging_message_filter.cc5
-rw-r--r--content/public/browser/push_messaging_service.h10
-rw-r--r--content/shell/browser/layout_test/layout_test_push_messaging_service.cc16
-rw-r--r--content/shell/browser/layout_test/layout_test_push_messaging_service.h7
7 files changed, 26 insertions, 34 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;
diff --git a/content/browser/push_messaging/push_messaging_message_filter.cc b/content/browser/push_messaging/push_messaging_message_filter.cc
index 844b724..7685eae 100644
--- a/content/browser/push_messaging/push_messaging_message_filter.cc
+++ b/content/browser/push_messaging/push_messaging_message_filter.cc
@@ -917,9 +917,8 @@ void PushMessagingMessageFilter::Core::GetPermissionStatusOnUI(
request_id, blink::WebPushError::ErrorTypeNotSupported));
return;
}
- GURL embedding_origin = requesting_origin;
- permission_status = push_service->GetPermissionStatus(
- requesting_origin, embedding_origin, user_visible);
+ permission_status =
+ push_service->GetPermissionStatus(requesting_origin, user_visible);
} else if (is_incognito()) {
// Return prompt, so the website can't detect incognito mode.
permission_status = blink::WebPushPermissionStatusPrompt;
diff --git a/content/public/browser/push_messaging_service.h b/content/public/browser/push_messaging_service.h
index 31163d4..86aa34e 100644
--- a/content/public/browser/push_messaging_service.h
+++ b/content/public/browser/push_messaging_service.h
@@ -83,13 +83,11 @@ class CONTENT_EXPORT PushMessagingService {
const std::string& sender_id,
const UnregisterCallback& callback) = 0;
- // Checks the permission status for the requesting origin. Permission is only
- // ever granted when the requesting origin matches the top level embedding
- // origin. The |user_visible| boolean indicates whether the permission status
- // only has to cover push messages resulting in visible effects to the user.
+ // Checks the permission status for the |origin|. The |user_visible| boolean
+ // indicates whether the permission status only has to cover push messages
+ // resulting in visible effects to the user.
virtual blink::WebPushPermissionStatus GetPermissionStatus(
- const GURL& requesting_origin,
- const GURL& embedding_origin,
+ const GURL& origin,
bool user_visible) = 0;
// Returns whether subscriptions that do not mandate user visible UI upon
diff --git a/content/shell/browser/layout_test/layout_test_push_messaging_service.cc b/content/shell/browser/layout_test/layout_test_push_messaging_service.cc
index e4a9e68..11554e9 100644
--- a/content/shell/browser/layout_test/layout_test_push_messaging_service.cc
+++ b/content/shell/browser/layout_test/layout_test_push_messaging_service.cc
@@ -82,7 +82,7 @@ void LayoutTestPushMessagingService::SubscribeFromWorker(
const std::string& sender_id,
bool user_visible,
const PushMessagingService::RegisterCallback& callback) {
- if (GetPermissionStatus(requesting_origin, requesting_origin, user_visible) ==
+ if (GetPermissionStatus(requesting_origin, user_visible) ==
blink::WebPushPermissionStatusGranted) {
std::vector<uint8_t> p256dh(
kTestP256Key, kTestP256Key + arraysize(kTestP256Key));
@@ -111,16 +111,12 @@ void LayoutTestPushMessagingService::GetEncryptionInfo(
}
blink::WebPushPermissionStatus
-LayoutTestPushMessagingService::GetPermissionStatus(
- const GURL& requesting_origin,
- const GURL& embedding_origin,
- bool user_visible) {
+LayoutTestPushMessagingService::GetPermissionStatus(const GURL& origin,
+ bool user_visible) {
return ToWebPushPermissionStatus(LayoutTestContentBrowserClient::Get()
- ->GetLayoutTestBrowserContext()
- ->GetLayoutTestPermissionManager()
- ->GetPermissionStatus(PermissionType::PUSH_MESSAGING,
- requesting_origin,
- embedding_origin));
+ ->browser_context()
+ ->GetPermissionManager()
+ ->GetPermissionStatus(PermissionType::PUSH_MESSAGING, origin, origin));
}
bool LayoutTestPushMessagingService::SupportNonVisibleMessages() {
diff --git a/content/shell/browser/layout_test/layout_test_push_messaging_service.h b/content/shell/browser/layout_test/layout_test_push_messaging_service.h
index 189f6f4..eb5e7e4 100644
--- a/content/shell/browser/layout_test/layout_test_push_messaging_service.h
+++ b/content/shell/browser/layout_test/layout_test_push_messaging_service.h
@@ -42,10 +42,9 @@ class LayoutTestPushMessagingService : public PushMessagingService {
const GURL& origin,
int64_t service_worker_registration_id,
const PushMessagingService::EncryptionInfoCallback& callback) override;
- blink::WebPushPermissionStatus GetPermissionStatus(
- const GURL& requesting_origin,
- const GURL& embedding_origin,
- bool user_visible) override;
+ blink::WebPushPermissionStatus GetPermissionStatus(const GURL& origin,
+ bool user_visible)
+ override;
bool SupportNonVisibleMessages() override;
void Unsubscribe(const GURL& requesting_origin,
int64_t service_worker_registration_id,