1// Copyright (c) 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/gtk/infobars/alternate_nav_infobar_gtk.h" 6 7#include "chrome/browser/ui/gtk/event_utils.h" 8#include "chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.h" 9 10 11// AlternateNavInfoBarDelegate ------------------------------------------------- 12 13InfoBar* AlternateNavInfoBarDelegate::CreateInfoBar(InfoBarService* owner) { 14 return new AlternateNavInfoBarGtk(owner, this); 15} 16 17 18// AlternateNavInfoBarGtk ------------------------------------------------------ 19 20AlternateNavInfoBarGtk::AlternateNavInfoBarGtk( 21 InfoBarService* owner, 22 AlternateNavInfoBarDelegate* delegate) 23 : InfoBarGtk(owner, delegate) { 24} 25 26AlternateNavInfoBarGtk::~AlternateNavInfoBarGtk() { 27} 28 29void AlternateNavInfoBarGtk::InitWidgets() { 30 InfoBarGtk::InitWidgets(); 31 32 size_t link_offset; 33 string16 display_text = GetDelegate()->GetMessageTextWithOffset(&link_offset); 34 string16 link_text = GetDelegate()->GetLinkText(); 35 AddLabelWithInlineLink(display_text, link_text, link_offset, 36 G_CALLBACK(OnLinkClickedThunk)); 37} 38 39AlternateNavInfoBarDelegate* AlternateNavInfoBarGtk::GetDelegate() { 40 return static_cast<AlternateNavInfoBarDelegate*>(delegate()); 41} 42 43void AlternateNavInfoBarGtk::OnLinkClicked(GtkWidget* button) { 44 if (GetDelegate()->LinkClicked( 45 event_utils::DispositionForCurrentButtonPressEvent())) 46 RemoveSelf(); 47} 48