Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3549)

Unified Diff: chrome/browser/ui/views/website_settings/permission_selector_row.cc

Issue 2726853007: Views/Permissions: Update desktop UI to display BLOCK for embargoed permissions. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698