Chromium Code Reviews| 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( |