1 // Copyright (c) 2012 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/ui/website_settings/permission_menu_model.h"
7 #include "chrome/grit/generated_resources.h"
8 #include "ui/base/l10n/l10n_util.h"
10 PermissionMenuModel::PermissionMenuModel(
12 const WebsiteSettingsUI::PermissionInfo
& info
,
13 const ChangeCallback
& callback
)
14 : ui::SimpleMenuModel(this), permission_(info
), callback_(callback
) {
15 DCHECK(!callback_
.is_null());
17 switch (permission_
.default_setting
) {
18 case CONTENT_SETTING_ALLOW
:
19 label
= l10n_util::GetStringUTF16(
20 IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_ALLOW
);
22 case CONTENT_SETTING_BLOCK
:
23 label
= l10n_util::GetStringUTF16(
24 IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_BLOCK
);
26 case CONTENT_SETTING_ASK
:
27 label
= l10n_util::GetStringUTF16(
28 IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_ASK
);
30 case CONTENT_SETTING_NUM_SETTINGS
:
35 AddCheckItem(CONTENT_SETTING_DEFAULT
, label
);
37 // Media only support CONTENTE_SETTTING_ALLOW for https.
38 if (permission_
.type
!= CONTENT_SETTINGS_TYPE_MEDIASTREAM
||
39 url
.SchemeIsSecure()) {
40 label
= l10n_util::GetStringUTF16(
41 IDS_WEBSITE_SETTINGS_MENU_ITEM_ALLOW
);
42 AddCheckItem(CONTENT_SETTING_ALLOW
, label
);
45 if (permission_
.type
!= CONTENT_SETTINGS_TYPE_FULLSCREEN
) {
46 label
= l10n_util::GetStringUTF16(
47 IDS_WEBSITE_SETTINGS_MENU_ITEM_BLOCK
);
48 AddCheckItem(CONTENT_SETTING_BLOCK
, label
);
52 PermissionMenuModel::PermissionMenuModel(const GURL
& url
,
53 ContentSetting setting
,
54 const ChangeCallback
& callback
)
55 : ui::SimpleMenuModel(this), callback_(callback
) {
56 DCHECK(setting
== CONTENT_SETTING_ALLOW
|| setting
== CONTENT_SETTING_BLOCK
);
57 permission_
.type
= CONTENT_SETTINGS_TYPE_DEFAULT
;
58 permission_
.setting
= setting
;
59 permission_
.default_setting
= CONTENT_SETTING_NUM_SETTINGS
;
60 AddCheckItem(CONTENT_SETTING_ALLOW
,
61 l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW
));
62 AddCheckItem(CONTENT_SETTING_BLOCK
,
63 l10n_util::GetStringUTF16(IDS_PERMISSION_DENY
));
66 PermissionMenuModel::~PermissionMenuModel() {}
68 bool PermissionMenuModel::IsCommandIdChecked(int command_id
) const {
69 return permission_
.setting
== command_id
;
72 bool PermissionMenuModel::IsCommandIdEnabled(int command_id
) const {
76 bool PermissionMenuModel::GetAcceleratorForCommandId(
78 ui::Accelerator
* accelerator
) {
79 // Accelerators are not supported.
83 void PermissionMenuModel::ExecuteCommand(int command_id
, int event_flags
) {
84 permission_
.setting
= static_cast<ContentSetting
>(command_id
);
85 callback_
.Run(permission_
);