Index: chrome/browser/gtk/clear_browsing_data_dialog_gtk.cc |
diff --git a/chrome/browser/gtk/clear_browsing_data_dialog_gtk.cc b/chrome/browser/gtk/clear_browsing_data_dialog_gtk.cc |
index cae4b373c2e2a126c242fad5ba366b506171ff7e..9979a8d085dbfaaac2e3540574a0d994a6228dec 100644 |
--- a/chrome/browser/gtk/clear_browsing_data_dialog_gtk.cc |
+++ b/chrome/browser/gtk/clear_browsing_data_dialog_gtk.cc |
@@ -7,6 +7,7 @@ |
#include <string> |
#include "app/l10n_util.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browsing_data_remover.h" |
#include "chrome/browser/gtk/accessible_widget_helper_gtk.h" |
#include "chrome/browser/gtk/browser_window_gtk.h" |
@@ -15,6 +16,7 @@ |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
+#include "chrome/common/notification_details.h" |
#include "chrome/common/pref_names.h" |
#include "grit/generated_resources.h" |
#include "grit/locale_settings.h" |
@@ -36,6 +38,10 @@ void ClearBrowsingDataDialogGtk::Show(GtkWindow* parent, Profile* profile) { |
ClearBrowsingDataDialogGtk::ClearBrowsingDataDialogGtk(GtkWindow* parent, |
Profile* profile) : |
profile_(profile), remover_(NULL) { |
+ del_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled, |
+ g_browser_process->local_state(), |
+ this); |
+ |
// Build the dialog. |
std::string dialog_name = l10n_util::GetStringUTF8( |
IDS_CLEAR_BROWSING_DATA_TITLE); |
@@ -113,6 +119,15 @@ ClearBrowsingDataDialogGtk::ClearBrowsingDataDialogGtk(GtkWindow* parent, |
g_signal_connect(del_passwords_checkbox_, "toggled", |
G_CALLBACK(OnDialogWidgetClickedThunk), this); |
+ // LSO data checkbox. |
+ del_lso_data_checkbox_ = gtk_check_button_new_with_label( |
+ l10n_util::GetStringUTF8(IDS_DEL_FLASH_DATA_CHKBOX).c_str()); |
+ gtk_box_pack_start(GTK_BOX(vbox), del_lso_data_checkbox_, FALSE, FALSE, 0); |
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_lso_data_checkbox_), |
+ profile_->GetPrefs()->GetBoolean(prefs::kDeleteLSOData)); |
+ g_signal_connect(del_lso_data_checkbox_, "toggled", |
+ G_CALLBACK(OnDialogWidgetClickedThunk), this); |
+ |
// Form data checkbox. |
del_form_data_checkbox_ = gtk_check_button_new_with_label( |
l10n_util::GetStringUTF8(IDS_DEL_FORM_DATA_CHKBOX).c_str()); |
@@ -199,6 +214,10 @@ void ClearBrowsingDataDialogGtk::OnDialogResponse(GtkWidget* widget, |
IsChecked(del_cookies_checkbox_)); |
prefs->SetBoolean(prefs::kDeletePasswords, |
IsChecked(del_passwords_checkbox_)); |
+ if (del_lso_data_enabled_.GetValue()) { |
+ prefs->SetBoolean(prefs::kDeleteLSOData, |
+ IsChecked(del_lso_data_checkbox_)); |
+ } |
prefs->SetBoolean(prefs::kDeleteFormData, |
IsChecked(del_form_data_checkbox_)); |
prefs->SetInteger(prefs::kDeleteTimePeriod, |
@@ -231,7 +250,26 @@ void ClearBrowsingDataDialogGtk::OnFlashLinkClicked(GtkWidget* button) { |
browser->window()->Show(); |
} |
+void ClearBrowsingDataDialogGtk::Observe(NotificationType type, |
+ const NotificationSource& source, |
+ const NotificationDetails& details) { |
+ if (type == NotificationType::PREF_CHANGED) { |
+ const std::string& pref = *(Details<std::string>(details).ptr()); |
+ if (pref == prefs::kClearPluginLSODataEnabled) { |
+ UpdateDialogButtons(); |
+ } |
+ } |
+} |
+ |
void ClearBrowsingDataDialogGtk::UpdateDialogButtons() { |
+ bool enabled = del_lso_data_enabled_.GetValue(); |
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_lso_data_checkbox_), |
+ enabled && profile_->GetPrefs()->GetBoolean(prefs::kDeleteLSOData)); |
+ gtk_widget_set_sensitive(del_lso_data_checkbox_, enabled); |
+ gtk_widget_set_tooltip_text( |
+ del_lso_data_checkbox_, |
+ enabled ? NULL |
+ : l10n_util::GetStringUTF8(IDS_LSO_CLEAR_MESSAGE).c_str()); |
gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT, |
GetCheckedItems() != 0); |
} |
@@ -246,6 +284,8 @@ int ClearBrowsingDataDialogGtk::GetCheckedItems() { |
items |= BrowsingDataRemover::REMOVE_COOKIES; |
if (IsChecked(del_passwords_checkbox_)) |
items |= BrowsingDataRemover::REMOVE_PASSWORDS; |
+ if (IsChecked(del_lso_data_checkbox_)) |
+ items |= BrowsingDataRemover::REMOVE_LSO_DATA; |
if (IsChecked(del_form_data_checkbox_)) |
items |= BrowsingDataRemover::REMOVE_FORM_DATA; |
if (IsChecked(del_cache_checkbox_)) |