Index: chrome/browser/notifications/notification_permission_context.cc |
diff --git a/chrome/browser/notifications/notification_permission_context.cc b/chrome/browser/notifications/notification_permission_context.cc |
index 89ae620b21f2d6ed9cd8c29f1066d84bdb797e80..9bea149c07b280bb658d11c3eb8876055117eb93 100644 |
--- a/chrome/browser/notifications/notification_permission_context.cc |
+++ b/chrome/browser/notifications/notification_permission_context.cc |
@@ -159,14 +159,32 @@ void VisibilityTimerTabHelper::RunTask(const base::Closure& task) { |
DEFINE_WEB_CONTENTS_USER_DATA_KEY(VisibilityTimerTabHelper); |
-NotificationPermissionContext::NotificationPermissionContext(Profile* profile) |
+NotificationPermissionContext::NotificationPermissionContext( |
+ Profile* profile, |
+ content::PermissionType permission_type) |
: PermissionContextBase(profile, |
- content::PermissionType::NOTIFICATIONS, |
+ permission_type, |
CONTENT_SETTINGS_TYPE_NOTIFICATIONS), |
- weak_factory_ui_thread_(this) {} |
+ weak_factory_ui_thread_(this) { |
+ DCHECK(permission_type == content::PermissionType::NOTIFICATIONS || |
+ permission_type == content::PermissionType::PUSH_MESSAGING); |
+} |
NotificationPermissionContext::~NotificationPermissionContext() {} |
+ContentSetting NotificationPermissionContext::GetPermissionStatus( |
+ const GURL& requesting_origin, |
+ const GURL& embedding_origin) const { |
+ // Push messaging is only allowed to be granted on top-level origins. |
+ if (permission_type() == content::PermissionType::PUSH_MESSAGING && |
+ requesting_origin != embedding_origin) { |
+ return CONTENT_SETTING_BLOCK; |
+ } |
+ |
+ return PermissionContextBase::GetPermissionStatus(requesting_origin, |
+ embedding_origin); |
+} |
+ |
void NotificationPermissionContext::ResetPermission( |
const GURL& requesting_origin, |
const GURL& embedder_origin) { |
@@ -241,5 +259,5 @@ void NotificationPermissionContext::UpdateContentSetting( |
} |
bool NotificationPermissionContext::IsRestrictedToSecureOrigins() const { |
- return false; |
+ return permission_type() == content::PermissionType::PUSH_MESSAGING; |
} |