| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_PLUGIN_INFOBAR_DELEGATES_H_ |
| #define CHROME_BROWSER_PLUGIN_INFOBAR_DELEGATES_H_ |
| #pragma once |
| |
| #include "base/callback.h" |
| #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" |
| #include "googleurl/src/gurl.h" |
| |
| #if defined(ENABLE_PLUGIN_INSTALLATION) |
| #include "chrome/browser/plugin_installer_observer.h" |
| #endif // defined(ENABLE_PLUGIN_INSTALLATION) |
| |
| class HostContentSettingsMap; |
| class PluginObserver; |
| |
| // Base class for blocked plug-in infobars. |
| class PluginInfoBarDelegate : public ConfirmInfoBarDelegate { |
| public: |
| PluginInfoBarDelegate(InfoBarTabHelper* infobar_helper, const string16& name); |
| |
| protected: |
| virtual ~PluginInfoBarDelegate(); |
| |
| // ConfirmInfoBarDelegate: |
| virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; |
| |
| virtual std::string GetLearnMoreURL() const = 0; |
| |
| void LoadBlockedPlugins(); |
| |
| string16 name_; |
| |
| private: |
| // ConfirmInfoBarDelegate: |
| virtual gfx::Image* GetIcon() const OVERRIDE; |
| virtual string16 GetLinkText() const OVERRIDE; |
| |
| DISALLOW_COPY_AND_ASSIGN(PluginInfoBarDelegate); |
| }; |
| |
| // Infobar that's shown when a plug-in requires user authorization to run. |
| class UnauthorizedPluginInfoBarDelegate : public PluginInfoBarDelegate { |
| public: |
| UnauthorizedPluginInfoBarDelegate(InfoBarTabHelper* infobar_helper, |
| HostContentSettingsMap* content_settings, |
| const string16& name); |
| |
| private: |
| virtual ~UnauthorizedPluginInfoBarDelegate(); |
| |
| // PluginInfoBarDelegate: |
| virtual string16 GetMessageText() const OVERRIDE; |
| virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
| virtual bool Accept() OVERRIDE; |
| virtual bool Cancel() OVERRIDE; |
| virtual void InfoBarDismissed() OVERRIDE; |
| virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; |
| virtual std::string GetLearnMoreURL() const OVERRIDE; |
| |
| HostContentSettingsMap* content_settings_; |
| |
| DISALLOW_COPY_AND_ASSIGN(UnauthorizedPluginInfoBarDelegate); |
| }; |
| |
| #if defined(ENABLE_PLUGIN_INSTALLATION) |
| // Infobar that's shown when a plug-in is out of date. |
| class OutdatedPluginInfoBarDelegate : public PluginInfoBarDelegate, |
| public WeakPluginInstallerObserver { |
| public: |
| static InfoBarDelegate* Create(PluginObserver* observer, |
| PluginInstaller* installer); |
| |
| private: |
| OutdatedPluginInfoBarDelegate(PluginObserver* observer, |
| PluginInstaller* installer, |
| const string16& message); |
| virtual ~OutdatedPluginInfoBarDelegate(); |
| |
| // PluginInfoBarDelegate: |
| virtual string16 GetMessageText() const OVERRIDE; |
| virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
| virtual bool Accept() OVERRIDE; |
| virtual bool Cancel() OVERRIDE; |
| virtual void InfoBarDismissed() OVERRIDE; |
| virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; |
| virtual std::string GetLearnMoreURL() const OVERRIDE; |
| |
| // PluginInstallerObserver: |
| virtual void DownloadStarted() OVERRIDE; |
| virtual void DownloadError(const std::string& message) OVERRIDE; |
| virtual void DownloadCancelled() OVERRIDE; |
| virtual void DownloadFinished() OVERRIDE; |
| |
| // WeakPluginInstallerObserver: |
| virtual void OnlyWeakObserversLeft() OVERRIDE; |
| |
| // Replaces this infobar with one showing |message|. The new infobar will |
| // not have any buttons (and not call the callback). |
| void ReplaceWithInfoBar(const string16& message); |
| |
| // Has the same lifetime as TabContentsWrapper, which owns us |
| // (transitively via InfoBarTabHelper). |
| PluginObserver* observer_; |
| |
| string16 message_; |
| |
| DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBarDelegate); |
| }; |
| |
| // The main purpose for this class is to popup/close the infobar when there is |
| // a missing plugin. |
| class PluginInstallerInfoBarDelegate : public ConfirmInfoBarDelegate, |
| public WeakPluginInstallerObserver { |
| public: |
| // Shows an infobar asking whether to install the plugin represented by |
| // |installer|. When the user accepts, |callback| is called. |
| // During installation of the plug-in, the infobar will change to reflect the |
| // installation state. |
| static InfoBarDelegate* Create(InfoBarTabHelper* infobar_helper, |
| PluginInstaller* installer, |
| const base::Closure& callback); |
| |
| private: |
| friend class OutdatedPluginInfoBarDelegate; |
| |
| PluginInstallerInfoBarDelegate(InfoBarTabHelper* infobar_helper, |
| PluginInstaller* installer, |
| const base::Closure& callback, |
| bool new_install, |
| const string16& message); |
| virtual ~PluginInstallerInfoBarDelegate(); |
| |
| // ConfirmInfoBarDelegate: |
| virtual gfx::Image* GetIcon() const OVERRIDE; |
| virtual string16 GetMessageText() const OVERRIDE; |
| virtual int GetButtons() const OVERRIDE; |
| virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
| virtual bool Accept() OVERRIDE; |
| virtual string16 GetLinkText() const OVERRIDE; |
| virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; |
| |
| // PluginInstallerObserver: |
| virtual void DownloadStarted() OVERRIDE; |
| virtual void DownloadError(const std::string& message) OVERRIDE; |
| virtual void DownloadCancelled() OVERRIDE; |
| virtual void DownloadFinished() OVERRIDE; |
| |
| // WeakPluginInstallerObserver: |
| virtual void OnlyWeakObserversLeft() OVERRIDE; |
| |
| // Replaces this infobar with one showing |message|. The new infobar will |
| // not have any buttons (and not call the callback). |
| void ReplaceWithInfoBar(const string16& message); |
| |
| base::Closure callback_; |
| |
| // True iff the plug-in isn't installed yet. |
| bool new_install_; |
| |
| string16 message_; |
| |
| DISALLOW_COPY_AND_ASSIGN(PluginInstallerInfoBarDelegate); |
| }; |
| #endif // defined(ENABLE_PLUGIN_INSTALLATION) |
| |
| #endif // CHROME_BROWSER_PLUGIN_INFOBAR_DELEGATES_H_ |