Home | History | Annotate | Download | only in infobars
      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