// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/gtk/infobars/link_infobar_gtk.h"
#include "chrome/browser/tab_contents/link_infobar_delegate.h"
#include "chrome/browser/ui/gtk/gtk_util.h"
// LinkInfoBarDelegate ---------------------------------------------------------
InfoBar* LinkInfoBarDelegate::CreateInfoBar() {
return new LinkInfoBarGtk(this);
}
// LinkInfoBarGtk --------------------------------------------------------------
LinkInfoBarGtk::LinkInfoBarGtk(LinkInfoBarDelegate* delegate)
: InfoBar(delegate) {
size_t link_offset;
string16 display_text = delegate->GetMessageTextWithOffset(&link_offset);
string16 link_text = delegate->GetLinkText();
AddLabelWithInlineLink(display_text, link_text, link_offset,
G_CALLBACK(OnLinkClickedThunk));
}
LinkInfoBarGtk::~LinkInfoBarGtk() {
}
void LinkInfoBarGtk::OnLinkClicked(GtkWidget* button) {
if (GetDelegate()->LinkClicked(
gtk_util::DispositionForCurrentButtonPressEvent())) {
RemoveInfoBar();
}
}
LinkInfoBarDelegate* LinkInfoBarGtk::GetDelegate() {
return delegate_->AsLinkInfoBarDelegate();
}