diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-19 18:55:05 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-19 18:55:05 +0000 |
commit | 0d1479b4011662615776f74a0611e9a77b9faa9a (patch) | |
tree | 39842627b510d1c5e4a70895b02629e58433d009 | |
parent | 040164c3a3bf6503963082e43b8b986e3c554a98 (diff) | |
download | chromium_src-0d1479b4011662615776f74a0611e9a77b9faa9a.zip chromium_src-0d1479b4011662615776f74a0611e9a77b9faa9a.tar.gz chromium_src-0d1479b4011662615776f74a0611e9a77b9faa9a.tar.bz2 |
Refactor the "Learn more" DNS infobar shown on startup
It now displays a link instead of a button for the "Learn more" action.
I intend to reuse this for the "Your OS is obsolete" infobar.
BUG=79401
Review URL: http://codereview.chromium.org/7047012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85946 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/browser_init.cc | 69 |
1 files changed, 37 insertions, 32 deletions
diff --git a/chrome/browser/ui/browser_init.cc b/chrome/browser/ui/browser_init.cc index d825838..a3b3c40 100644 --- a/chrome/browser/ui/browser_init.cc +++ b/chrome/browser/ui/browser_init.cc @@ -43,7 +43,7 @@ #include "chrome/browser/sessions/session_service.h" #include "chrome/browser/sessions/session_service_factory.h" #include "chrome/browser/shell_integration.h" -#include "chrome/browser/tab_contents/confirm_infobar_delegate.h" +#include "chrome/browser/tab_contents/link_infobar_delegate.h" #include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h" #include "chrome/browser/tabs/pinned_tab_codec.h" #include "chrome/browser/tabs/tab_strip_model.h" @@ -1074,64 +1074,69 @@ void BrowserInit::LaunchWithProfile::AddBadFlagsInfoBarIfNecessary( } } -class DNSCertProvenanceCheckingInfoBar : public ConfirmInfoBarDelegate { +class LearnMoreInfoBar : public LinkInfoBarDelegate { public: - explicit DNSCertProvenanceCheckingInfoBar(TabContents* tab_contents); - virtual ~DNSCertProvenanceCheckingInfoBar(); + explicit LearnMoreInfoBar(TabContents* tab_contents, + const string16& message, + const GURL& url); + virtual ~LearnMoreInfoBar(); - virtual string16 GetMessageText() const OVERRIDE; - virtual int GetButtons() const OVERRIDE; - virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; - virtual bool Accept() OVERRIDE; + virtual string16 GetMessageTextWithOffset(size_t* link_offset) const OVERRIDE; + virtual string16 GetLinkText() const OVERRIDE; + virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; private: - static const char kLearnMoreURL[]; TabContents* const tab_contents_; + string16 message_; + GURL learn_more_url_; - DISALLOW_COPY_AND_ASSIGN(DNSCertProvenanceCheckingInfoBar); + DISALLOW_COPY_AND_ASSIGN(LearnMoreInfoBar); }; -DNSCertProvenanceCheckingInfoBar::DNSCertProvenanceCheckingInfoBar( - TabContents* tab_contents) - : ConfirmInfoBarDelegate(tab_contents), - tab_contents_(tab_contents) { +LearnMoreInfoBar::LearnMoreInfoBar(TabContents* tab_contents, + const string16& message, + const GURL& url) + : LinkInfoBarDelegate(tab_contents), + tab_contents_(tab_contents), + message_(message), + learn_more_url_(url) { } -DNSCertProvenanceCheckingInfoBar::~DNSCertProvenanceCheckingInfoBar() { +LearnMoreInfoBar::~LearnMoreInfoBar() { } -string16 DNSCertProvenanceCheckingInfoBar::GetMessageText() const { - return l10n_util::GetStringUTF16( - IDS_DNS_CERT_PROVENANCE_CHECKING_WARNING_MESSAGE); +string16 LearnMoreInfoBar::GetMessageTextWithOffset(size_t* link_offset) const { + string16 text = message_; + text.push_back(' '); // Add a space before the following link. + *link_offset = text.size(); + return text; } -int DNSCertProvenanceCheckingInfoBar::GetButtons() const { - return BUTTON_OK; -} - -string16 DNSCertProvenanceCheckingInfoBar::GetButtonLabel( - InfoBarButton button) const { +string16 LearnMoreInfoBar::GetLinkText() const { return l10n_util::GetStringUTF16(IDS_LEARN_MORE); } -bool DNSCertProvenanceCheckingInfoBar::Accept() { - tab_contents_->OpenURL(GURL(kLearnMoreURL), GURL(), NEW_FOREGROUND_TAB, - PageTransition::AUTO_BOOKMARK); - return true; +bool LearnMoreInfoBar::LinkClicked(WindowOpenDisposition disposition) { + tab_contents_->OpenURL(learn_more_url_, GURL(), disposition, + PageTransition::LINK); + return false; } // This is the page which provides information on DNS certificate provenance // checking. -const char DNSCertProvenanceCheckingInfoBar::kLearnMoreURL[] = - "http://dev.chromium.org/dnscertprovenancechecking"; - void BrowserInit::LaunchWithProfile:: AddDNSCertProvenanceCheckingWarningInfoBarIfNecessary( TabContentsWrapper* tab) { if (!command_line_.HasSwitch(switches::kEnableDNSCertProvenanceChecking)) return; - tab->AddInfoBar(new DNSCertProvenanceCheckingInfoBar(tab->tab_contents())); + const char* kLearnMoreURL = + "http://dev.chromium.org/dnscertprovenancechecking"; + string16 message = l10n_util::GetStringUTF16( + IDS_DNS_CERT_PROVENANCE_CHECKING_WARNING_MESSAGE); + tab->AddInfoBar(new LearnMoreInfoBar(tab->tab_contents(), + message, + GURL(kLearnMoreURL))); } void BrowserInit::LaunchWithProfile::AddStartupURLs( |