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.
5 #include "chrome/browser/notifications/desktop_notification_profile_util.h"
7 #include "chrome/browser/content_settings/content_settings_provider.h"
8 #include "chrome/browser/content_settings/host_content_settings_map.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/common/content_settings_pattern.h"
12 void DesktopNotificationProfileUtil::ResetToDefaultContentSetting(
14 profile
->GetHostContentSettingsMap()->SetDefaultContentSetting(
15 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
, CONTENT_SETTING_DEFAULT
);
18 // Clears the notifications setting for the given pattern.
19 void DesktopNotificationProfileUtil::ClearSetting(
20 Profile
* profile
, const ContentSettingsPattern
& pattern
) {
21 profile
->GetHostContentSettingsMap()->SetContentSetting(
23 ContentSettingsPattern::Wildcard(),
24 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
,
25 NO_RESOURCE_IDENTIFIER
,
26 CONTENT_SETTING_DEFAULT
);
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(
37 ContentSettingsPattern::Wildcard(),
38 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
,
39 NO_RESOURCE_IDENTIFIER
,
40 CONTENT_SETTING_ALLOW
);
43 void DesktopNotificationProfileUtil::DenyPermission(
44 Profile
* profile
, const GURL
& origin
) {
45 ContentSettingsPattern primary_pattern
=
46 ContentSettingsPattern::FromURLNoWildcard(origin
);
47 profile
->GetHostContentSettingsMap()->SetContentSetting(
49 ContentSettingsPattern::Wildcard(),
50 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
,
51 NO_RESOURCE_IDENTIFIER
,
52 CONTENT_SETTING_BLOCK
);
55 void DesktopNotificationProfileUtil::GetNotificationsSettings(
56 Profile
* profile
, ContentSettingsForOneType
* settings
) {
57 profile
->GetHostContentSettingsMap()->GetSettingsForOneType(
58 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
,
59 NO_RESOURCE_IDENTIFIER
,
63 ContentSetting
DesktopNotificationProfileUtil::GetContentSetting(
64 Profile
* profile
, const GURL
& origin
) {
65 return profile
->GetHostContentSettingsMap()->GetContentSetting(
68 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
,
69 NO_RESOURCE_IDENTIFIER
);
72 void DesktopNotificationProfileUtil::UsePermission(Profile
* profile
,
74 profile
->GetHostContentSettingsMap()->UpdateLastUsageByPattern(
75 ContentSettingsPattern::FromURLNoWildcard(origin
),
76 ContentSettingsPattern::Wildcard(),
77 CONTENT_SETTINGS_TYPE_NOTIFICATIONS
);