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..07fcabf20e2f69403895d94dc471e863fafb490e 100644 |
--- a/chrome/browser/ui/views/website_settings/permission_selector_row.cc |
+++ b/chrome/browser/ui/views/website_settings/permission_selector_row.cc |
@@ -7,6 +7,9 @@ |
#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" |
@@ -279,10 +282,23 @@ 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. |
+ if (permission.setting == CONTENT_SETTING_BLOCK && |
+ PermissionUtil::IsPermission(permission.type)) { |
+ PermissionResult permission_result = |
+ PermissionManager::Get(profile_)->GetPermissionStatus(permission.type, |
+ url, url); |
+ if (permission_result.source == PermissionStatusSource::KILL_SWITCH) |
+ user_editable = false; |
+ } |
+ |
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 +327,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 +342,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 +356,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()); |