Chromium Code Reviews| Index: chrome/browser/ui/views/website_settings/permission_selector_row.cc |
| diff --git a/chrome/browser/ui/views/website_settings/permission_selector_row.cc b/chrome/browser/ui/views/website_settings/permission_selector_row.cc |
| index 6554daec10b2769623e71d0723b3d44fcfe9f88c..d45c09918023314e7886c6ee84ba56a078b433be 100644 |
| --- a/chrome/browser/ui/views/website_settings/permission_selector_row.cc |
| +++ b/chrome/browser/ui/views/website_settings/permission_selector_row.cc |
| @@ -7,11 +7,15 @@ |
| #include "base/i18n/rtl.h" |
| #include "base/macros.h" |
| #include "base/strings/utf_string_conversions.h" |
| +#include "chrome/browser/permissions/permission_manager.h" |
| +#include "chrome/browser/permissions/permission_result.h" |
| +#include "chrome/browser/permissions/permission_util.h" |
| #include "chrome/browser/ui/views/website_settings/non_accessible_image_view.h" |
| #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h" |
| #include "chrome/browser/ui/website_settings/permission_menu_model.h" |
| #include "chrome/browser/ui/website_settings/website_settings_ui.h" |
| #include "chrome/grit/generated_resources.h" |
| +#include "content/public/browser/permission_type.h" |
| #include "ui/accessibility/ax_node_data.h" |
| #include "ui/base/material_design/material_design_controller.h" |
| #include "ui/base/models/combobox_model.h" |
| @@ -279,10 +283,24 @@ PermissionSelectorRow::PermissionSelectorRow( |
| bool use_real_combobox = |
| ui::MaterialDesignController::IsSecondaryUiMaterial(); |
| #endif |
| + |
| + bool user_editable = |
| + permission.source == content_settings::SettingSource::SETTING_SOURCE_USER; |
| + // Permissions blocked under the kill switch shouldn't be editable. |
| + content::PermissionType unused = content::PermissionType::NUM; |
| + if (permission.setting == CONTENT_SETTING_BLOCK && |
| + PermissionUtil::GetPermissionType(permission.type, &unused)) { |
| + PermissionResult permission_result = |
| + PermissionManager::Get(profile_)->GetPermissionStatus(permission.type, |
| + url, url); |
| + if (permission_result.source == PermissionStatusSource::KILL_SWITCH) |
| + user_editable = false; |
| + } |
|
raymes
2017/03/06 03:55:05
Hmm, this will make the box uneditable if the user
Patti Lor
2017/03/06 06:47:54
Hm, I had assumed that there would never be a perm
raymes
2017/03/06 23:06:52
Let's chat more about this offline to figure out t
Patti Lor
2017/03/07 06:31:28
OK!
|
| + |
| if (use_real_combobox) |
| - InitializeComboboxView(layout, permission); |
| + InitializeComboboxView(layout, permission, user_editable); |
| else |
| - InitializeMenuButtonView(layout, permission); |
| + InitializeMenuButtonView(layout, permission, user_editable); |
| } |
| void PermissionSelectorRow::AddObserver( |
| @@ -311,9 +329,8 @@ PermissionSelectorRow::~PermissionSelectorRow() { |
| void PermissionSelectorRow::InitializeMenuButtonView( |
| views::GridLayout* layout, |
| - const WebsiteSettingsUI::PermissionInfo& permission) { |
| - bool button_enabled = |
| - permission.source == content_settings::SETTING_SOURCE_USER; |
| + const WebsiteSettingsUI::PermissionInfo& permission, |
| + const bool button_enabled) { |
| menu_button_ = new internal::PermissionMenuButton( |
| WebsiteSettingsUI::PermissionActionToUIString( |
| profile_, permission.type, permission.setting, |
| @@ -327,9 +344,8 @@ void PermissionSelectorRow::InitializeMenuButtonView( |
| void PermissionSelectorRow::InitializeComboboxView( |
| views::GridLayout* layout, |
| - const WebsiteSettingsUI::PermissionInfo& permission) { |
| - bool button_enabled = |
| - permission.source == content_settings::SETTING_SOURCE_USER; |
| + const WebsiteSettingsUI::PermissionInfo& permission, |
| + const bool button_enabled) { |
| combobox_model_adapter_.reset( |
| new internal::ComboboxModelAdapter(menu_model_.get())); |
| combobox_ = new internal::PermissionCombobox( |
| @@ -342,6 +358,9 @@ void PermissionSelectorRow::InitializeComboboxView( |
| void PermissionSelectorRow::PermissionChanged( |
| const WebsiteSettingsUI::PermissionInfo& permission) { |
| + // TODO(patricialor): Clear embargo state for this permission if the user sets |
| + // the permission back to the default setting. |
| + |
| // Change the permission icon to reflect the selected setting. |
| const gfx::Image& image = WebsiteSettingsUI::GetPermissionIcon(permission); |
| icon_->SetImage(image.ToImageSkia()); |