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#ifndef CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_INFOBAR_DELEGATE_H_
6#define CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_INFOBAR_DELEGATE_H_
7
8#include "chrome/browser/content_settings/permission_infobar_delegate.h"
9#include "components/content_settings/core/common/content_settings_types.h"
10
11class GURL;
12class InfoBarService;
13
14namespace gcm {
15
16// Delegate to allow GCM push messages registration.
17class PushMessagingInfoBarDelegate : public PermissionInfobarDelegate {
18 public:
19
20  // Creates a Push Permission infobar and delegate and adds the infobar to
21  // |infobar_service|.  Returns the infobar if it was successfully added.
22  static infobars::InfoBar* Create(InfoBarService* infobar_service,
23                                   PermissionQueueController* controller,
24                                   const PermissionRequestID& id,
25                                   const GURL& requesting_frame,
26                                   const std::string& display_languages,
27                                   ContentSettingsType type);
28
29 private:
30  PushMessagingInfoBarDelegate(PermissionQueueController* controller,
31                               const PermissionRequestID& id,
32                               const GURL& requesting_frame,
33                               const std::string& display_languages,
34                               ContentSettingsType type);
35  virtual ~PushMessagingInfoBarDelegate();
36
37  // ConfirmInfoBarDelegate:
38  virtual base::string16 GetMessageText() const OVERRIDE;
39  virtual int GetIconID() const OVERRIDE;
40
41  const GURL requesting_origin_;
42  const std::string display_languages_;
43
44  DISALLOW_COPY_AND_ASSIGN(PushMessagingInfoBarDelegate);
45};
46
47}  // namespace gcm
48#endif  // CHROME_BROWSER_SERVICES_GCM_PUSH_MESSAGING_INFOBAR_DELEGATE_H_
49
50