Index: chrome/browser/notifications/platform_notification_service_impl.cc |
diff --git a/chrome/browser/notifications/platform_notification_service_impl.cc b/chrome/browser/notifications/platform_notification_service_impl.cc |
index 4c60c08daae8000ad58f8de373444e782274bc8e..984f4612b9e241c9dd1ec858760ee3d202d753a2 100644 |
--- a/chrome/browser/notifications/platform_notification_service_impl.cc |
+++ b/chrome/browser/notifications/platform_notification_service_impl.cc |
@@ -11,6 +11,7 @@ |
#include "base/metrics/user_metrics.h" |
#include "base/metrics/user_metrics_action.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/time/time.h" |
#include "build/build_config.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
@@ -18,6 +19,7 @@ |
#include "chrome/browser/notifications/notification_display_service_factory.h" |
#include "chrome/browser/notifications/notification_object_proxy.h" |
#include "chrome/browser/notifications/persistent_notification_delegate.h" |
+#include "chrome/browser/permissions/permission_decision_auto_blocker.h" |
#include "chrome/browser/permissions/permission_manager.h" |
#include "chrome/browser/permissions/permission_result.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -287,7 +289,18 @@ PlatformNotificationServiceImpl::CheckPermissionOnIOThread( |
if (setting == CONTENT_SETTING_BLOCK) |
return blink::mojom::PermissionStatus::DENIED; |
- return blink::mojom::PermissionStatus::ASK; |
+ // Check whether the permission has been embargoed (automatically blocked). |
+ // TODO(crbug.com/730290): make PermissionManager::GetPermissionStatus thread |
Miguel Garcia
2017/06/07 14:15:38
That bug is duped to crbug.com/658020 assigned to
dominickn
2017/06/08 01:03:04
Done.
|
+ // safe so it isn't necessary to do this HostContentSettingsMap and embargo |
+ // check outside of the permissions code. |
+ PermissionResult result = PermissionDecisionAutoBlocker::GetEmbargoResult( |
+ host_content_settings_map, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
+ base::Time::Now()); |
+ DCHECK(result.content_setting == CONTENT_SETTING_ASK || |
+ result.content_setting == CONTENT_SETTING_BLOCK); |
+ return result.content_setting == CONTENT_SETTING_ASK |
+ ? blink::mojom::PermissionStatus::ASK |
+ : blink::mojom::PermissionStatus::DENIED; |
} |
void PlatformNotificationServiceImpl::DisplayNotification( |