| 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..0f0186f81fcb5a7fb540f2e581d8fcc4dfc9e175 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/658020): make PermissionManager::GetPermissionStatus thread
|
| + // 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(
|
|
|