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.
5 #include "chrome/browser/content_settings/permission_infobar_delegate.h"
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"
13 PermissionInfobarDelegate::~PermissionInfobarDelegate() {
15 PermissionContextUmaUtil::PermissionIgnored(type_
, requesting_origin_
);
18 PermissionInfobarDelegate::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
),
28 infobars::InfoBarDelegate::Type
29 PermissionInfobarDelegate::GetInfoBarType() const {
30 return PAGE_ACTION_TYPE
;
33 void PermissionInfobarDelegate::InfoBarDismissed() {
34 SetPermission(false, false);
37 base::string16
PermissionInfobarDelegate::GetButtonLabel(
38 InfoBarButton button
) const {
39 return l10n_util::GetStringUTF16((button
== BUTTON_OK
) ?
40 IDS_PERMISSION_ALLOW
: IDS_PERMISSION_DENY
);
43 bool PermissionInfobarDelegate::Accept() {
44 SetPermission(true, true);
48 bool PermissionInfobarDelegate::Cancel() {
49 SetPermission(true, false);
53 void PermissionInfobarDelegate::SetPermission(bool update_content_setting
,
56 controller_
->OnPermissionSet(
57 id_
, requesting_origin_
,
58 InfoBarService::WebContentsFromInfoBar(
59 infobar())->GetLastCommittedURL().GetOrigin(),
60 update_content_setting
, allowed
);