1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.h" 6 7 #include "base/strings/utf_string_conversions.h" 8 #include "chrome/browser/infobars/infobar_service.h" 9 #include "content/public/browser/web_contents.h" 10 #include "grit/generated_resources.h" 11 #include "grit/theme_resources.h" 12 #include "ui/base/l10n/l10n_util.h" 13 14 15 // static 16 void AlternateNavInfoBarDelegate::Create(InfoBarService* infobar_service, 17 const GURL& alternate_nav_url) { 18 infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>( 19 new AlternateNavInfoBarDelegate(infobar_service, alternate_nav_url))); 20 } 21 22 AlternateNavInfoBarDelegate::AlternateNavInfoBarDelegate( 23 InfoBarService* owner, 24 const GURL& alternate_nav_url) 25 : InfoBarDelegate(owner), 26 alternate_nav_url_(alternate_nav_url) { 27 } 28 29 AlternateNavInfoBarDelegate::~AlternateNavInfoBarDelegate() { 30 } 31 32 string16 AlternateNavInfoBarDelegate::GetMessageTextWithOffset( 33 size_t* link_offset) const { 34 const string16 label = l10n_util::GetStringFUTF16( 35 IDS_ALTERNATE_NAV_URL_VIEW_LABEL, string16(), link_offset); 36 return label; 37 } 38 39 string16 AlternateNavInfoBarDelegate::GetLinkText() const { 40 return UTF8ToUTF16(alternate_nav_url_.spec()); 41 } 42 43 bool AlternateNavInfoBarDelegate::LinkClicked( 44 WindowOpenDisposition disposition) { 45 // Pretend the user typed this URL, so that navigating to it will be the 46 // default action when it's typed again in the future. 47 web_contents()->OpenURL(content::OpenURLParams( 48 alternate_nav_url_, content::Referrer(), disposition, 49 content::PAGE_TRANSITION_TYPED, false)); 50 51 // We should always close, even if the navigation did not occur within this 52 // WebContents. 53 return true; 54 } 55 56 int AlternateNavInfoBarDelegate::GetIconID() const { 57 return IDR_INFOBAR_ALT_NAV_URL; 58 } 59 60 InfoBarDelegate::Type AlternateNavInfoBarDelegate::GetInfoBarType() const { 61 return PAGE_ACTION_TYPE; 62 } 63