download_request_infobar_delegate.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2009 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/download/download_request_infobar_delegate.h"
6
7#include "app/l10n_util.h"
8#include "app/resource_bundle.h"
9#include "chrome/browser/tab_contents/tab_contents.h"
10#include "grit/generated_resources.h"
11#include "grit/theme_resources.h"
12
13DownloadRequestInfoBarDelegate::DownloadRequestInfoBarDelegate(TabContents* tab,
14    DownloadRequestLimiter::TabDownloadState* host)
15    : ConfirmInfoBarDelegate(tab),
16      host_(host) {
17  if (tab)
18    tab->AddInfoBar(this);
19}
20
21DownloadRequestInfoBarDelegate::~DownloadRequestInfoBarDelegate() {
22}
23
24void DownloadRequestInfoBarDelegate::InfoBarClosed() {
25  Cancel();
26  // This will delete us.
27  ConfirmInfoBarDelegate::InfoBarClosed();
28}
29
30std::wstring DownloadRequestInfoBarDelegate::GetMessageText() const {
31  return l10n_util::GetString(IDS_MULTI_DOWNLOAD_WARNING);
32}
33
34SkBitmap* DownloadRequestInfoBarDelegate::GetIcon() const {
35  return ResourceBundle::GetSharedInstance().GetBitmapNamed(
36      IDR_INFOBAR_MULTIPLE_DOWNLOADS);
37}
38
39int DownloadRequestInfoBarDelegate::GetButtons() const {
40  return BUTTON_OK | BUTTON_CANCEL;
41}
42
43std::wstring DownloadRequestInfoBarDelegate::GetButtonLabel(
44    ConfirmInfoBarDelegate::InfoBarButton button) const {
45  if (button == BUTTON_OK)
46    return l10n_util::GetString(IDS_MULTI_DOWNLOAD_WARNING_ALLOW);
47  else
48    return l10n_util::GetString(IDS_MULTI_DOWNLOAD_WARNING_DENY);
49}
50
51bool DownloadRequestInfoBarDelegate::Accept() {
52  if (host_) {
53    // Accept() call will nullify host_ if no further prompts are required.
54    host_->Accept();
55  }
56
57  return !host_;
58}
59
60bool DownloadRequestInfoBarDelegate::Cancel() {
61  if (host_) {
62    host_->Cancel();
63    host_ = NULL;
64  }
65  return true;
66}
67