1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/services/gcm/push_messaging_infobar_delegate.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "chrome/grit/generated_resources.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/infobars/core/infobar.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "grit/theme_resources.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/base/net_util.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/base/l10n/l10n_util.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace gcm {
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// static
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochinfobars::InfoBar* PushMessagingInfoBarDelegate::Create(
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    InfoBarService* infobar_service,
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    PermissionQueueController* controller,
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const PermissionRequestID& id,
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const GURL& requesting_frame,
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& display_languages,
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ContentSettingsType type) {
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DCHECK(infobar_service);
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DCHECK(controller);
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar(
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      scoped_ptr<ConfirmInfoBarDelegate>(new PushMessagingInfoBarDelegate(
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch          controller, id, requesting_frame, display_languages, type))));
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
30116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPushMessagingInfoBarDelegate::PushMessagingInfoBarDelegate(
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    PermissionQueueController* controller,
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const PermissionRequestID& id,
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const GURL& requesting_frame,
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& display_languages,
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ContentSettingsType type)
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  : PermissionInfobarDelegate(controller, id, requesting_frame, type),
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    requesting_origin_(requesting_frame.GetOrigin()),
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    display_languages_(display_languages) {
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
41116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPushMessagingInfoBarDelegate::~PushMessagingInfoBarDelegate() {
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbase::string16 PushMessagingInfoBarDelegate::GetMessageText() const {
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return l10n_util::GetStringFUTF16(
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        IDS_PUSH_MESSAGES_PERMISSION_QUESTION,
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::FormatUrl(requesting_origin_, display_languages_,
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                       net::kFormatUrlOmitUsernamePassword |
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                       net::kFormatUrlOmitTrailingSlashOnBareHostname,
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                       net::UnescapeRule::SPACES, NULL, NULL, NULL));
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint PushMessagingInfoBarDelegate::GetIconID() const {
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // TODO(miguelg): change once we have an icon
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return IDR_INFOBAR_WARNING;
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace gcm
59