1 // Copyright (c) 2011 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/gtk/infobars/link_infobar_gtk.h" 6 7 #include "chrome/browser/tab_contents/link_infobar_delegate.h" 8 #include "chrome/browser/ui/gtk/gtk_util.h" 9 10 // LinkInfoBarDelegate --------------------------------------------------------- 11 12 InfoBar* LinkInfoBarDelegate::CreateInfoBar() { 13 return new LinkInfoBarGtk(this); 14 } 15 16 // LinkInfoBarGtk -------------------------------------------------------------- 17 18 LinkInfoBarGtk::LinkInfoBarGtk(LinkInfoBarDelegate* delegate) 19 : InfoBar(delegate) { 20 size_t link_offset; 21 string16 display_text = delegate->GetMessageTextWithOffset(&link_offset); 22 string16 link_text = delegate->GetLinkText(); 23 AddLabelWithInlineLink(display_text, link_text, link_offset, 24 G_CALLBACK(OnLinkClickedThunk)); 25 } 26 27 LinkInfoBarGtk::~LinkInfoBarGtk() { 28 } 29 30 void LinkInfoBarGtk::OnLinkClicked(GtkWidget* button) { 31 if (GetDelegate()->LinkClicked( 32 gtk_util::DispositionForCurrentButtonPressEvent())) { 33 RemoveInfoBar(); 34 } 35 } 36 37 LinkInfoBarDelegate* LinkInfoBarGtk::GetDelegate() { 38 return delegate_->AsLinkInfoBarDelegate(); 39 } 40