| 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());
|
|
|