Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / notifications / desktop_notification_profile_util.cc
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 }