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 12InfoBar* LinkInfoBarDelegate::CreateInfoBar() { 13 return new LinkInfoBarGtk(this); 14} 15 16// LinkInfoBarGtk -------------------------------------------------------------- 17 18LinkInfoBarGtk::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 27LinkInfoBarGtk::~LinkInfoBarGtk() { 28} 29 30void LinkInfoBarGtk::OnLinkClicked(GtkWidget* button) { 31 if (GetDelegate()->LinkClicked( 32 gtk_util::DispositionForCurrentButtonPressEvent())) { 33 RemoveInfoBar(); 34 } 35} 36 37LinkInfoBarDelegate* LinkInfoBarGtk::GetDelegate() { 38 return delegate_->AsLinkInfoBarDelegate(); 39} 40