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