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