Home | History | Annotate | Download | only in infobars
      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 
     13 InfoBar* AlternateNavInfoBarDelegate::CreateInfoBar(InfoBarService* owner) {
     14   return new AlternateNavInfoBarGtk(owner, this);
     15 }
     16 
     17 
     18 // AlternateNavInfoBarGtk ------------------------------------------------------
     19 
     20 AlternateNavInfoBarGtk::AlternateNavInfoBarGtk(
     21     InfoBarService* owner,
     22     AlternateNavInfoBarDelegate* delegate)
     23     : InfoBarGtk(owner, delegate) {
     24 }
     25 
     26 AlternateNavInfoBarGtk::~AlternateNavInfoBarGtk() {
     27 }
     28 
     29 void 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 
     39 AlternateNavInfoBarDelegate* AlternateNavInfoBarGtk::GetDelegate() {
     40   return static_cast<AlternateNavInfoBarDelegate*>(delegate());
     41 }
     42 
     43 void AlternateNavInfoBarGtk::OnLinkClicked(GtkWidget* button) {
     44   if (GetDelegate()->LinkClicked(
     45         event_utils::DispositionForCurrentButtonPressEvent()))
     46     RemoveSelf();
     47 }
     48