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

Side by Side Diff: chrome/browser/gtk/clear_browsing_data_dialog_gtk.cc

Issue 5964008: Add UI to the Clear Browsing Data dialog to remove Flash LSO data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 9 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gtk/clear_browsing_data_dialog_gtk.h" 5 #include "chrome/browser/gtk/clear_browsing_data_dialog_gtk.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/browsing_data_remover.h" 11 #include "chrome/browser/browsing_data_remover.h"
11 #include "chrome/browser/gtk/accessible_widget_helper_gtk.h" 12 #include "chrome/browser/gtk/accessible_widget_helper_gtk.h"
12 #include "chrome/browser/gtk/browser_window_gtk.h" 13 #include "chrome/browser/gtk/browser_window_gtk.h"
13 #include "chrome/browser/gtk/gtk_chrome_link_button.h" 14 #include "chrome/browser/gtk/gtk_chrome_link_button.h"
14 #include "chrome/browser/gtk/gtk_util.h" 15 #include "chrome/browser/gtk/gtk_util.h"
15 #include "chrome/browser/prefs/pref_service.h" 16 #include "chrome/browser/prefs/pref_service.h"
16 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/ui/browser.h" 18 #include "chrome/browser/ui/browser.h"
19 #include "chrome/common/notification_details.h"
18 #include "chrome/common/pref_names.h" 20 #include "chrome/common/pref_names.h"
19 #include "grit/generated_resources.h" 21 #include "grit/generated_resources.h"
20 #include "grit/locale_settings.h" 22 #include "grit/locale_settings.h"
21 23
22 namespace { 24 namespace {
23 25
24 // Returns true if the checkbox is checked. 26 // Returns true if the checkbox is checked.
25 gboolean IsChecked(GtkWidget* widget) { 27 gboolean IsChecked(GtkWidget* widget) {
26 return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); 28 return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
27 } 29 }
28 30
29 } // namespace 31 } // namespace
30 32
31 // static 33 // static
32 void ClearBrowsingDataDialogGtk::Show(GtkWindow* parent, Profile* profile) { 34 void ClearBrowsingDataDialogGtk::Show(GtkWindow* parent, Profile* profile) {
33 new ClearBrowsingDataDialogGtk(parent, profile); 35 new ClearBrowsingDataDialogGtk(parent, profile);
34 } 36 }
35 37
36 ClearBrowsingDataDialogGtk::ClearBrowsingDataDialogGtk(GtkWindow* parent, 38 ClearBrowsingDataDialogGtk::ClearBrowsingDataDialogGtk(GtkWindow* parent,
37 Profile* profile) : 39 Profile* profile) :
38 profile_(profile), remover_(NULL) { 40 profile_(profile), remover_(NULL) {
41 del_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled,
42 g_browser_process->local_state(),
43 this);
44
39 // Build the dialog. 45 // Build the dialog.
40 std::string dialog_name = l10n_util::GetStringUTF8( 46 std::string dialog_name = l10n_util::GetStringUTF8(
41 IDS_CLEAR_BROWSING_DATA_TITLE); 47 IDS_CLEAR_BROWSING_DATA_TITLE);
42 dialog_ = gtk_dialog_new_with_buttons( 48 dialog_ = gtk_dialog_new_with_buttons(
43 dialog_name.c_str(), 49 dialog_name.c_str(),
44 parent, 50 parent,
45 (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR), 51 (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR),
46 NULL); 52 NULL);
47 53
48 GtkWidget* cancel_button = gtk_dialog_add_button(GTK_DIALOG(dialog_), 54 GtkWidget* cancel_button = gtk_dialog_add_button(GTK_DIALOG(dialog_),
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 112
107 // Passwords checkbox. 113 // Passwords checkbox.
108 del_passwords_checkbox_ = gtk_check_button_new_with_label( 114 del_passwords_checkbox_ = gtk_check_button_new_with_label(
109 l10n_util::GetStringUTF8(IDS_DEL_PASSWORDS_CHKBOX).c_str()); 115 l10n_util::GetStringUTF8(IDS_DEL_PASSWORDS_CHKBOX).c_str());
110 gtk_box_pack_start(GTK_BOX(vbox), del_passwords_checkbox_, FALSE, FALSE, 0); 116 gtk_box_pack_start(GTK_BOX(vbox), del_passwords_checkbox_, FALSE, FALSE, 0);
111 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_passwords_checkbox_), 117 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_passwords_checkbox_),
112 profile_->GetPrefs()->GetBoolean(prefs::kDeletePasswords)); 118 profile_->GetPrefs()->GetBoolean(prefs::kDeletePasswords));
113 g_signal_connect(del_passwords_checkbox_, "toggled", 119 g_signal_connect(del_passwords_checkbox_, "toggled",
114 G_CALLBACK(OnDialogWidgetClickedThunk), this); 120 G_CALLBACK(OnDialogWidgetClickedThunk), this);
115 121
122 // LSO data checkbox.
123 del_lso_data_checkbox_ = gtk_check_button_new_with_label(
124 l10n_util::GetStringUTF8(IDS_DEL_FLASH_DATA_CHKBOX).c_str());
125 gtk_box_pack_start(GTK_BOX(vbox), del_lso_data_checkbox_, FALSE, FALSE, 0);
126 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_lso_data_checkbox_),
127 profile_->GetPrefs()->GetBoolean(prefs::kDeleteLSOData));
128 g_signal_connect(del_lso_data_checkbox_, "toggled",
129 G_CALLBACK(OnDialogWidgetClickedThunk), this);
130
116 // Form data checkbox. 131 // Form data checkbox.
117 del_form_data_checkbox_ = gtk_check_button_new_with_label( 132 del_form_data_checkbox_ = gtk_check_button_new_with_label(
118 l10n_util::GetStringUTF8(IDS_DEL_FORM_DATA_CHKBOX).c_str()); 133 l10n_util::GetStringUTF8(IDS_DEL_FORM_DATA_CHKBOX).c_str());
119 gtk_box_pack_start(GTK_BOX(vbox), del_form_data_checkbox_, FALSE, FALSE, 0); 134 gtk_box_pack_start(GTK_BOX(vbox), del_form_data_checkbox_, FALSE, FALSE, 0);
120 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_form_data_checkbox_), 135 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_form_data_checkbox_),
121 profile_->GetPrefs()->GetBoolean(prefs::kDeleteFormData)); 136 profile_->GetPrefs()->GetBoolean(prefs::kDeleteFormData));
122 g_signal_connect(del_form_data_checkbox_, "toggled", 137 g_signal_connect(del_form_data_checkbox_, "toggled",
123 G_CALLBACK(OnDialogWidgetClickedThunk), this); 138 G_CALLBACK(OnDialogWidgetClickedThunk), this);
124 139
125 // Create a horizontal layout for the combo box and label. 140 // Create a horizontal layout for the combo box and label.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 prefs->SetBoolean(prefs::kDeleteBrowsingHistory, 207 prefs->SetBoolean(prefs::kDeleteBrowsingHistory,
193 IsChecked(del_history_checkbox_)); 208 IsChecked(del_history_checkbox_));
194 prefs->SetBoolean(prefs::kDeleteDownloadHistory, 209 prefs->SetBoolean(prefs::kDeleteDownloadHistory,
195 IsChecked(del_downloads_checkbox_)); 210 IsChecked(del_downloads_checkbox_));
196 prefs->SetBoolean(prefs::kDeleteCache, 211 prefs->SetBoolean(prefs::kDeleteCache,
197 IsChecked(del_cache_checkbox_)); 212 IsChecked(del_cache_checkbox_));
198 prefs->SetBoolean(prefs::kDeleteCookies, 213 prefs->SetBoolean(prefs::kDeleteCookies,
199 IsChecked(del_cookies_checkbox_)); 214 IsChecked(del_cookies_checkbox_));
200 prefs->SetBoolean(prefs::kDeletePasswords, 215 prefs->SetBoolean(prefs::kDeletePasswords,
201 IsChecked(del_passwords_checkbox_)); 216 IsChecked(del_passwords_checkbox_));
217 if (del_lso_data_enabled_.GetValue()) {
218 prefs->SetBoolean(prefs::kDeleteLSOData,
219 IsChecked(del_lso_data_checkbox_));
220 }
202 prefs->SetBoolean(prefs::kDeleteFormData, 221 prefs->SetBoolean(prefs::kDeleteFormData,
203 IsChecked(del_form_data_checkbox_)); 222 IsChecked(del_form_data_checkbox_));
204 prefs->SetInteger(prefs::kDeleteTimePeriod, 223 prefs->SetInteger(prefs::kDeleteTimePeriod,
205 gtk_combo_box_get_active(GTK_COMBO_BOX(time_period_combobox_))); 224 gtk_combo_box_get_active(GTK_COMBO_BOX(time_period_combobox_)));
206 225
207 int period_selected = gtk_combo_box_get_active( 226 int period_selected = gtk_combo_box_get_active(
208 GTK_COMBO_BOX(time_period_combobox_)); 227 GTK_COMBO_BOX(time_period_combobox_));
209 228
210 // BrowsingDataRemover deletes itself when done. 229 // BrowsingDataRemover deletes itself when done.
211 remover_ = new BrowsingDataRemover(profile_, 230 remover_ = new BrowsingDataRemover(profile_,
(...skipping 12 matching lines...) Expand all
224 243
225 void ClearBrowsingDataDialogGtk::OnFlashLinkClicked(GtkWidget* button) { 244 void ClearBrowsingDataDialogGtk::OnFlashLinkClicked(GtkWidget* button) {
226 // We open a new browser window so the Options dialog doesn't get lost 245 // We open a new browser window so the Options dialog doesn't get lost
227 // behind other windows. 246 // behind other windows.
228 Browser* browser = Browser::Create(profile_); 247 Browser* browser = Browser::Create(profile_);
229 browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)), 248 browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)),
230 GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); 249 GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK);
231 browser->window()->Show(); 250 browser->window()->Show();
232 } 251 }
233 252
253 void ClearBrowsingDataDialogGtk::Observe(NotificationType type,
254 const NotificationSource& source,
255 const NotificationDetails& details) {
256 if (type == NotificationType::PREF_CHANGED) {
257 const std::string& pref = *(Details<std::string>(details).ptr());
258 if (pref == prefs::kClearPluginLSODataEnabled) {
259 UpdateDialogButtons();
260 }
261 }
262 }
263
234 void ClearBrowsingDataDialogGtk::UpdateDialogButtons() { 264 void ClearBrowsingDataDialogGtk::UpdateDialogButtons() {
265 bool enabled = del_lso_data_enabled_.GetValue();
266 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_lso_data_checkbox_),
267 enabled && profile_->GetPrefs()->GetBoolean(prefs::kDeleteLSOData));
268 gtk_widget_set_sensitive(del_lso_data_checkbox_, enabled);
269 gtk_widget_set_tooltip_text(
270 del_lso_data_checkbox_,
271 enabled ? NULL
272 : l10n_util::GetStringUTF8(IDS_LSO_CLEAR_MESSAGE).c_str());
235 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT, 273 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT,
236 GetCheckedItems() != 0); 274 GetCheckedItems() != 0);
237 } 275 }
238 276
239 int ClearBrowsingDataDialogGtk::GetCheckedItems() { 277 int ClearBrowsingDataDialogGtk::GetCheckedItems() {
240 int items = 0; 278 int items = 0;
241 if (IsChecked(del_history_checkbox_)) 279 if (IsChecked(del_history_checkbox_))
242 items |= BrowsingDataRemover::REMOVE_HISTORY; 280 items |= BrowsingDataRemover::REMOVE_HISTORY;
243 if (IsChecked(del_downloads_checkbox_)) 281 if (IsChecked(del_downloads_checkbox_))
244 items |= BrowsingDataRemover::REMOVE_DOWNLOADS; 282 items |= BrowsingDataRemover::REMOVE_DOWNLOADS;
245 if (IsChecked(del_cookies_checkbox_)) 283 if (IsChecked(del_cookies_checkbox_))
246 items |= BrowsingDataRemover::REMOVE_COOKIES; 284 items |= BrowsingDataRemover::REMOVE_COOKIES;
247 if (IsChecked(del_passwords_checkbox_)) 285 if (IsChecked(del_passwords_checkbox_))
248 items |= BrowsingDataRemover::REMOVE_PASSWORDS; 286 items |= BrowsingDataRemover::REMOVE_PASSWORDS;
287 if (IsChecked(del_lso_data_checkbox_))
288 items |= BrowsingDataRemover::REMOVE_LSO_DATA;
249 if (IsChecked(del_form_data_checkbox_)) 289 if (IsChecked(del_form_data_checkbox_))
250 items |= BrowsingDataRemover::REMOVE_FORM_DATA; 290 items |= BrowsingDataRemover::REMOVE_FORM_DATA;
251 if (IsChecked(del_cache_checkbox_)) 291 if (IsChecked(del_cache_checkbox_))
252 items |= BrowsingDataRemover::REMOVE_CACHE; 292 items |= BrowsingDataRemover::REMOVE_CACHE;
253 return items; 293 return items;
254 } 294 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/clear_browsing_data_dialog_gtk.h ('k') | chrome/browser/resources/options/clear_browser_data_overlay.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698