• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
ResetToDefaultContentSetting(Profile * profile)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.
ClearSetting(Profile * profile,const ContentSettingsPattern & 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.
GrantPermission(Profile * profile,const GURL & origin)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 
DenyPermission(Profile * profile,const GURL & origin)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 
GetNotificationsSettings(Profile * profile,ContentSettingsForOneType * settings)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 
GetContentSetting(Profile * profile,const GURL & origin)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 
UsePermission(Profile * profile,const GURL & origin)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