blob: c5f247e4a36ec4039d2947e5de5305bad3194945 [file] [log] [blame]
[email protected]8c8fc292012-11-23 18:57:161// Copyright (c) 2012 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_PEPPER_BROKER_INFOBAR_DELEGATE_H_
6#define CHROME_BROWSER_PEPPER_BROKER_INFOBAR_DELEGATE_H_
7
8#include "base/callback.h"
[email protected]57999812013-02-24 05:40:529#include "base/files/file_path.h"
[email protected]f9b21602014-05-22 00:53:1210#include "components/infobars/core/confirm_infobar_delegate.h"
[email protected]761fa4702013-07-02 15:25:1511#include "url/gurl.h"
[email protected]8c8fc292012-11-23 18:57:1612
13class HostContentSettingsMap;
[email protected]4f822f022012-12-20 19:11:4214class InfoBarService;
[email protected]404063d2013-02-10 16:23:0115class TabSpecificContentSettings;
[email protected]8c8fc292012-11-23 18:57:1616
17namespace content {
18class WebContents;
19}
20
21// Shows an infobar that asks the user whether a Pepper plug-in is allowed
22// to connect to its (privileged) broker. The user decision is made "sticky"
23// by storing a content setting for the site.
24class PepperBrokerInfoBarDelegate : public ConfirmInfoBarDelegate {
25 public:
[email protected]0be09932013-01-08 02:03:5026 // Determines whether the broker setting is allow, deny, or ask. In the first
27 // two cases, runs the callback directly. In the third, creates a pepper
[email protected]39308cb2013-12-06 03:01:4828 // broker infobar and delegate and adds the infobar to the InfoBarService
29 // associated with |web_contents|.
[email protected]0be09932013-01-08 02:03:5030 static void Create(content::WebContents* web_contents,
31 const GURL& url,
[email protected]650b2d52013-02-10 03:41:4532 const base::FilePath& plugin_path,
[email protected]0be09932013-01-08 02:03:5033 const base::Callback<void(bool)>& callback);
[email protected]8c8fc292012-11-23 18:57:1634
[email protected]8c8fc292012-11-23 18:57:1635 private:
[email protected]39308cb2013-12-06 03:01:4836 PepperBrokerInfoBarDelegate(const GURL& url,
[email protected]01a55272013-07-10 21:25:3737 const base::FilePath& plugin_path,
38 const std::string& languages,
39 HostContentSettingsMap* content_settings,
40 TabSpecificContentSettings* tab_content_settings,
41 const base::Callback<void(bool)>& callback);
Daniel Chenga542fca2014-10-21 09:51:2942 ~PepperBrokerInfoBarDelegate() override;
[email protected]8c8fc292012-11-23 18:57:1643
[email protected]da0ade72013-04-30 01:02:5344 // ConfirmInfoBarDelegate:
Daniel Chenga542fca2014-10-21 09:51:2945 int GetIconID() const override;
46 base::string16 GetMessageText() const override;
47 base::string16 GetButtonLabel(InfoBarButton button) const override;
48 bool Accept() override;
49 bool Cancel() override;
50 base::string16 GetLinkText() const override;
51 bool LinkClicked(WindowOpenDisposition disposition) override;
[email protected]da0ade72013-04-30 01:02:5352
[email protected]8c8fc292012-11-23 18:57:1653 void DispatchCallback(bool result);
54
55 const GURL url_;
[email protected]650b2d52013-02-10 03:41:4556 const base::FilePath plugin_path_;
[email protected]8c8fc292012-11-23 18:57:1657 const std::string languages_;
58 HostContentSettingsMap* content_settings_;
[email protected]404063d2013-02-10 16:23:0159 TabSpecificContentSettings* tab_content_settings_;
[email protected]8c8fc292012-11-23 18:57:1660 base::Callback<void(bool)> callback_;
61
62 DISALLOW_COPY_AND_ASSIGN(PepperBrokerInfoBarDelegate);
63};
64
65#endif // CHROME_BROWSER_PEPPER_BROKER_INFOBAR_DELEGATE_H_