1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/gtk/infobars/link_infobar_gtk.h" 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/tab_contents/link_infobar_delegate.h" 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/gtk/gtk_util.h" 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// LinkInfoBarDelegate --------------------------------------------------------- 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 12dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenInfoBar* LinkInfoBarDelegate::CreateInfoBar() { 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return new LinkInfoBarGtk(this); 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// LinkInfoBarGtk -------------------------------------------------------------- 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 18dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenLinkInfoBarGtk::LinkInfoBarGtk(LinkInfoBarDelegate* delegate) 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen : InfoBar(delegate) { 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen size_t link_offset; 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen string16 display_text = delegate->GetMessageTextWithOffset(&link_offset); 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen string16 link_text = delegate->GetLinkText(); 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen AddLabelWithInlineLink(display_text, link_text, link_offset, 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen G_CALLBACK(OnLinkClickedThunk)); 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 27dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenLinkInfoBarGtk::~LinkInfoBarGtk() { 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid LinkInfoBarGtk::OnLinkClicked(GtkWidget* button) { 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen if (GetDelegate()->LinkClicked( 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen gtk_util::DispositionForCurrentButtonPressEvent())) { 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen RemoveInfoBar(); 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 37dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenLinkInfoBarDelegate* LinkInfoBarGtk::GetDelegate() { 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen return delegate_->AsLinkInfoBarDelegate(); 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 40