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_infobar_delegate.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/content_settings/permission_queue_controller.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/infobars/infobar_service.h" 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/locale_settings.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/content_settings/core/common/content_settings_types.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/common/permission_request_id.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/infobars/core/infobar.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/browser/navigation_entry.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/browser/web_contents.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "grit/theme_resources.h" 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "net/base/net_util.h" 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)infobars::InfoBar* DesktopNotificationInfoBarDelegate::Create( 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) InfoBarService* infobar_service, 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PermissionQueueController* controller, 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const PermissionRequestID& id, 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& requesting_frame, 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& display_languages) { 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const content::NavigationEntry* committed_entry = 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) infobar_service->web_contents()->GetController().GetLastCommittedEntry(); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar( 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<ConfirmInfoBarDelegate>(new DesktopNotificationInfoBarDelegate( 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) controller, id, requesting_frame, 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) committed_entry ? committed_entry->GetUniqueID() : 0, 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) display_languages)))); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)DesktopNotificationInfoBarDelegate::DesktopNotificationInfoBarDelegate( 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PermissionQueueController* controller, 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const PermissionRequestID& id, 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& requesting_frame, 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int contents_unique_id, 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& display_languages) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : PermissionInfobarDelegate(controller, id, requesting_frame, 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_SETTINGS_TYPE_NOTIFICATIONS), 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) requesting_frame_(requesting_frame), 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) display_languages_(display_languages) { 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)DesktopNotificationInfoBarDelegate::~DesktopNotificationInfoBarDelegate() { 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)int DesktopNotificationInfoBarDelegate::GetIconID() const { 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return IDR_INFOBAR_DESKTOP_NOTIFICATIONS; 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)base::string16 DesktopNotificationInfoBarDelegate::GetMessageText() const { 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return l10n_util::GetStringFUTF16( 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_NOTIFICATION_PERMISSIONS, 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) net::FormatUrl(requesting_frame_.GetOrigin(), display_languages_, 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) net::kFormatUrlOmitUsernamePassword | 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) net::kFormatUrlOmitTrailingSlashOnBareHostname, 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) net::UnescapeRule::SPACES, NULL, NULL, NULL)); 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 63