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#ifndef CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_INFOBAR_DELEGATE_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_INFOBAR_DELEGATE_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/infobars/infobar_service.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/content_settings/core/common/content_settings_types.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/common/permission_request_id.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/infobars/core/confirm_infobar_delegate.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/browser/web_contents.h"
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass NavigationDetails;
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PermissionQueueController;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Base class for permission infobars, it implements the default behavior
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// so that the accept/deny buttons grant/deny the relevant permission.
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// A basic implementor only needs to implement the methods that
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// provide an icon and a message text to the infobar.
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PermissionInfobarDelegate : public ConfirmInfoBarDelegate {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected:
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  PermissionInfobarDelegate(PermissionQueueController* controller,
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                            const PermissionRequestID& id,
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                            const GURL& requesting_origin,
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                            ContentSettingsType type);
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~PermissionInfobarDelegate();
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // ConfirmInfoBarDelegate:
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual base::string16 GetMessageText() const = 0;
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual infobars::InfoBarDelegate::Type GetInfoBarType() const OVERRIDE;
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Remember to call RegisterActionTaken for these methods if you are
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // overriding them.
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void InfoBarDismissed() OVERRIDE;
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool Accept() OVERRIDE;
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool Cancel() OVERRIDE;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SetPermission(bool update_content_setting, bool allowed);
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  PermissionQueueController* controller_; // not owned by us
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  const PermissionRequestID id_;
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  GURL requesting_origin_;
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool action_taken_;
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ContentSettingsType type_;
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(PermissionInfobarDelegate);
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_INFOBAR_DELEGATE_H_
55