Home | History | Annotate | Download | only in notifications
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/notifications/desktop_notification_profile_util.h"
      6 
      7 #include "chrome/browser/content_settings/host_content_settings_map.h"
      8 #include "chrome/browser/profiles/profile.h"
      9 #include "components/content_settings/core/browser/content_settings_provider.h"
     10 #include "components/content_settings/core/common/content_settings_pattern.h"
     11 
     12 void DesktopNotificationProfileUtil::ResetToDefaultContentSetting(
     13     Profile* profile) {
     14   profile->GetHostContentSettingsMap()->SetDefaultContentSetting(
     15       CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_DEFAULT);
     16 }
     17 
     18 // Clears the notifications setting for the given pattern.
     19 void DesktopNotificationProfileUtil::ClearSetting(
     20     Profile* profile, const ContentSettingsPattern& pattern) {
     21   profile->GetHostContentSettingsMap()->SetContentSetting(
     22       pattern,
     23       ContentSettingsPattern::Wildcard(),
     24       CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
     25       NO_RESOURCE_IDENTIFIER,
     26       CONTENT_SETTING_DEFAULT);
     27 
     28 }
     29 
     30 // Methods to setup and modify permission preferences.
     31 void DesktopNotificationProfileUtil::GrantPermission(
     32     Profile* profile, const GURL& origin) {
     33     ContentSettingsPattern primary_pattern =
     34         ContentSettingsPattern::FromURLNoWildcard(origin);
     35     profile->GetHostContentSettingsMap()->SetContentSetting(
     36         primary_pattern,
     37         ContentSettingsPattern::Wildcard(),
     38         CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
     39         NO_RESOURCE_IDENTIFIER,
     40         CONTENT_SETTING_ALLOW);
     41 }
     42 
     43 void DesktopNotificationProfileUtil::DenyPermission(
     44     Profile* profile, const GURL& origin) {
     45     ContentSettingsPattern primary_pattern =
     46         ContentSettingsPattern::FromURLNoWildcard(origin);
     47     profile->GetHostContentSettingsMap()->SetContentSetting(
     48         primary_pattern,
     49         ContentSettingsPattern::Wildcard(),
     50         CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
     51         NO_RESOURCE_IDENTIFIER,
     52         CONTENT_SETTING_BLOCK);
     53 }
     54 
     55 void DesktopNotificationProfileUtil::GetNotificationsSettings(
     56     Profile* profile, ContentSettingsForOneType* settings) {
     57   profile->GetHostContentSettingsMap()->GetSettingsForOneType(
     58       CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
     59       NO_RESOURCE_IDENTIFIER,
     60       settings);
     61 }
     62 
     63 ContentSetting DesktopNotificationProfileUtil::GetContentSetting(
     64     Profile* profile, const GURL& origin) {
     65   return profile->GetHostContentSettingsMap()->GetContentSetting(
     66       origin,
     67       origin,
     68       CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
     69       NO_RESOURCE_IDENTIFIER);
     70 }
     71 
     72 void DesktopNotificationProfileUtil::UsePermission(Profile* profile,
     73                                                    const GURL& origin) {
     74   profile->GetHostContentSettingsMap()->UpdateLastUsageByPattern(
     75       ContentSettingsPattern::FromURLNoWildcard(origin),
     76       ContentSettingsPattern::Wildcard(),
     77       CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
     78 }
     79