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

Unified Diff: chrome/browser/gtk/options/cookie_filter_page_gtk.cc

Issue 5078002: Disable content-settings GTK-UI for managed content-settings-types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 10 years, 1 month 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
« no previous file with comments | « chrome/browser/gtk/options/cookie_filter_page_gtk.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/options/cookie_filter_page_gtk.cc
diff --git a/chrome/browser/gtk/options/cookie_filter_page_gtk.cc b/chrome/browser/gtk/options/cookie_filter_page_gtk.cc
index 5441e638010710d30d694ca861d22ba02cee639f..3e560e9aec6c553a46f90e3d5e79a85f9e10836e 100644
--- a/chrome/browser/gtk/options/cookie_filter_page_gtk.cc
+++ b/chrome/browser/gtk/options/cookie_filter_page_gtk.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/gtk/options/cookie_filter_page_gtk.h"
#include "app/l10n_util.h"
+#include "base/auto_reset.h"
#include "base/command_line.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/browsing_data_local_storage_helper.h"
@@ -34,32 +35,40 @@ GtkWidget* WrapInHBox(GtkWidget* widget) {
CookieFilterPageGtk::CookieFilterPageGtk(Profile* profile)
: OptionsPageBase(profile),
- initializing_(true) {
+ ignore_toggle_(false) {
+ // The pref members must be initialized first since the pref values are read
+ // afterwards when we initialize the cookie storing group.
+ clear_site_data_on_exit_.Init(prefs::kClearSiteDataOnExit,
+ profile->GetPrefs(), this);
+
+ block_third_party_cookies_.Init(prefs::kBlockThirdPartyCookies,
+ profile->GetPrefs(), this);
+
+ managed_default_cookies_setting_.Init(prefs::kManagedDefaultCookiesSetting,
+ profile->GetPrefs(), this);
+
GtkWidget* title_label = gtk_util::CreateBoldLabel(
l10n_util::GetStringUTF8(IDS_MODIFY_COOKIE_STORING_LABEL));
page_ = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
gtk_box_pack_start(GTK_BOX(page_), title_label, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(page_), InitCookieStoringGroup());
-
- clear_site_data_on_exit_.Init(prefs::kClearSiteDataOnExit,
- profile->GetPrefs(), NULL);
-
- // Load initial values
- NotifyPrefChanged(NULL);
}
CookieFilterPageGtk::~CookieFilterPageGtk() {
}
void CookieFilterPageGtk::NotifyPrefChanged(const std::string* pref_name) {
- initializing_ = true;
+ AutoReset<bool> toggle_guard(&ignore_toggle_, true);
if (!pref_name || *pref_name == prefs::kClearSiteDataOnExit) {
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(clear_on_close_check_),
- clear_site_data_on_exit_.GetValue());
+ UpdateUiState();
+ }
+ if (!pref_name || *pref_name == prefs::kManagedDefaultCookiesSetting) {
+ UpdateUiState();
+ }
+ if (!pref_name || *pref_name == prefs::kBlockThirdPartyCookies) {
+ UpdateUiState();
}
-
- initializing_ = false;
}
void CookieFilterPageGtk::HighlightGroup(OptionsGroup highlight_group) {
@@ -82,34 +91,15 @@ GtkWidget* CookieFilterPageGtk::InitCookieStoringGroup() {
G_CALLBACK(OnCookiesAllowToggledThunk), this);
gtk_box_pack_start(GTK_BOX(vbox), block_radio_, FALSE, FALSE, 0);
- // Set up the current value for the button.
- const HostContentSettingsMap* settings_map =
- profile()->GetHostContentSettingsMap();
- ContentSetting default_setting =
- settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES);
- // Now that these have been added to the view hierarchy, it's safe to call
- // SetChecked() on them.
- GtkWidget* radio_button = NULL;
- if (default_setting == CONTENT_SETTING_ALLOW) {
- radio_button = allow_radio_;
- } else {
- DCHECK(default_setting == CONTENT_SETTING_BLOCK);
- radio_button = block_radio_;
- }
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
-
- // Exception button.
- GtkWidget* exceptions_button = gtk_button_new_with_label(
+ exceptions_button_ = gtk_button_new_with_label(
l10n_util::GetStringUTF8(IDS_COOKIES_EXCEPTIONS_BUTTON).c_str());
- g_signal_connect(G_OBJECT(exceptions_button), "clicked",
+ g_signal_connect(G_OBJECT(exceptions_button_), "clicked",
G_CALLBACK(OnExceptionsClickedThunk), this);
- gtk_box_pack_start(GTK_BOX(vbox), WrapInHBox(exceptions_button),
+ gtk_box_pack_start(GTK_BOX(vbox), WrapInHBox(exceptions_button_),
FALSE, FALSE, 0);
block_3rdparty_check_ = gtk_check_button_new_with_label(
l10n_util::GetStringUTF8(IDS_COOKIES_BLOCK_3RDPARTY_CHKBOX).c_str());
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(block_3rdparty_check_),
- settings_map->BlockThirdPartyCookies());
g_signal_connect(G_OBJECT(block_3rdparty_check_), "toggled",
G_CALLBACK(OnBlockThirdPartyToggledThunk), this);
gtk_box_pack_start(GTK_BOX(vbox), block_3rdparty_check_, FALSE, FALSE, 0);
@@ -134,11 +124,47 @@ GtkWidget* CookieFilterPageGtk::InitCookieStoringGroup() {
gtk_box_pack_start(GTK_BOX(vbox), WrapInHBox(flash_settings_link),
FALSE, FALSE, 0);
+ ignore_toggle_ = true;
+ UpdateUiState();
+ ignore_toggle_ = false;
+
return vbox;
};
+void CookieFilterPageGtk::UpdateUiState() {
+ // Get default_setting.
+ ContentSetting default_setting;
+ default_setting = profile()->GetHostContentSettingsMap()->
+ GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES);
+
+ // Set UI state.
+ if (default_setting == CONTENT_SETTING_ALLOW) {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(allow_radio_), TRUE);
+ } else {
+ DCHECK(default_setting == CONTENT_SETTING_BLOCK);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(block_radio_), TRUE);
+ }
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(clear_on_close_check_),
+ clear_site_data_on_exit_.GetValue());
+ gtk_toggle_button_set_active(
+ GTK_TOGGLE_BUTTON(block_3rdparty_check_),
+ block_third_party_cookies_.GetValue());
+
+ // Disable the UI if the default content setting is managed.
+ gtk_widget_set_sensitive(block_3rdparty_check_,
+ !block_third_party_cookies_.IsManaged());
+ bool sensitive = true;
+ if (profile()->GetHostContentSettingsMap()->IsDefaultContentSettingManaged(
+ CONTENT_SETTINGS_TYPE_COOKIES)) {
+ sensitive = false;
+ }
+ gtk_widget_set_sensitive(allow_radio_, sensitive);
+ gtk_widget_set_sensitive(block_radio_, sensitive);
+ gtk_widget_set_sensitive(exceptions_button_, sensitive);
+}
+
void CookieFilterPageGtk::OnCookiesAllowToggled(GtkWidget* toggle_button) {
- if (initializing_)
+ if (ignore_toggle_)
return;
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle_button))) {
@@ -170,7 +196,7 @@ void CookieFilterPageGtk::OnExceptionsClicked(GtkWidget* button) {
}
void CookieFilterPageGtk::OnBlockThirdPartyToggled(GtkWidget* toggle_button) {
- if (initializing_)
+ if (ignore_toggle_)
return;
HostContentSettingsMap* settings_map = profile()->GetHostContentSettingsMap();
@@ -179,7 +205,7 @@ void CookieFilterPageGtk::OnBlockThirdPartyToggled(GtkWidget* toggle_button) {
}
void CookieFilterPageGtk::OnClearOnCloseToggled(GtkWidget* toggle_button) {
- if (initializing_)
+ if (ignore_toggle_)
return;
clear_site_data_on_exit_.SetValue(
« no previous file with comments | « chrome/browser/gtk/options/cookie_filter_page_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698