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