1// Copyright 2014 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/content_settings/permission_infobar_delegate.h"
6
7#include "chrome/browser/content_settings/permission_context_uma_util.h"
8#include "chrome/browser/content_settings/permission_queue_controller.h"
9#include "chrome/grit/generated_resources.h"
10#include "components/infobars/core/infobar.h"
11#include "ui/base/l10n/l10n_util.h"
12
13PermissionInfobarDelegate::~PermissionInfobarDelegate() {
14  if (!action_taken_)
15    PermissionContextUmaUtil::PermissionIgnored(type_);
16}
17
18PermissionInfobarDelegate::PermissionInfobarDelegate(
19    PermissionQueueController* controller,
20    const PermissionRequestID& id,
21    const GURL& requesting_origin,
22    ContentSettingsType type)
23    : controller_(controller), id_(id), requesting_origin_(requesting_origin),
24      action_taken_(false),
25      type_(type) {
26}
27
28void PermissionInfobarDelegate::InfoBarDismissed() {
29  SetPermission(false, false);
30}
31
32infobars::InfoBarDelegate::Type
33PermissionInfobarDelegate::GetInfoBarType() const {
34  return PAGE_ACTION_TYPE;
35}
36
37base::string16 PermissionInfobarDelegate::GetButtonLabel(
38    InfoBarButton button) const {
39  return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
40      IDS_PERMISSION_ALLOW : IDS_PERMISSION_DENY);
41}
42
43bool PermissionInfobarDelegate::Accept() {
44  SetPermission(true, true);
45  return true;
46}
47
48bool PermissionInfobarDelegate::Cancel() {
49  SetPermission(true, false);
50  return true;
51}
52
53void PermissionInfobarDelegate::SetPermission(bool update_content_setting,
54                                              bool allowed) {
55  action_taken_ = true;
56  controller_->OnPermissionSet(
57      id_, requesting_origin_,
58      InfoBarService::WebContentsFromInfoBar(
59          infobar())->GetLastCommittedURL().GetOrigin(),
60      update_content_setting, allowed);
61}
62