| Index: chrome/browser/plugins/plugin_infobar_delegates.cc
|
| ===================================================================
|
| --- chrome/browser/plugins/plugin_infobar_delegates.cc (revision 175396)
|
| +++ chrome/browser/plugins/plugin_infobar_delegates.cc (working copy)
|
| @@ -28,6 +28,9 @@
|
| #endif
|
|
|
| #if defined(ENABLE_PLUGIN_INSTALLATION)
|
| +#if defined(OS_WIN)
|
| +#include "base/win/metro.h"
|
| +#endif
|
| #include "chrome/browser/plugins/plugin_installer.h"
|
| #endif // defined(ENABLE_PLUGIN_INSTALLATION)
|
|
|
| @@ -75,15 +78,18 @@
|
|
|
| // UnauthorizedPluginInfoBarDelegate ------------------------------------------
|
|
|
| -UnauthorizedPluginInfoBarDelegate::UnauthorizedPluginInfoBarDelegate(
|
| +// static
|
| +void UnauthorizedPluginInfoBarDelegate::Create(
|
| InfoBarService* infobar_service,
|
| HostContentSettingsMap* content_settings,
|
| const string16& utf16_name,
|
| - const std::string& identifier)
|
| - : PluginInfoBarDelegate(infobar_service, utf16_name, identifier),
|
| - content_settings_(content_settings) {
|
| + const std::string& identifier) {
|
| + infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
|
| + new UnauthorizedPluginInfoBarDelegate(infobar_service, content_settings,
|
| + utf16_name, identifier)));
|
| +
|
| content::RecordAction(UserMetricsAction("BlockedPluginInfobar.Shown"));
|
| - std::string name = UTF16ToUTF8(utf16_name);
|
| + std::string name(UTF16ToUTF8(utf16_name));
|
| if (name == PluginMetadata::kJavaGroupName)
|
| content::RecordAction(
|
| UserMetricsAction("BlockedPluginInfobar.Shown.Java"));
|
| @@ -101,6 +107,15 @@
|
| UserMetricsAction("BlockedPluginInfobar.Shown.WindowsMediaPlayer"));
|
| }
|
|
|
| +UnauthorizedPluginInfoBarDelegate::UnauthorizedPluginInfoBarDelegate(
|
| + InfoBarService* infobar_service,
|
| + HostContentSettingsMap* content_settings,
|
| + const string16& utf16_name,
|
| + const std::string& identifier)
|
| + : PluginInfoBarDelegate(infobar_service, utf16_name, identifier),
|
| + content_settings_(content_settings) {
|
| +}
|
| +
|
| UnauthorizedPluginInfoBarDelegate::~UnauthorizedPluginInfoBarDelegate() {
|
| content::RecordAction(UserMetricsAction("BlockedPluginInfobar.Closed"));
|
| }
|
| @@ -153,8 +168,8 @@
|
| #if defined(ENABLE_PLUGIN_INSTALLATION)
|
| // OutdatedPluginInfoBarDelegate ----------------------------------------------
|
|
|
| -InfoBarDelegate* OutdatedPluginInfoBarDelegate::Create(
|
| - content::WebContents* web_contents,
|
| +void OutdatedPluginInfoBarDelegate::Create(
|
| + InfoBarService* infobar_service,
|
| PluginInstaller* installer,
|
| scoped_ptr<PluginMetadata> plugin_metadata) {
|
| string16 message;
|
| @@ -168,17 +183,18 @@
|
| plugin_metadata->name());
|
| break;
|
| }
|
| - return new OutdatedPluginInfoBarDelegate(
|
| - web_contents, installer, plugin_metadata.Pass(), message);
|
| + infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
|
| + new OutdatedPluginInfoBarDelegate(
|
| + infobar_service, installer, plugin_metadata.Pass(), message)));
|
| }
|
|
|
| OutdatedPluginInfoBarDelegate::OutdatedPluginInfoBarDelegate(
|
| - content::WebContents* web_contents,
|
| + InfoBarService* infobar_service,
|
| PluginInstaller* installer,
|
| scoped_ptr<PluginMetadata> plugin_metadata,
|
| const string16& message)
|
| : PluginInfoBarDelegate(
|
| - InfoBarService::FromWebContents(web_contents),
|
| + infobar_service,
|
| plugin_metadata->name(),
|
| plugin_metadata->identifier()),
|
| WeakPluginInstallerObserver(installer),
|
| @@ -299,14 +315,55 @@
|
| return;
|
| if (!owner())
|
| return;
|
| - InfoBarDelegate* delegate = new PluginInstallerInfoBarDelegate(
|
| - owner(), installer(), plugin_metadata_->Clone(),
|
| - PluginInstallerInfoBarDelegate::InstallCallback(), false, message);
|
| - owner()->ReplaceInfoBar(this, delegate);
|
| + PluginInstallerInfoBarDelegate::Replace(
|
| + this, installer(), plugin_metadata_->Clone(), false, message);
|
| }
|
|
|
| // PluginInstallerInfoBarDelegate ---------------------------------------------
|
|
|
| +void PluginInstallerInfoBarDelegate::Create(
|
| + InfoBarService* infobar_service,
|
| + PluginInstaller* installer,
|
| + scoped_ptr<PluginMetadata> plugin_metadata,
|
| + const InstallCallback& callback) {
|
| + string16 name(plugin_metadata->name());
|
| +#if defined(OS_WIN)
|
| + if (base::win::IsMetroProcess()) {
|
| + PluginMetroModeInfoBarDelegate::Create(
|
| + infobar_service, PluginMetroModeInfoBarDelegate::MISSING_PLUGIN, name);
|
| + return;
|
| + }
|
| +#endif
|
| + string16 message;
|
| + switch (installer->state()) {
|
| + case PluginInstaller::INSTALLER_STATE_IDLE:
|
| + message = l10n_util::GetStringFUTF16(
|
| + IDS_PLUGININSTALLER_INSTALLPLUGIN_PROMPT, name);
|
| + break;
|
| + case PluginInstaller::INSTALLER_STATE_DOWNLOADING:
|
| + message = l10n_util::GetStringFUTF16(IDS_PLUGIN_DOWNLOADING, name);
|
| + break;
|
| + }
|
| + infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
|
| + new PluginInstallerInfoBarDelegate(
|
| + infobar_service, installer, plugin_metadata.Pass(), callback, true,
|
| + message)));
|
| +}
|
| +
|
| +void PluginInstallerInfoBarDelegate::Replace(
|
| + InfoBarDelegate* infobar,
|
| + PluginInstaller* installer,
|
| + scoped_ptr<PluginMetadata> plugin_metadata,
|
| + bool new_install,
|
| + const string16& message) {
|
| + DCHECK(infobar->owner());
|
| + infobar->owner()->ReplaceInfoBar(infobar, scoped_ptr<InfoBarDelegate>(
|
| + new PluginInstallerInfoBarDelegate(
|
| + infobar->owner(), installer, plugin_metadata.Pass(),
|
| + PluginInstallerInfoBarDelegate::InstallCallback(), new_install,
|
| + message)));
|
| +}
|
| +
|
| PluginInstallerInfoBarDelegate::PluginInstallerInfoBarDelegate(
|
| InfoBarService* infobar_service,
|
| PluginInstaller* installer,
|
| @@ -325,27 +382,6 @@
|
| PluginInstallerInfoBarDelegate::~PluginInstallerInfoBarDelegate() {
|
| }
|
|
|
| -InfoBarDelegate* PluginInstallerInfoBarDelegate::Create(
|
| - InfoBarService* infobar_service,
|
| - PluginInstaller* installer,
|
| - scoped_ptr<PluginMetadata> plugin_metadata,
|
| - const InstallCallback& callback) {
|
| - string16 message;
|
| - switch (installer->state()) {
|
| - case PluginInstaller::INSTALLER_STATE_IDLE:
|
| - message = l10n_util::GetStringFUTF16(
|
| - IDS_PLUGININSTALLER_INSTALLPLUGIN_PROMPT, plugin_metadata->name());
|
| - break;
|
| - case PluginInstaller::INSTALLER_STATE_DOWNLOADING:
|
| - message = l10n_util::GetStringFUTF16(IDS_PLUGIN_DOWNLOADING,
|
| - plugin_metadata->name());
|
| - break;
|
| - }
|
| - return new PluginInstallerInfoBarDelegate(
|
| - infobar_service, installer, plugin_metadata.Pass(),
|
| - callback, true, message);
|
| -}
|
| -
|
| gfx::Image* PluginInstallerInfoBarDelegate::GetIcon() const {
|
| return &ResourceBundle::GetSharedInstance().GetNativeImageNamed(
|
| IDR_INFOBAR_PLUGIN_INSTALL);
|
| @@ -428,14 +464,20 @@
|
| return;
|
| if (!owner())
|
| return;
|
| - InfoBarDelegate* delegate = new PluginInstallerInfoBarDelegate(
|
| - owner(), installer(), plugin_metadata_->Clone(),
|
| - InstallCallback(), new_install_, message);
|
| - owner()->ReplaceInfoBar(this, delegate);
|
| + Replace(this, installer(), plugin_metadata_->Clone(), new_install_, message);
|
| }
|
|
|
| // PluginMetroModeInfoBarDelegate ---------------------------------------------
|
| #if defined(OS_WIN)
|
| +// static
|
| +void PluginMetroModeInfoBarDelegate::Create(
|
| + InfoBarService* infobar_service,
|
| + PluginMetroModeInfoBarDelegate::Mode mode,
|
| + const string16& name) {
|
| + infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
|
| + new PluginMetroModeInfoBarDelegate(infobar_service, mode, name)));
|
| +}
|
| +
|
| PluginMetroModeInfoBarDelegate::PluginMetroModeInfoBarDelegate(
|
| InfoBarService* infobar_service,
|
| PluginMetroModeInfoBarDelegate::Mode mode,
|
|
|