1// 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" 9#include "base/files/file_path.h" 10#include "chrome/browser/infobars/confirm_infobar_delegate.h" 11#include "url/gurl.h" 12 13class HostContentSettingsMap; 14class InfoBarService; 15class TabSpecificContentSettings; 16 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: 26 // 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 28 // broker infobar and delegate and adds the infobar to the InfoBarService 29 // associated with |web_contents|. 30 static void Create(content::WebContents* web_contents, 31 const GURL& url, 32 const base::FilePath& plugin_path, 33 const base::Callback<void(bool)>& callback); 34 35 private: 36 PepperBrokerInfoBarDelegate(const GURL& url, 37 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); 42 virtual ~PepperBrokerInfoBarDelegate(); 43 44 // ConfirmInfoBarDelegate: 45 virtual int GetIconID() const OVERRIDE; 46 virtual base::string16 GetMessageText() const OVERRIDE; 47 virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 48 virtual bool Accept() OVERRIDE; 49 virtual bool Cancel() OVERRIDE; 50 virtual base::string16 GetLinkText() const OVERRIDE; 51 virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 52 53 void DispatchCallback(bool result); 54 55 const GURL url_; 56 const base::FilePath plugin_path_; 57 const std::string languages_; 58 HostContentSettingsMap* content_settings_; 59 TabSpecificContentSettings* tab_content_settings_; 60 base::Callback<void(bool)> callback_; 61 62 DISALLOW_COPY_AND_ASSIGN(PepperBrokerInfoBarDelegate); 63}; 64 65#endif // CHROME_BROWSER_PEPPER_BROKER_INFOBAR_DELEGATE_H_ 66