Chromium Code Reviews| Index: chrome/browser/tab_contents/tab_contents.cc |
| =================================================================== |
| --- chrome/browser/tab_contents/tab_contents.cc (revision 72707) |
| +++ chrome/browser/tab_contents/tab_contents.cc (working copy) |
| @@ -248,66 +248,183 @@ |
| params->request_time = base::Time::Now(); |
| } |
| +// PluginInfoBar -------------------------------------------------------------- |
|
jam
2011/01/27 20:41:59
TabContents is not the place to put dump all these
|
| +class PluginInfoBar : public ConfirmInfoBarDelegate { |
| + public: |
| + PluginInfoBar(TabContents* tab_contents, const string16& name); |
| + |
| + // ConfirmInfoBarDelegate: |
| + virtual void InfoBarClosed() = 0; |
| + virtual SkBitmap* GetIcon() const; |
| + virtual string16 GetMessageText() const = 0; |
| + virtual int GetButtons() const; |
| + virtual string16 GetButtonLabel(InfoBarButton button) const = 0; |
| + virtual bool Accept() = 0; |
| + virtual bool Cancel() = 0; |
| + virtual string16 GetLinkText(); |
| + virtual bool LinkClicked(WindowOpenDisposition disposition) = 0; |
| + |
| + protected: |
| + virtual ~PluginInfoBar(); |
| + |
| + void CommonCancel(); |
| + void CommonClose(); |
| + void CommonLearnMore(WindowOpenDisposition disposition); |
| + |
| + string16 name_; |
| + TabContents* tab_contents_; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(PluginInfoBar); |
| +}; |
| + |
| +PluginInfoBar::PluginInfoBar(TabContents* tab_contents, const string16& name) |
| + : ConfirmInfoBarDelegate(tab_contents), |
| + name_(name), |
| + tab_contents_(tab_contents) { |
| +} |
| + |
| +PluginInfoBar::~PluginInfoBar() { |
| +} |
| + |
| +void PluginInfoBar::CommonClose() { |
| + delete this; |
| +} |
| + |
| +SkBitmap* PluginInfoBar::GetIcon() const { |
| + return ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| + IDR_INFOBAR_PLUGIN_INSTALL); |
| +} |
| + |
| +int PluginInfoBar::GetButtons() const { |
| + return BUTTON_OK | BUTTON_CANCEL; |
| +} |
| + |
| +void PluginInfoBar::CommonCancel() { |
| + tab_contents_->render_view_host()->LoadBlockedPlugins(); |
| +} |
| + |
| +string16 PluginInfoBar::GetLinkText() { |
| + return l10n_util::GetStringUTF16(IDS_LEARN_MORE); |
| +} |
| + |
| +void PluginInfoBar::CommonLearnMore(WindowOpenDisposition disposition) { |
| + // TODO(bauerb): Navigate to a help page explaining why we disabled |
| + // or blocked the plugin, once we have one. |
| +} |
| + |
| + |
| +// BlockedPluginInfoBar ------------------------------------------------------- |
| + |
| +class BlockedPluginInfoBar : public PluginInfoBar { |
| + public: |
| + BlockedPluginInfoBar(TabContents* tab_contents, |
| + const string16& name); |
| + |
| + // ConfirmInfoBarDelegate: |
| + virtual string16 GetMessageText() const; |
| + virtual string16 GetButtonLabel(InfoBarButton button) const; |
| + virtual bool Accept(); |
| + virtual bool Cancel(); |
| + virtual void InfoBarClosed(); |
| + virtual bool LinkClicked(WindowOpenDisposition disposition); |
| + |
| + protected: |
| + virtual ~BlockedPluginInfoBar(); |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(BlockedPluginInfoBar); |
| +}; |
| + |
| +BlockedPluginInfoBar::BlockedPluginInfoBar(TabContents* tab_contents, |
| + const string16& name) |
| + : PluginInfoBar(tab_contents, name) { |
| + tab_contents->AddInfoBar(this); |
| + UserMetrics::RecordAction(UserMetricsAction("BlockedPluginInfobar.Shown")); |
| +} |
| + |
| +BlockedPluginInfoBar::~BlockedPluginInfoBar() { |
| +} |
| + |
| +string16 BlockedPluginInfoBar::GetMessageText() const { |
| + return l10n_util::GetStringFUTF16(IDS_PLUGIN_NOT_AUTHORIZED, name_); |
| +} |
| + |
| +string16 BlockedPluginInfoBar::GetButtonLabel(InfoBarButton button) const { |
| + return l10n_util::GetStringUTF16((button == BUTTON_OK) ? |
| + IDS_PLUGIN_ENABLE_ALWAYS : IDS_PLUGIN_ENABLE_TEMPORARILY); |
| +} |
| + |
| +bool BlockedPluginInfoBar::Accept() { |
| + UserMetrics::RecordAction( |
| + UserMetricsAction("BlockedPluginInfobar.AlwaysAllow")); |
| + tab_contents_->profile()->GetHostContentSettingsMap()->AddExceptionForURL( |
| + tab_contents_->GetURL(), CONTENT_SETTINGS_TYPE_PLUGINS, std::string(), |
| + CONTENT_SETTING_ALLOW); |
| + tab_contents_->render_view_host()->LoadBlockedPlugins(); |
| + return false; |
| +} |
| + |
| +bool BlockedPluginInfoBar::Cancel() { |
| + UserMetrics::RecordAction( |
| + UserMetricsAction("BlockedPluginInfobar.AllowThisTime")); |
| + CommonCancel(); |
| + return false; |
| +} |
| + |
| +void BlockedPluginInfoBar::InfoBarClosed() { |
| + UserMetrics::RecordAction(UserMetricsAction("BlockedPluginInfobar.Closed")); |
| + CommonClose(); |
| +} |
| + |
| +bool BlockedPluginInfoBar::LinkClicked(WindowOpenDisposition disposition) { |
| + UserMetrics::RecordAction( |
| + UserMetricsAction("BlockedPluginInfobar.LearnMore")); |
| + CommonLearnMore(disposition); |
| + return false; |
| +} |
| + |
| // OutdatedPluginInfoBar ------------------------------------------------------ |
| -class OutdatedPluginInfoBar : public ConfirmInfoBarDelegate { |
| +class OutdatedPluginInfoBar : public PluginInfoBar { |
| public: |
| OutdatedPluginInfoBar(TabContents* tab_contents, |
| const string16& name, |
| const GURL& update_url); |
| - private: |
| - virtual ~OutdatedPluginInfoBar(); |
| - |
| // ConfirmInfoBarDelegate: |
| - virtual void InfoBarClosed(); |
| - virtual SkBitmap* GetIcon() const; |
| virtual string16 GetMessageText() const; |
| - virtual int GetButtons() const; |
| virtual string16 GetButtonLabel(InfoBarButton button) const; |
| virtual bool Accept(); |
| virtual bool Cancel(); |
| - virtual string16 GetLinkText(); |
| + virtual void InfoBarClosed(); |
| virtual bool LinkClicked(WindowOpenDisposition disposition); |
| - TabContents* tab_contents_; |
| - string16 name_; |
| + protected: |
| + virtual ~OutdatedPluginInfoBar(); |
| + |
| + private: |
| GURL update_url_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBar); |
| }; |
| OutdatedPluginInfoBar::OutdatedPluginInfoBar(TabContents* tab_contents, |
| const string16& name, |
| const GURL& update_url) |
| - : ConfirmInfoBarDelegate(tab_contents), |
| - tab_contents_(tab_contents), |
| - name_(name), |
| - update_url_(update_url) { |
| + : PluginInfoBar(tab_contents, name), update_url_(update_url) { |
| + tab_contents->AddInfoBar(this); |
| UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Shown")); |
| - tab_contents->AddInfoBar(this); |
| } |
| OutdatedPluginInfoBar::~OutdatedPluginInfoBar() { |
| } |
| -void OutdatedPluginInfoBar::InfoBarClosed() { |
| - UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Closed")); |
| - delete this; |
| -} |
| - |
| -SkBitmap* OutdatedPluginInfoBar::GetIcon() const { |
| - return ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| - IDR_INFOBAR_PLUGIN_INSTALL); |
| -} |
| - |
| string16 OutdatedPluginInfoBar::GetMessageText() const { |
| return l10n_util::GetStringFUTF16(IDS_PLUGIN_OUTDATED_PROMPT, name_); |
| } |
| -int OutdatedPluginInfoBar::GetButtons() const { |
| - return BUTTON_OK | BUTTON_CANCEL; |
| -} |
| - |
| string16 OutdatedPluginInfoBar::GetButtonLabel(InfoBarButton button) const { |
| return l10n_util::GetStringUTF16((button == BUTTON_OK) ? |
| IDS_PLUGIN_UPDATE : IDS_PLUGIN_ENABLE_TEMPORARILY); |
| @@ -323,19 +440,19 @@ |
| bool OutdatedPluginInfoBar::Cancel() { |
| UserMetrics::RecordAction( |
| UserMetricsAction("OutdatedPluginInfobar.AllowThisTime")); |
| - tab_contents_->render_view_host()->LoadBlockedPlugins(); |
| + CommonCancel(); |
| return false; |
| } |
| -string16 OutdatedPluginInfoBar::GetLinkText() { |
| - return l10n_util::GetStringUTF16(IDS_LEARN_MORE); |
| +void OutdatedPluginInfoBar::InfoBarClosed() { |
| + UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Closed")); |
| + CommonClose(); |
| } |
| bool OutdatedPluginInfoBar::LinkClicked(WindowOpenDisposition disposition) { |
| UserMetrics::RecordAction( |
| UserMetricsAction("OutdatedPluginInfobar.LearnMore")); |
| - // TODO(bauerb): Navigate to a help page explaining why we disabled |
| - // the plugin, once we have one. |
| + CommonLearnMore(disposition); |
| return false; |
| } |
| @@ -2366,7 +2483,10 @@ |
| void TabContents::OnBlockedOutdatedPlugin(const string16& name, |
| const GURL& update_url) { |
| - new OutdatedPluginInfoBar(this, name, update_url); |
| + if (!update_url.is_empty()) |
| + new OutdatedPluginInfoBar(this, name, update_url); |
| + else |
| + new BlockedPluginInfoBar(this, name); |
| } |
| void TabContents::OnPageContents(const GURL& url, |