15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/notifications/desktop_notification_profile_util.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/content_settings/host_content_settings_map.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/browser/content_settings_provider.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/common/content_settings_pattern.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void DesktopNotificationProfileUtil::ResetToDefaultContentSetting( 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile) { 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile->GetHostContentSettingsMap()->SetDefaultContentSetting( 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_DEFAULT); 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Clears the notifications setting for the given pattern. 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void DesktopNotificationProfileUtil::ClearSetting( 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile, const ContentSettingsPattern& pattern) { 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile->GetHostContentSettingsMap()->SetContentSetting( 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pattern, 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::Wildcard(), 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NO_RESOURCE_IDENTIFIER, 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTING_DEFAULT); 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Methods to setup and modify permission preferences. 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void DesktopNotificationProfileUtil::GrantPermission( 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile, const GURL& origin) { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern primary_pattern = 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::FromURLNoWildcard(origin); 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile->GetHostContentSettingsMap()->SetContentSetting( 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) primary_pattern, 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::Wildcard(), 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NO_RESOURCE_IDENTIFIER, 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTING_ALLOW); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void DesktopNotificationProfileUtil::DenyPermission( 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile, const GURL& origin) { 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern primary_pattern = 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::FromURLNoWildcard(origin); 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile->GetHostContentSettingsMap()->SetContentSetting( 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) primary_pattern, 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::Wildcard(), 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NO_RESOURCE_IDENTIFIER, 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTING_BLOCK); 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void DesktopNotificationProfileUtil::GetNotificationsSettings( 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile, ContentSettingsForOneType* settings) { 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile->GetHostContentSettingsMap()->GetSettingsForOneType( 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NO_RESOURCE_IDENTIFIER, 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) settings); 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)ContentSetting DesktopNotificationProfileUtil::GetContentSetting( 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile, const GURL& origin) { 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return profile->GetHostContentSettingsMap()->GetContentSetting( 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) origin, 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) origin, 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NO_RESOURCE_IDENTIFIER); 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void DesktopNotificationProfileUtil::UsePermission(Profile* profile, 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& origin) { 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile->GetHostContentSettingsMap()->UpdateLastUsageByPattern( 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::FromURLNoWildcard(origin), 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ContentSettingsPattern::Wildcard(), 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 79