Chromium Code Reviews| Index: chrome/browser/tab_contents/tab_contents.cc |
| =================================================================== |
| --- chrome/browser/tab_contents/tab_contents.cc (revision 72249) |
| +++ chrome/browser/tab_contents/tab_contents.cc (working copy) |
| @@ -248,97 +248,185 @@ |
| params->request_time = base::Time::Now(); |
| } |
| +// PluginInfoBar -------------------------------------------------------------- |
| -// OutdatedPluginInfoBar ------------------------------------------------------ |
| - |
| -class OutdatedPluginInfoBar : public ConfirmInfoBarDelegate { |
| +class PluginInfoBar : public ConfirmInfoBarDelegate { |
| public: |
| - OutdatedPluginInfoBar(TabContents* tab_contents, |
| - const string16& name, |
| - const GURL& update_url); |
| + PluginInfoBar(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 GetMessageText() const = 0; |
| + virtual int GetButtons() const = 0; |
| virtual string16 GetButtonLabel(InfoBarButton button) const; |
| virtual bool Accept(); |
| virtual bool Cancel(); |
| virtual string16 GetLinkText(); |
| virtual bool LinkClicked(WindowOpenDisposition disposition); |
| + protected: |
| + virtual ~PluginInfoBar(); |
| + |
| + string16 name_; |
| + |
| + private: |
| + virtual void RecordMetric(const std::string& action) const = 0; |
| + |
| TabContents* tab_contents_; |
| - string16 name_; |
| GURL update_url_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(PluginInfoBar); |
| }; |
| -OutdatedPluginInfoBar::OutdatedPluginInfoBar(TabContents* tab_contents, |
| - const string16& name, |
| - const GURL& update_url) |
| +PluginInfoBar::PluginInfoBar(TabContents* tab_contents, |
| + const string16& name, |
| + const GURL& update_url) |
| : ConfirmInfoBarDelegate(tab_contents), |
| + name_(name), |
| tab_contents_(tab_contents), |
| - name_(name), |
| update_url_(update_url) { |
| - UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Shown")); |
| - tab_contents->AddInfoBar(this); |
| } |
| -OutdatedPluginInfoBar::~OutdatedPluginInfoBar() { |
| +PluginInfoBar::~PluginInfoBar() { |
| } |
| -void OutdatedPluginInfoBar::InfoBarClosed() { |
| - UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Closed")); |
| +void PluginInfoBar::InfoBarClosed() { |
| + RecordMetric("Closed"); |
| delete this; |
| } |
| -SkBitmap* OutdatedPluginInfoBar::GetIcon() const { |
| +SkBitmap* PluginInfoBar::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 { |
| +string16 PluginInfoBar::GetButtonLabel(InfoBarButton button) const { |
| return l10n_util::GetStringUTF16((button == BUTTON_OK) ? |
| IDS_PLUGIN_UPDATE : IDS_PLUGIN_ENABLE_TEMPORARILY); |
| } |
| -bool OutdatedPluginInfoBar::Accept() { |
| - UserMetrics::RecordAction(UserMetricsAction("OutdatedPluginInfobar.Update")); |
| +bool PluginInfoBar::Accept() { |
| + RecordMetric("Update"); |
| tab_contents_->OpenURL(update_url_, GURL(), NEW_FOREGROUND_TAB, |
| PageTransition::LINK); |
| return false; |
| } |
| -bool OutdatedPluginInfoBar::Cancel() { |
| - UserMetrics::RecordAction( |
| - UserMetricsAction("OutdatedPluginInfobar.AllowThisTime")); |
| +bool PluginInfoBar::Cancel() { |
| + RecordMetric("AllowThisTime"); |
| tab_contents_->render_view_host()->LoadBlockedPlugins(); |
| return false; |
| } |
| -string16 OutdatedPluginInfoBar::GetLinkText() { |
| +string16 PluginInfoBar::GetLinkText() { |
| return l10n_util::GetStringUTF16(IDS_LEARN_MORE); |
| } |
| -bool OutdatedPluginInfoBar::LinkClicked(WindowOpenDisposition disposition) { |
| - UserMetrics::RecordAction( |
| - UserMetricsAction("OutdatedPluginInfobar.LearnMore")); |
| +bool PluginInfoBar::LinkClicked(WindowOpenDisposition disposition) { |
| + RecordMetric("LearnMore"); |
| // TODO(bauerb): Navigate to a help page explaining why we disabled |
| - // the plugin, once we have one. |
| + // or blocked the plugin, once we have one. |
| return false; |
| } |
| + |
| +// BlockedPluginInfoBar ------------------------------------------------------- |
| + |
| +class BlockedPluginInfoBar : public PluginInfoBar { |
| + public: |
| + BlockedPluginInfoBar(TabContents* tab_contents, |
| + const string16& name); |
| + |
| + // ConfirmInfoBarDelegate: |
| + virtual string16 GetMessageText() const; |
| + virtual int GetButtons() const; |
| + |
| + protected: |
| + virtual ~BlockedPluginInfoBar(); |
| + |
| + private: |
| + // PluginInfoBar: |
| + virtual void RecordMetric(const std::string& action) const; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(BlockedPluginInfoBar); |
| +}; |
| + |
| +BlockedPluginInfoBar::BlockedPluginInfoBar(TabContents* tab_contents, |
| + const string16& name) |
| + : PluginInfoBar(tab_contents, name, GURL()) { |
| + tab_contents->AddInfoBar(this); |
| + RecordMetric("Shown"); |
| +} |
| + |
| +BlockedPluginInfoBar::~BlockedPluginInfoBar() { |
| +} |
| + |
| +string16 BlockedPluginInfoBar::GetMessageText() const { |
| + return l10n_util::GetStringFUTF16(IDS_PLUGIN_NOT_AUTHORIZED, name_); |
| +} |
| + |
| +int BlockedPluginInfoBar::GetButtons() const { |
| + return BUTTON_CANCEL; |
| +} |
| + |
| +void BlockedPluginInfoBar::RecordMetric(const std::string& action) const { |
| + std::string uma("BlockedPluginInfobar"); |
| + uma += UTF16ToASCII(name_); |
| + uma += "."; |
| + uma += action; |
| + UserMetrics::RecordAction(UserMetricsAction(uma.c_str())); |
|
Bernhard Bauer
2011/01/24 12:56:33
The problem with this is if you don't use a string
|
| +} |
| + |
| +// OutdatedPluginInfoBar ------------------------------------------------------ |
| + |
| +class OutdatedPluginInfoBar : public PluginInfoBar { |
| + public: |
| + OutdatedPluginInfoBar(TabContents* tab_contents, |
| + const string16& name, |
| + const GURL& update_url); |
| + |
| + // ConfirmInfoBarDelegate: |
| + virtual string16 GetMessageText() const; |
| + virtual int GetButtons() const; |
| + |
| + protected: |
| + virtual ~OutdatedPluginInfoBar(); |
| + |
| + private: |
| + // PluginInfoBar: |
| + virtual void RecordMetric(const std::string& action) const; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBar); |
| +}; |
| + |
| +OutdatedPluginInfoBar::OutdatedPluginInfoBar(TabContents* tab_contents, |
| + const string16& name, |
| + const GURL& update_url) |
| + : PluginInfoBar(tab_contents, name, update_url) { |
| + tab_contents->AddInfoBar(this); |
| + RecordMetric("Shown"); |
| +} |
| + |
| +OutdatedPluginInfoBar::~OutdatedPluginInfoBar() { |
| +} |
| + |
| +string16 OutdatedPluginInfoBar::GetMessageText() const { |
| + return l10n_util::GetStringFUTF16(IDS_PLUGIN_OUTDATED_PROMPT, name_); |
| +} |
| + |
| +int OutdatedPluginInfoBar::GetButtons() const { |
| + return BUTTON_OK | BUTTON_CANCEL; |
| +} |
| + |
| +void OutdatedPluginInfoBar::RecordMetric(const std::string& action) const { |
| + std::string uma("OutdatedPluginInfobar."); |
| + uma += action; |
| + UserMetrics::RecordAction(UserMetricsAction(uma.c_str())); |
| +} |
| + |
| } // namespace |
| @@ -2350,7 +2438,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, |