diff options
author | ibraaaa@google.com <ibraaaa@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-20 20:53:18 +0000 |
---|---|---|
committer | ibraaaa@google.com <ibraaaa@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-20 20:53:18 +0000 |
commit | 0f5e57f515094790fe2a8d638213c25314b8d3e8 (patch) | |
tree | 0f840c7ba459b30ba27d68929f2d7d5c6b01e41d /chrome/browser/plugins/plugin_infobar_delegates.h | |
parent | 67990d826888e15984ffe09c85ecf7796fb18a79 (diff) | |
download | chromium_src-0f5e57f515094790fe2a8d638213c25314b8d3e8.zip chromium_src-0f5e57f515094790fe2a8d638213c25314b8d3e8.tar.gz chromium_src-0f5e57f515094790fe2a8d638213c25314b8d3e8.tar.bz2 |
Move chrome/browser/plugin_* to chrome/browser/plugins/
TBR=jhawkins@chromium.org
BUG=124396
Review URL: https://chromiumcodereview.appspot.com/10933044
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157834 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/plugins/plugin_infobar_delegates.h')
-rw-r--r-- | chrome/browser/plugins/plugin_infobar_delegates.h | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/chrome/browser/plugins/plugin_infobar_delegates.h b/chrome/browser/plugins/plugin_infobar_delegates.h new file mode 100644 index 0000000..2a829d9 --- /dev/null +++ b/chrome/browser/plugins/plugin_infobar_delegates.h @@ -0,0 +1,202 @@ +// 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_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ +#define CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ + +#include "base/callback.h" +#include "chrome/browser/api/infobars/confirm_infobar_delegate.h" +#include "googleurl/src/gurl.h" + +#if defined(ENABLE_PLUGIN_INSTALLATION) +#include "chrome/browser/plugins/plugin_installer_observer.h" +#endif // defined(ENABLE_PLUGIN_INSTALLATION) + +class InfoBarService; +class HostContentSettingsMap; +class PluginObserver; + +// Base class for blocked plug-in infobars. +class PluginInfoBarDelegate : public ConfirmInfoBarDelegate { + public: + PluginInfoBarDelegate(InfoBarService* infobar_service, + const string16& name, + const std::string& identifier); + + 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; + + std::string identifier_; + + DISALLOW_COPY_AND_ASSIGN(PluginInfoBarDelegate); +}; + +// Infobar that's shown when a plug-in requires user authorization to run. +class UnauthorizedPluginInfoBarDelegate : public PluginInfoBarDelegate { + public: + UnauthorizedPluginInfoBarDelegate(InfoBarService* infobar_service, + HostContentSettingsMap* content_settings, + const string16& name, + const std::string& identifier); + + 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 TabContents, which owns us + // (transitively via InfoBarService). + 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(InfoBarService* infobar_service, + PluginInstaller* installer, + const base::Closure& callback); + + private: + friend class OutdatedPluginInfoBarDelegate; + + PluginInstallerInfoBarDelegate(InfoBarService* infobar_service, + 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) + +#if defined(OS_WIN) +class PluginMetroModeInfoBarDelegate : public ConfirmInfoBarDelegate { + public: + // Shows an infobar asking the user to switch to desktop chrome if they + // want to use the plugin. + static InfoBarDelegate* Create(InfoBarService* infobar_service, + const string16& plugin_name); + private: + PluginMetroModeInfoBarDelegate(InfoBarService* infobar_service, + const string16& message); + virtual ~PluginMetroModeInfoBarDelegate(); + + // 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; + + string16 message_; + + DISALLOW_COPY_AND_ASSIGN(PluginMetroModeInfoBarDelegate); +}; +#endif // defined(OS_WIN) + +#endif // CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ |