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