summaryrefslogtreecommitdiffstats
path: root/chrome/browser/tab_contents/infobar_delegate.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/tab_contents/infobar_delegate.cc')
-rw-r--r--chrome/browser/tab_contents/infobar_delegate.cc93
1 files changed, 93 insertions, 0 deletions
diff --git a/chrome/browser/tab_contents/infobar_delegate.cc b/chrome/browser/tab_contents/infobar_delegate.cc
new file mode 100644
index 0000000..eaeb013
--- /dev/null
+++ b/chrome/browser/tab_contents/infobar_delegate.cc
@@ -0,0 +1,93 @@
+// Copyright (c) 2006-2008 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/tab_contents/infobar_delegate.h"
+
+#include "base/logging.h"
+#include "chrome/browser/tab_contents/navigation_entry.h"
+#include "chrome/browser/tab_contents/navigation_controller.h"
+#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/common/l10n_util.h"
+
+#include "generated_resources.h"
+
+// InfoBarDelegate: ------------------------------------------------------------
+
+bool InfoBarDelegate::ShouldExpire(
+ const NavigationController::LoadCommittedDetails& details) const {
+ bool is_reload =
+ PageTransition::StripQualifier(details.entry->transition_type()) ==
+ PageTransition::RELOAD;
+ return is_reload || (contents_unique_id_ != details.entry->unique_id());
+}
+
+InfoBarDelegate::InfoBarDelegate(TabContents* contents)
+ : contents_unique_id_(0) {
+ if (contents)
+ StoreActiveEntryUniqueID(contents);
+}
+
+void InfoBarDelegate::StoreActiveEntryUniqueID(TabContents* contents) {
+ NavigationEntry* active_entry = contents->controller()->GetActiveEntry();
+ contents_unique_id_ = active_entry ? active_entry->unique_id() : 0;
+}
+
+// AlertInfoBarDelegate: -------------------------------------------------------
+
+bool AlertInfoBarDelegate::EqualsDelegate(InfoBarDelegate* delegate) const {
+ AlertInfoBarDelegate* alert_delegate = delegate->AsAlertInfoBarDelegate();
+ if (!alert_delegate)
+ return false;
+
+ return alert_delegate->GetMessageText() == GetMessageText();
+}
+
+AlertInfoBarDelegate::AlertInfoBarDelegate(TabContents* contents)
+ : InfoBarDelegate(contents) {
+}
+
+// LinkInfoBarDelegate: --------------------------------------------------------
+
+LinkInfoBarDelegate::LinkInfoBarDelegate(TabContents* contents)
+ : InfoBarDelegate(contents) {
+}
+
+// ConfirmInfoBarDelegate: -----------------------------------------------------
+
+std::wstring ConfirmInfoBarDelegate::GetButtonLabel(
+ InfoBarButton button) const {
+ if (button == BUTTON_OK)
+ return l10n_util::GetString(IDS_OK);
+ if (button == BUTTON_CANCEL)
+ return l10n_util::GetString(IDS_CANCEL);
+ NOTREACHED();
+ return std::wstring();
+}
+
+ConfirmInfoBarDelegate::ConfirmInfoBarDelegate(TabContents* contents)
+ : AlertInfoBarDelegate(contents) {
+}
+
+// SimpleAlertInfoBarDelegate: -------------------------------------------------
+
+SimpleAlertInfoBarDelegate::SimpleAlertInfoBarDelegate(
+ TabContents* contents,
+ const std::wstring& message,
+ SkBitmap* icon)
+ : AlertInfoBarDelegate(contents),
+ message_(message),
+ icon_(icon) {
+}
+
+std::wstring SimpleAlertInfoBarDelegate::GetMessageText() const {
+ return message_;
+}
+
+SkBitmap* SimpleAlertInfoBarDelegate::GetIcon() const {
+ return icon_;
+}
+
+void SimpleAlertInfoBarDelegate::InfoBarClosed() {
+ delete this;
+}