summaryrefslogtreecommitdiffstats
path: root/chrome/browser/plugins/plugin_infobar_delegates.h
diff options
context:
space:
mode:
authoribraaaa@google.com <ibraaaa@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-20 20:53:18 +0000
committeribraaaa@google.com <ibraaaa@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-20 20:53:18 +0000
commit0f5e57f515094790fe2a8d638213c25314b8d3e8 (patch)
tree0f840c7ba459b30ba27d68929f2d7d5c6b01e41d /chrome/browser/plugins/plugin_infobar_delegates.h
parent67990d826888e15984ffe09c85ecf7796fb18a79 (diff)
downloadchromium_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.h202
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_