diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-16 00:00:57 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-16 00:00:57 +0000 |
commit | 93dcf3daff5c052873091f7ed33b3a21b15a184f (patch) | |
tree | 380f566aa714d7f988bac122cade797743b99252 | |
parent | 06043ae4bd23a74f31172b04bd338b9f13a22b99 (diff) | |
download | chromium_src-93dcf3daff5c052873091f7ed33b3a21b15a184f.zip chromium_src-93dcf3daff5c052873091f7ed33b3a21b15a184f.tar.gz chromium_src-93dcf3daff5c052873091f7ed33b3a21b15a184f.tar.bz2 |
Remove clear browsing data views classes.
now in tabbed ui
BUG=none
TEST=compile
Review URL: http://codereview.chromium.org/6696032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78308 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/browsing_data_remover.cc | 2 | ||||
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.cc | 1 | ||||
-rw-r--r-- | chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.cc | 249 | ||||
-rw-r--r-- | chrome/browser/ui/views/browser_dialogs.h | 4 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_browsing_data_view.cc | 485 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_browsing_data_view.h | 128 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_browsing_data_view2.cc | 375 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_browsing_data_view2.h | 121 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_data_view.cc | 172 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_data_view.h | 97 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_server_data.cc | 345 | ||||
-rw-r--r-- | chrome/browser/ui/views/clear_server_data.h | 117 | ||||
-rw-r--r-- | chrome/browser/ui/views/dialog_stubs_gtk.cc | 7 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 14 |
14 files changed, 1 insertions, 2116 deletions
diff --git a/chrome/browser/browsing_data_remover.cc b/chrome/browser/browsing_data_remover.cc index f21d61e..8e83bc4 100644 --- a/chrome/browser/browsing_data_remover.cc +++ b/chrome/browser/browsing_data_remover.cc @@ -241,7 +241,7 @@ void BrowsingDataRemover::Remove(int remove_mask) { // Tell the renderers to clear their cache. WebCacheManager::GetInstance()->ClearCache(); - // Invoke ClearBrowsingDataView::ClearCache on the IO thread. + // Invoke DoClearCache on the IO thread. waiting_for_clear_cache_ = true; UserMetrics::RecordAction(UserMetricsAction("ClearBrowsingData_Cache"), profile_); diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 032d1f2..8704e7c 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -43,7 +43,6 @@ #include "chrome/browser/ui/gtk/browser_titlebar.h" #include "chrome/browser/ui/gtk/browser_toolbar_gtk.h" #include "chrome/browser/ui/gtk/cairo_cached_surface.h" -#include "chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.h" #include "chrome/browser/ui/gtk/collected_cookies_gtk.h" #include "chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.h" #include "chrome/browser/ui/gtk/download_in_progress_dialog_gtk.h" diff --git a/chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.cc b/chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.cc deleted file mode 100644 index 86d45d8..0000000 --- a/chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.cc +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.h" - -#include <string> - -#include "chrome/browser/browsing_data_remover.h" -#include "chrome/browser/prefs/pref_service.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/gtk/browser_window_gtk.h" -#include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" -#include "chrome/browser/ui/gtk/gtk_util.h" -#include "chrome/common/pref_names.h" -#include "grit/generated_resources.h" -#include "grit/locale_settings.h" -#include "ui/base/l10n/l10n_util.h" - -namespace { - -// Returns true if the checkbox is checked. -gboolean IsChecked(GtkWidget* widget) { - return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); -} - -} // namespace - -// static -void ClearBrowsingDataDialogGtk::Show(GtkWindow* parent, Profile* profile) { - new ClearBrowsingDataDialogGtk(parent, profile); -} - -ClearBrowsingDataDialogGtk::ClearBrowsingDataDialogGtk(GtkWindow* parent, - Profile* profile) : - profile_(profile), remover_(NULL) { - // Build the dialog. - std::string dialog_name = l10n_util::GetStringUTF8( - IDS_CLEAR_BROWSING_DATA_TITLE); - dialog_ = gtk_dialog_new_with_buttons( - dialog_name.c_str(), - parent, - (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR), - NULL); - - GtkWidget* cancel_button = gtk_dialog_add_button(GTK_DIALOG(dialog_), - GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT); - gtk_widget_grab_focus(cancel_button); - - gtk_util::AddButtonToDialog(dialog_, - l10n_util::GetStringUTF8(IDS_CLEAR_BROWSING_DATA_COMMIT).c_str(), - GTK_STOCK_APPLY, GTK_RESPONSE_ACCEPT); - - GtkWidget* content_area = GTK_DIALOG(dialog_)->vbox; - gtk_box_set_spacing(GTK_BOX(content_area), gtk_util::kContentAreaSpacing); - - GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); - gtk_container_add(GTK_CONTAINER(content_area), vbox); - - // Label on top of the checkboxes. - GtkWidget* description = gtk_label_new( - l10n_util::GetStringUTF8(IDS_CLEAR_BROWSING_DATA_LABEL).c_str()); - gtk_misc_set_alignment(GTK_MISC(description), 0, 0); - gtk_box_pack_start(GTK_BOX(vbox), description, FALSE, FALSE, 0); - - // History checkbox. - del_history_checkbox_ = gtk_check_button_new_with_label( - l10n_util::GetStringUTF8(IDS_DEL_BROWSING_HISTORY_CHKBOX).c_str()); - gtk_box_pack_start(GTK_BOX(vbox), del_history_checkbox_, FALSE, FALSE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_history_checkbox_), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteBrowsingHistory)); - g_signal_connect(del_history_checkbox_, "toggled", - G_CALLBACK(OnDialogWidgetClickedThunk), this); - - // Downloads checkbox. - del_downloads_checkbox_ = gtk_check_button_new_with_label( - l10n_util::GetStringUTF8(IDS_DEL_DOWNLOAD_HISTORY_CHKBOX).c_str()); - gtk_box_pack_start(GTK_BOX(vbox), del_downloads_checkbox_, FALSE, FALSE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_downloads_checkbox_), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteDownloadHistory)); - g_signal_connect(del_downloads_checkbox_, "toggled", - G_CALLBACK(OnDialogWidgetClickedThunk), this); - - // Cache checkbox. - del_cache_checkbox_ = gtk_check_button_new_with_label( - l10n_util::GetStringUTF8(IDS_DEL_CACHE_CHKBOX).c_str()); - gtk_box_pack_start(GTK_BOX(vbox), del_cache_checkbox_, FALSE, FALSE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_cache_checkbox_), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteCache)); - g_signal_connect(del_cache_checkbox_, "toggled", - G_CALLBACK(OnDialogWidgetClickedThunk), this); - - // Cookies checkbox. - del_cookies_checkbox_ = gtk_check_button_new_with_label( - l10n_util::GetStringUTF8(IDS_DEL_COOKIES_CHKBOX).c_str()); - gtk_box_pack_start(GTK_BOX(vbox), del_cookies_checkbox_, FALSE, FALSE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_cookies_checkbox_), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteCookies)); - g_signal_connect(del_cookies_checkbox_, "toggled", - G_CALLBACK(OnDialogWidgetClickedThunk), this); - - // Passwords checkbox. - del_passwords_checkbox_ = gtk_check_button_new_with_label( - l10n_util::GetStringUTF8(IDS_DEL_PASSWORDS_CHKBOX).c_str()); - gtk_box_pack_start(GTK_BOX(vbox), del_passwords_checkbox_, FALSE, FALSE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_passwords_checkbox_), - profile_->GetPrefs()->GetBoolean(prefs::kDeletePasswords)); - g_signal_connect(del_passwords_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()); - gtk_box_pack_start(GTK_BOX(vbox), del_form_data_checkbox_, FALSE, FALSE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(del_form_data_checkbox_), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteFormData)); - g_signal_connect(del_form_data_checkbox_, "toggled", - G_CALLBACK(OnDialogWidgetClickedThunk), this); - - // Create a horizontal layout for the combo box and label. - GtkWidget* combo_hbox = gtk_hbox_new(FALSE, gtk_util::kLabelSpacing); - GtkWidget* time_period_label_ = gtk_label_new( - l10n_util::GetStringUTF8(IDS_CLEAR_BROWSING_DATA_TIME_LABEL).c_str()); - gtk_box_pack_start(GTK_BOX(combo_hbox), time_period_label_, FALSE, FALSE, 0); - - // Time period combo box items. - time_period_combobox_ = gtk_combo_box_new_text(); - gtk_combo_box_append_text(GTK_COMBO_BOX(time_period_combobox_), - l10n_util::GetStringUTF8(IDS_CLEAR_DATA_HOUR).c_str()); - gtk_combo_box_append_text(GTK_COMBO_BOX(time_period_combobox_), - l10n_util::GetStringUTF8(IDS_CLEAR_DATA_DAY).c_str()); - gtk_combo_box_append_text(GTK_COMBO_BOX(time_period_combobox_), - l10n_util::GetStringUTF8(IDS_CLEAR_DATA_WEEK).c_str()); - gtk_combo_box_append_text(GTK_COMBO_BOX(time_period_combobox_), - l10n_util::GetStringUTF8(IDS_CLEAR_DATA_4WEEKS).c_str()); - gtk_combo_box_append_text(GTK_COMBO_BOX(time_period_combobox_), - l10n_util::GetStringUTF8(IDS_CLEAR_DATA_EVERYTHING).c_str()); - gtk_combo_box_set_active(GTK_COMBO_BOX(time_period_combobox_), - profile_->GetPrefs()->GetInteger(prefs::kDeleteTimePeriod)); - gtk_box_pack_start(GTK_BOX(combo_hbox), - time_period_combobox_, FALSE, FALSE, 0); - g_signal_connect(time_period_combobox_, "changed", - G_CALLBACK(OnDialogWidgetClickedThunk), this); - - // Add the combo/label time period box to the vertical layout. - gtk_box_pack_start(GTK_BOX(vbox), combo_hbox, FALSE, FALSE, 0); - - // Add widgets for the area below the accept buttons. - GtkWidget* flash_link = gtk_chrome_link_button_new( - l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_SETTINGS).c_str()); - g_signal_connect(G_OBJECT(flash_link), "clicked", - G_CALLBACK(OnFlashLinkClickedThunk), this); - GtkWidget* flash_link_hbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(flash_link_hbox), flash_link, FALSE, FALSE, 0); - gtk_box_pack_end(GTK_BOX(content_area), flash_link_hbox, FALSE, FALSE, 0); - - GtkWidget* separator = gtk_hseparator_new(); - gtk_box_pack_end(GTK_BOX(content_area), separator, FALSE, FALSE, 0); - - // Make sure we can move things around. - DCHECK_EQ(GTK_DIALOG(dialog_)->action_area->parent, content_area); - - // Now rearrange those because they're *above* the accept buttons...there's - // no way to place them in the correct position with gtk_box_pack_end() so - // manually move things into the correct order. - gtk_box_reorder_child(GTK_BOX(content_area), flash_link_hbox, -1); - gtk_box_reorder_child(GTK_BOX(content_area), separator, -1); - gtk_box_reorder_child(GTK_BOX(content_area), GTK_DIALOG(dialog_)->action_area, - -1); - - g_signal_connect(dialog_, "response", G_CALLBACK(OnResponseThunk), this); - - UpdateDialogButtons(); - - gtk_util::ShowDialogWithMinLocalizedWidth(dialog_, - IDS_CLEARDATA_DIALOG_WIDTH_CHARS); -} - -ClearBrowsingDataDialogGtk::~ClearBrowsingDataDialogGtk() { -} - -void ClearBrowsingDataDialogGtk::OnResponse(GtkWidget* dialog, - int response_id) { - if (response_id == GTK_RESPONSE_ACCEPT) { - PrefService* prefs = profile_->GetPrefs(); - prefs->SetBoolean(prefs::kDeleteBrowsingHistory, - IsChecked(del_history_checkbox_)); - prefs->SetBoolean(prefs::kDeleteDownloadHistory, - IsChecked(del_downloads_checkbox_)); - prefs->SetBoolean(prefs::kDeleteCache, - IsChecked(del_cache_checkbox_)); - prefs->SetBoolean(prefs::kDeleteCookies, - IsChecked(del_cookies_checkbox_)); - prefs->SetBoolean(prefs::kDeletePasswords, - IsChecked(del_passwords_checkbox_)); - prefs->SetBoolean(prefs::kDeleteFormData, - IsChecked(del_form_data_checkbox_)); - prefs->SetInteger(prefs::kDeleteTimePeriod, - gtk_combo_box_get_active(GTK_COMBO_BOX(time_period_combobox_))); - - int period_selected = gtk_combo_box_get_active( - GTK_COMBO_BOX(time_period_combobox_)); - - // BrowsingDataRemover deletes itself when done. - remover_ = new BrowsingDataRemover(profile_, - static_cast<BrowsingDataRemover::TimePeriod>(period_selected), - base::Time()); - remover_->Remove(GetCheckedItems()); - } - - delete this; - gtk_widget_destroy(dialog); -} - -void ClearBrowsingDataDialogGtk::OnDialogWidgetClicked(GtkWidget* widget) { - UpdateDialogButtons(); -} - -void ClearBrowsingDataDialogGtk::OnFlashLinkClicked(GtkWidget* button) { - // We open a new browser window so the Options dialog doesn't get lost - // behind other windows. - Browser* browser = Browser::Create(profile_); - browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)), - GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); - browser->window()->Show(); -} - -void ClearBrowsingDataDialogGtk::UpdateDialogButtons() { - gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT, - GetCheckedItems() != 0); -} - -int ClearBrowsingDataDialogGtk::GetCheckedItems() { - int items = 0; - if (IsChecked(del_history_checkbox_)) - items |= BrowsingDataRemover::REMOVE_HISTORY; - if (IsChecked(del_downloads_checkbox_)) - items |= BrowsingDataRemover::REMOVE_DOWNLOADS; - if (IsChecked(del_cookies_checkbox_)) - items |= BrowsingDataRemover::REMOVE_COOKIES; - if (IsChecked(del_passwords_checkbox_)) - items |= BrowsingDataRemover::REMOVE_PASSWORDS; - if (IsChecked(del_form_data_checkbox_)) - items |= BrowsingDataRemover::REMOVE_FORM_DATA; - if (IsChecked(del_cache_checkbox_)) - items |= BrowsingDataRemover::REMOVE_CACHE; - return items; -} diff --git a/chrome/browser/ui/views/browser_dialogs.h b/chrome/browser/ui/views/browser_dialogs.h index d5be7e9..295aeec 100644 --- a/chrome/browser/ui/views/browser_dialogs.h +++ b/chrome/browser/ui/views/browser_dialogs.h @@ -47,10 +47,6 @@ void ShowBugReportView(views::Window* parent, Profile* profile, TabContents* tab); -// Shows the "Clear browsing data" dialog box. See ClearBrowsingDataView. -void ShowClearBrowsingDataView(gfx::NativeWindow parent, - Profile* profile); - // Shows or hides the global bookmark bubble for the star button. void ShowBookmarkBubbleView(views::Window* parent, const gfx::Rect& bounds, diff --git a/chrome/browser/ui/views/clear_browsing_data_view.cc b/chrome/browser/ui/views/clear_browsing_data_view.cc deleted file mode 100644 index e7b007b..0000000 --- a/chrome/browser/ui/views/clear_browsing_data_view.cc +++ /dev/null @@ -1,485 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ui/views/clear_browsing_data_view.h" - -#include "base/string16.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/browser_window.h" -#include "chrome/browser/prefs/pref_service.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/search_engines/template_url_model.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/common/pref_names.h" -#include "grit/generated_resources.h" -#include "grit/locale_settings.h" -#include "net/url_request/url_request_context.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/insets.h" -#include "views/background.h" -#include "views/controls/button/checkbox.h" -#include "views/controls/label.h" -#include "views/controls/separator.h" -#include "views/controls/throbber.h" -#include "views/layout/grid_layout.h" -#include "views/layout/layout_constants.h" -#include "views/widget/widget.h" -#include "views/window/dialog_client_view.h" -#include "views/window/window.h" - -using views::GridLayout; - -// The combo box is vertically aligned to the 'time-period' label, which makes -// the combo box look a little too close to the check box above it when we use -// standard layout to separate them. We therefore add a little extra margin to -// the label, giving it a little breathing space. -static const int kExtraMarginForTimePeriodLabel = 3; - -namespace browser { - -// Defined in browser_dialogs.h for creation of the view. -void ShowClearBrowsingDataView(gfx::NativeWindow parent, - Profile* profile) { - views::Window::CreateChromeWindow(parent, gfx::Rect(), - new ClearBrowsingDataView(profile))->Show(); -} - -} // namespace browser - - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, public: - -ClearBrowsingDataView::ClearBrowsingDataView(Profile* profile) - : del_history_checkbox_(NULL), - del_downloads_checkbox_(NULL), - del_cache_checkbox_(NULL), - del_cookies_checkbox_(NULL), - del_passwords_checkbox_(NULL), - del_form_data_checkbox_(NULL), - time_period_label_(NULL), - time_period_combobox_(NULL), - delete_in_progress_(false), - profile_(profile), - remover_(NULL) { - DCHECK(profile); - Init(); -} - -ClearBrowsingDataView::~ClearBrowsingDataView(void) { - if (remover_) { - // We were destroyed while clearing history was in progress. This can only - // occur during automated tests (normally the user can't close the dialog - // while clearing is in progress as the dialog is modal and not closeable). - remover_->RemoveObserver(this); - } -} - -void ClearBrowsingDataView::Init() { - // Views we will add to the *parent* of this dialog, since it will display - // next to the buttons which we don't draw ourselves. - throbber_ = new views::Throbber(50, true); - throbber_->SetVisible(false); - - status_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DELETING))); - status_label_->SetVisible(false); - - // Regular view controls we draw by ourself. First, we add the dialog label. - delete_all_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_LABEL))); - AddChildView(delete_all_label_); - - // Add all the check-boxes. - del_history_checkbox_ = - AddCheckbox(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_DEL_BROWSING_HISTORY_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteBrowsingHistory)); - - del_downloads_checkbox_ = - AddCheckbox(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_DEL_DOWNLOAD_HISTORY_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteDownloadHistory)); - - del_cache_checkbox_ = - AddCheckbox(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_DEL_CACHE_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteCache)); - - del_cookies_checkbox_ = - AddCheckbox(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_DEL_COOKIES_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteCookies)); - - del_passwords_checkbox_ = - AddCheckbox(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_DEL_PASSWORDS_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeletePasswords)); - - del_form_data_checkbox_ = - AddCheckbox(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_DEL_FORM_DATA_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteFormData)); - - // Add a label which appears before the combo box for the time period. - time_period_label_ = new views::Label(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_TIME_LABEL))); - AddChildView(time_period_label_); - - // Add the combo box showing how far back in time we want to delete. - time_period_combobox_ = new views::Combobox(this); - time_period_combobox_->SetSelectedItem(profile_->GetPrefs()->GetInteger( - prefs::kDeleteTimePeriod)); - time_period_combobox_->set_listener(this); - time_period_combobox_->SetAccessibleName( - WideToUTF16Hack(time_period_label_->GetText())); - AddChildView(time_period_combobox_); - - // Create the throbber and related views. The throbber and status link are - // contained in throbber_view_, which is positioned by DialogClientView right - // next to the buttons. - throbber_view_ = new views::View(); - - GridLayout* layout = new GridLayout(throbber_view_); - throbber_view_->SetLayoutManager(layout); - views::ColumnSet* column_set = layout->AddColumnSet(0); - // DialogClientView positions the extra view at kButtonHEdgeMargin, but we - // put all our controls at views::kPanelHorizMargin. Add a padding column so - // things line up nicely. - if (views::kPanelHorizMargin - views::kButtonHEdgeMargin > 0) { - column_set->AddPaddingColumn( - 0, views::kPanelHorizMargin - views::kButtonHEdgeMargin); - } - column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0, - GridLayout::USE_PREF, 0, 0); - column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0, - GridLayout::USE_PREF, 0, 0); - layout->StartRow(1, 0); - layout->AddView(throbber_); - layout->AddView(status_label_); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, views::View implementation: - -gfx::Size ClearBrowsingDataView::GetPreferredSize() { - return gfx::Size(views::Window::GetLocalizedContentsSize( - IDS_CLEARDATA_DIALOG_WIDTH_CHARS, - IDS_CLEARDATA_DIALOG_HEIGHT_LINES)); -} - -void ClearBrowsingDataView::Layout() { - gfx::Size panel_size = GetPreferredSize(); - - // Delete All label goes to the top left corner. - gfx::Size sz = delete_all_label_->GetPreferredSize(); - delete_all_label_->SetBounds( - views::kPanelHorizMargin, views::kPanelVertMargin, - sz.width(), sz.height()); - - // Check-boxes go beneath it (with a little indentation). - sz = del_history_checkbox_->GetPreferredSize(); - del_history_checkbox_->SetBounds(2 * views::kPanelHorizMargin, - delete_all_label_->y() + - delete_all_label_->height() + - views::kRelatedControlVerticalSpacing, - sz.width(), sz.height()); - - sz = del_downloads_checkbox_->GetPreferredSize(); - del_downloads_checkbox_->SetBounds(2 * views::kPanelHorizMargin, - del_history_checkbox_->y() + - del_history_checkbox_->height() + - views::kRelatedControlVerticalSpacing, - sz.width(), sz.height()); - - sz = del_cache_checkbox_->GetPreferredSize(); - del_cache_checkbox_->SetBounds(2 * views::kPanelHorizMargin, - del_downloads_checkbox_->y() + - del_downloads_checkbox_->height() + - views::kRelatedControlVerticalSpacing, - sz.width(), sz.height()); - - sz = del_cookies_checkbox_->GetPreferredSize(); - del_cookies_checkbox_->SetBounds(2 * views::kPanelHorizMargin, - del_cache_checkbox_->y() + - del_cache_checkbox_->height() + - views::kRelatedControlVerticalSpacing, - sz.width(), sz.height()); - - sz = del_passwords_checkbox_->GetPreferredSize(); - del_passwords_checkbox_->SetBounds(2 * views::kPanelHorizMargin, - del_cookies_checkbox_->y() + - del_cookies_checkbox_->height() + - views::kRelatedControlVerticalSpacing, - sz.width(), sz.height()); - - sz = del_form_data_checkbox_->GetPreferredSize(); - del_form_data_checkbox_->SetBounds(2 * views::kPanelHorizMargin, - del_passwords_checkbox_->y() + - del_passwords_checkbox_->height() + - views::kRelatedControlVerticalSpacing, - sz.width(), sz.height()); - - // Time period label is next below the combo boxes. - sz = time_period_label_->GetPreferredSize(); - time_period_label_->SetBounds(views::kPanelHorizMargin, - del_form_data_checkbox_->y() + - del_form_data_checkbox_->height() + - views::kRelatedControlVerticalSpacing + - kExtraMarginForTimePeriodLabel, - sz.width(), sz.height()); - - // Time period combo box goes on the right of the label, and we align it - // vertically to the label as well. - int label_y_size = sz.height(); - sz = time_period_combobox_->GetPreferredSize(); - time_period_combobox_->SetBounds(time_period_label_->x() + - time_period_label_->width() + - views::kRelatedControlVerticalSpacing, - time_period_label_->y() - - ((sz.height() - label_y_size) / 2), - sz.width(), sz.height()); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, views::DialogDelegate implementation: - -int ClearBrowsingDataView::GetDefaultDialogButton() const { - return MessageBoxFlags::DIALOGBUTTON_NONE; -} - -std::wstring ClearBrowsingDataView::GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const { - DCHECK((button == MessageBoxFlags::DIALOGBUTTON_OK) || - (button == MessageBoxFlags::DIALOGBUTTON_CANCEL)); - return UTF16ToWide(l10n_util::GetStringUTF16( - (button == MessageBoxFlags::DIALOGBUTTON_OK) ? - IDS_CLEAR_BROWSING_DATA_COMMIT : IDS_CANCEL)); -} - -bool ClearBrowsingDataView::IsDialogButtonEnabled( - MessageBoxFlags::DialogButton button) const { - if (delete_in_progress_) - return false; - - if (button == MessageBoxFlags::DIALOGBUTTON_OK) { - return del_history_checkbox_->checked() || - del_downloads_checkbox_->checked() || - del_cache_checkbox_->checked() || - del_cookies_checkbox_->checked() || - del_passwords_checkbox_->checked() || - del_form_data_checkbox_->checked(); - } - - return true; -} - -bool ClearBrowsingDataView::CanResize() const { - return false; -} - -bool ClearBrowsingDataView::CanMaximize() const { - return false; -} - -bool ClearBrowsingDataView::IsAlwaysOnTop() const { - return false; -} - -bool ClearBrowsingDataView::HasAlwaysOnTopMenu() const { - return false; -} - -bool ClearBrowsingDataView::IsModal() const { - return true; -} - -std::wstring ClearBrowsingDataView::GetWindowTitle() const { - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_TITLE)); -} - -bool ClearBrowsingDataView::Accept() { - if (!IsDialogButtonEnabled(MessageBoxFlags::DIALOGBUTTON_OK)) { - return false; - } - - PrefService* prefs = profile_->GetPrefs(); - prefs->SetBoolean(prefs::kDeleteBrowsingHistory, - del_history_checkbox_->checked()); - prefs->SetBoolean(prefs::kDeleteDownloadHistory, - del_downloads_checkbox_->checked()); - prefs->SetBoolean(prefs::kDeleteCache, - del_cache_checkbox_->checked()); - prefs->SetBoolean(prefs::kDeleteCookies, - del_cookies_checkbox_->checked()); - prefs->SetBoolean(prefs::kDeletePasswords, - del_passwords_checkbox_->checked()); - prefs->SetBoolean(prefs::kDeleteFormData, - del_form_data_checkbox_->checked()); - OnDelete(); - return false; // We close the dialog in OnBrowsingDataRemoverDone(). -} - -views::View* ClearBrowsingDataView::GetContentsView() { - return this; -} - -views::View* ClearBrowsingDataView::GetInitiallyFocusedView() { - return GetDialogClientView()->cancel_button(); -} - -views::ClientView* ClearBrowsingDataView::CreateClientView( - views::Window* window) { - views::Link* flash_link = new views::Link( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_FLASH_STORAGE_SETTINGS))); - flash_link->SetController(this); - - views::View* settings_view = new views::View(); - GridLayout* layout = new GridLayout(settings_view); - layout->SetInsets( - gfx::Insets(0, views::kPanelHorizMargin, 0, views::kButtonHEdgeMargin)); - settings_view->SetLayoutManager(layout); - views::ColumnSet* column_set = layout->AddColumnSet(0); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, - GridLayout::USE_PREF, 0, 0); - layout->StartRow(0, 0); - layout->AddView(new views::Separator()); - layout->StartRowWithPadding(0, 0, 0, views::kRelatedControlVerticalSpacing); - layout->AddView(flash_link, 1, 1, GridLayout::LEADING, GridLayout::CENTER); - - views::DialogClientView* client_view = - new views::DialogClientView(window, GetContentsView()); - client_view->SetBottomView(settings_view); - return client_view; -} - -views::View* ClearBrowsingDataView::GetExtraView() { - return throbber_view_; -} - -bool ClearBrowsingDataView::GetSizeExtraViewHeightToButtons() { - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, ComboboxModel implementation: - -int ClearBrowsingDataView::GetItemCount() { - return 5; -} - -string16 ClearBrowsingDataView::GetItemAt(int index) { - switch (index) { - case 0: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_HOUR); - case 1: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DAY); - case 2: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_WEEK); - case 3: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_4WEEKS); - case 4: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_EVERYTHING); - default: NOTREACHED() << "Missing item"; - return ASCIIToUTF16("?"); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, views::ComboBoxListener implementation: - -void ClearBrowsingDataView::ItemChanged(views::Combobox* sender, - int prev_index, int new_index) { - if (sender == time_period_combobox_ && prev_index != new_index) - profile_->GetPrefs()->SetInteger(prefs::kDeleteTimePeriod, new_index); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, views::ButtonListener implementation: - -void ClearBrowsingDataView::ButtonPressed(views::Button* sender, - const views::Event& event) { - // When no checkbox is checked we should not have the action button enabled. - // This forces the button to evaluate what state they should be in. - GetDialogClientView()->UpdateDialogButtons(); -} - -void ClearBrowsingDataView::LinkActivated(views::Link* source, - int event_flags) { - Browser* browser = Browser::Create(profile_); - browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)), - GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); - browser->window()->Show(); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, private: - -views::Checkbox* ClearBrowsingDataView::AddCheckbox(const std::wstring& text, - bool checked) { - views::Checkbox* checkbox = new views::Checkbox(text); - checkbox->SetChecked(checked); - checkbox->set_listener(this); - AddChildView(checkbox); - return checkbox; -} - -void ClearBrowsingDataView::UpdateControlEnabledState() { - window()->EnableClose(!delete_in_progress_); - - del_history_checkbox_->SetEnabled(!delete_in_progress_); - del_downloads_checkbox_->SetEnabled(!delete_in_progress_); - del_cache_checkbox_->SetEnabled(!delete_in_progress_); - del_cookies_checkbox_->SetEnabled(!delete_in_progress_); - del_passwords_checkbox_->SetEnabled(!delete_in_progress_); - del_form_data_checkbox_->SetEnabled(!delete_in_progress_); - time_period_combobox_->SetEnabled(!delete_in_progress_); - - status_label_->SetVisible(delete_in_progress_); - throbber_->SetVisible(delete_in_progress_); - if (delete_in_progress_) - throbber_->Start(); - else - throbber_->Stop(); - - // Make sure to update the state for OK and Cancel buttons. - GetDialogClientView()->UpdateDialogButtons(); -} - -// Convenience method that returns true if the supplied checkbox is selected -// and enabled. -static bool IsCheckBoxEnabledAndSelected(views::Checkbox* cb) { - return (cb->IsEnabled() && cb->checked()); -} - -void ClearBrowsingDataView::OnDelete() { - int period_selected = time_period_combobox_->selected_item(); - - int remove_mask = 0; - if (IsCheckBoxEnabledAndSelected(del_history_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_HISTORY; - if (IsCheckBoxEnabledAndSelected(del_downloads_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_DOWNLOADS; - if (IsCheckBoxEnabledAndSelected(del_cookies_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_COOKIES; - if (IsCheckBoxEnabledAndSelected(del_passwords_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_PASSWORDS; - if (IsCheckBoxEnabledAndSelected(del_form_data_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA; - if (IsCheckBoxEnabledAndSelected(del_cache_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_CACHE; - - delete_in_progress_ = true; - UpdateControlEnabledState(); - - // BrowsingDataRemover deletes itself when done. - remover_ = new BrowsingDataRemover(profile_, - static_cast<BrowsingDataRemover::TimePeriod>(period_selected), - base::Time()); - remover_->AddObserver(this); - remover_->Remove(remove_mask); -} - -void ClearBrowsingDataView::OnBrowsingDataRemoverDone() { - // No need to remove ourselves as an observer as BrowsingDataRemover deletes - // itself after we return. - remover_ = NULL; - window()->CloseWindow(); -} diff --git a/chrome/browser/ui/views/clear_browsing_data_view.h b/chrome/browser/ui/views/clear_browsing_data_view.h deleted file mode 100644 index 21d0f63..0000000 --- a/chrome/browser/ui/views/clear_browsing_data_view.h +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright (c) 20011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_VIEWS_CLEAR_BROWSING_DATA_VIEW_H_ -#define CHROME_BROWSER_UI_VIEWS_CLEAR_BROWSING_DATA_VIEW_H_ -#pragma once - -#include "chrome/browser/browsing_data_remover.h" -#include "ui/base/models/combobox_model.h" -#include "views/controls/button/button.h" -#include "views/controls/combobox/combobox.h" -#include "views/controls/label.h" -#include "views/controls/link.h" -#include "views/view.h" -#include "views/window/dialog_delegate.h" - -namespace views { -class Checkbox; -class Label; -class Throbber; -class Window; -} - -class Profile; -class MessageLoop; - -//////////////////////////////////////////////////////////////////////////////// -// -// The ClearBrowsingDataView class is responsible for drawing the UI controls of -// the dialog that allows the user to select what to delete (history, downloads, -// etc). -// -//////////////////////////////////////////////////////////////////////////////// -class ClearBrowsingDataView : public views::View, - public views::DialogDelegate, - public views::ButtonListener, - public ui::ComboboxModel, - public views::Combobox::Listener, - public BrowsingDataRemover::Observer, - public views::LinkController { - public: - explicit ClearBrowsingDataView(Profile* profile); - virtual ~ClearBrowsingDataView(void); - - // Initialize the controls on the dialog. - void Init(); - - // Overridden from views::View: - virtual gfx::Size GetPreferredSize(); - virtual void Layout(); - - // Overridden from views::DialogDelegate: - virtual int GetDefaultDialogButton() const; - virtual std::wstring GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const; - virtual bool IsDialogButtonEnabled( - MessageBoxFlags::DialogButton button) const; - virtual bool CanResize() const; - virtual bool CanMaximize() const; - virtual bool IsAlwaysOnTop() const; - virtual bool HasAlwaysOnTopMenu() const; - virtual bool IsModal() const; - virtual std::wstring GetWindowTitle() const; - virtual bool Accept(); - virtual views::View* GetContentsView(); - virtual views::ClientView* CreateClientView(views::Window* window); - virtual views::View* GetExtraView(); - virtual bool GetSizeExtraViewHeightToButtons(); - virtual views::View* GetInitiallyFocusedView(); - - // Overridden from ui::ComboboxModel: - virtual int GetItemCount(); - virtual string16 GetItemAt(int index); - - // Overridden from views::Combobox::Listener: - virtual void ItemChanged(views::Combobox* sender, int prev_index, - int new_index); - - // Overridden from views::ButtonListener: - virtual void ButtonPressed(views::Button* sender, const views::Event& event); - - // Overriden from views::LinkController: - virtual void LinkActivated(views::Link* source, int event_flags); - - private: - // Adds a new check-box as a child to the view. - views::Checkbox* AddCheckbox(const std::wstring& text, bool checked); - - // Sets the controls on the UI to be enabled/disabled depending on whether we - // have a delete operation in progress or not. - void UpdateControlEnabledState(); - - // Starts the process of deleting the browsing data depending on what the - // user selected. - void OnDelete(); - - // Callback from BrowsingDataRemover. Closes the dialog. - virtual void OnBrowsingDataRemoverDone(); - - // UI elements we add to the parent view. - views::View* throbber_view_; - views::Throbber* throbber_; - views::Label* status_label_; - // Other UI elements. - views::Label* delete_all_label_; - views::Checkbox* del_history_checkbox_; - views::Checkbox* del_downloads_checkbox_; - views::Checkbox* del_cache_checkbox_; - views::Checkbox* del_cookies_checkbox_; - views::Checkbox* del_passwords_checkbox_; - views::Checkbox* del_form_data_checkbox_; - views::Label* time_period_label_; - views::Combobox* time_period_combobox_; - - // Used to signal enabled/disabled state for controls in the UI. - bool delete_in_progress_; - - Profile* profile_; - - // If non-null it means removal is in progress. BrowsingDataRemover takes care - // of deleting itself when done. - BrowsingDataRemover* remover_; - - DISALLOW_COPY_AND_ASSIGN(ClearBrowsingDataView); -}; - -#endif // CHROME_BROWSER_UI_VIEWS_CLEAR_BROWSING_DATA_VIEW_H_ diff --git a/chrome/browser/ui/views/clear_browsing_data_view2.cc b/chrome/browser/ui/views/clear_browsing_data_view2.cc deleted file mode 100644 index 18daeb2..0000000 --- a/chrome/browser/ui/views/clear_browsing_data_view2.cc +++ /dev/null @@ -1,375 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ui/views/clear_browsing_data_view2.h" - -#include "base/string16.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/browser_window.h" -#include "chrome/browser/prefs/pref_service.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/search_engines/template_url_model.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/common/pref_names.h" -#include "grit/generated_resources.h" -#include "grit/locale_settings.h" -#include "net/url_request/url_request_context.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/insets.h" -#include "views/background.h" -#include "views/controls/button/checkbox.h" -#include "views/controls/label.h" -#include "views/controls/separator.h" -#include "views/controls/throbber.h" -#include "views/layout/grid_layout.h" -#include "views/layout/layout_constants.h" -#include "views/widget/widget.h" -#include "views/window/dialog_client_view.h" -#include "views/window/window.h" - -using views::GridLayout; - -// The combo box is vertically aligned to the 'time-period' label, which makes -// the combo box look a little too close to the check box above it when we use -// standard layout to separate them. We therefore add a little extra margin to -// the label, giving it a little breathing space. -static const int kExtraMarginForTimePeriodLabel = 3; - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView2, public: - -ClearBrowsingDataView2::ClearBrowsingDataView2(Profile* profile, - ClearDataView* clear_data_view) - : clear_data_parent_window_(clear_data_view), - allow_clear_(true), - throbber_view_(NULL), - throbber_(NULL), - status_label_(NULL), - delete_all_label_(NULL), - del_history_checkbox_(NULL), - del_downloads_checkbox_(NULL), - del_cache_checkbox_(NULL), - del_cookies_checkbox_(NULL), - del_passwords_checkbox_(NULL), - del_form_data_checkbox_(NULL), - time_period_label_(NULL), - time_period_combobox_(NULL), - clear_browsing_data_button_(NULL), - delete_in_progress_(false), - profile_(profile), - remover_(NULL) { - DCHECK(profile); - Init(); - InitControlLayout(); -} - -ClearBrowsingDataView2::~ClearBrowsingDataView2(void) { - if (remover_) { - // We were destroyed while clearing history was in progress. This can only - // occur during automated tests (normally the user can't close the dialog - // while clearing is in progress as the dialog is modal and not closeable). - remover_->RemoveObserver(this); - } -} - -void ClearBrowsingDataView2::SetAllowClear(bool allow) { - allow_clear_ = allow; - UpdateControlEnabledState(); -} - -void ClearBrowsingDataView2::Init() { - throbber_ = new views::Throbber(50, true); - throbber_->SetVisible(false); - - status_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DELETING))); - status_label_->SetVisible(false); - - // Regular view controls we draw by ourself. First, we add the dialog label. - delete_all_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_LABEL))); - - // Add all the check-boxes. - del_history_checkbox_ = AddCheckbox( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_DEL_BROWSING_HISTORY_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteBrowsingHistory)); - - del_downloads_checkbox_ = AddCheckbox( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_DEL_DOWNLOAD_HISTORY_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteDownloadHistory)); - - del_cache_checkbox_ = AddCheckbox( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_DEL_CACHE_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteCache)); - - del_cookies_checkbox_ = AddCheckbox( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_DEL_COOKIES_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteCookies)); - - del_passwords_checkbox_ = AddCheckbox( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_DEL_PASSWORDS_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeletePasswords)); - - del_form_data_checkbox_ = AddCheckbox( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_DEL_FORM_DATA_CHKBOX)), - profile_->GetPrefs()->GetBoolean(prefs::kDeleteFormData)); - - clear_browsing_data_button_ = new views::NativeButton( - this, - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_COMMIT))); - - // Add a label which appears before the combo box for the time period. - time_period_label_ = new views::Label(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_TIME_LABEL))); - - // Add the combo box showing how far back in time we want to delete. - time_period_combobox_ = new views::Combobox(this); - time_period_combobox_->SetSelectedItem(profile_->GetPrefs()->GetInteger( - prefs::kDeleteTimePeriod)); - time_period_combobox_->set_listener(this); - time_period_combobox_->SetAccessibleName( - WideToUTF16Hack(time_period_label_->GetText())); - - // Create the throbber and related views. The throbber and status link are - // contained in throbber_view_, which is positioned by DialogClientView right - // next to the buttons. - throbber_view_ = new views::View(); - - GridLayout* layout = new GridLayout(throbber_view_); - throbber_view_->SetLayoutManager(layout); - views::ColumnSet* column_set = layout->AddColumnSet(0); - - // DialogClientView positions the extra view at kButtonHEdgeMargin, but we - // put all our controls at views::kPanelHorizMargin. Add a padding column so - // things line up nicely. - if (views::kPanelHorizMargin - views::kButtonHEdgeMargin > 0) { - column_set->AddPaddingColumn( - 0, views::kPanelHorizMargin - views::kButtonHEdgeMargin); - } - column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0, - GridLayout::USE_PREF, 0, 0); - column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0, - GridLayout::USE_PREF, 0, 0); - layout->StartRow(1, 0); - layout->AddView(throbber_); - layout->AddView(status_label_); -} - -void ClearBrowsingDataView2::InitControlLayout() { - GridLayout* layout = GridLayout::CreatePanel(this); - this->SetLayoutManager(layout); - - int leading_column_set_id = 0; - views::ColumnSet* column_set = layout->AddColumnSet(leading_column_set_id); - column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); - - const int indented_column_set_id = 1; - column_set = layout->AddColumnSet(indented_column_set_id); - column_set->AddPaddingColumn(0, views::Checkbox::GetTextIndent()); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, - GridLayout::USE_PREF, 0, 0); - - const int two_column_set_id = 2; - column_set = layout->AddColumnSet(two_column_set_id); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, - GridLayout::USE_PREF, 0, 0); - column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, - GridLayout::USE_PREF, 0, 0); - - const int fill_column_set_id = 3; - column_set = layout->AddColumnSet(fill_column_set_id); - column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); - - // Delete All label goes to the top left corner. - layout->StartRow(0, leading_column_set_id); - layout->AddView(delete_all_label_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - // Check-boxes go beneath it (with a little indentation). - layout->StartRow(0, indented_column_set_id); - layout->AddView(del_history_checkbox_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - layout->StartRow(0, indented_column_set_id); - layout->AddView(del_downloads_checkbox_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - layout->StartRow(0, indented_column_set_id); - layout->AddView(del_cache_checkbox_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - layout->StartRow(0, indented_column_set_id); - layout->AddView(del_cookies_checkbox_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - layout->StartRow(0, indented_column_set_id); - layout->AddView(del_passwords_checkbox_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - layout->StartRow(0, indented_column_set_id); - layout->AddView(del_form_data_checkbox_); - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); - - // Time period label is next below the combo boxes followed by time - // period combo box - layout->StartRow(0, two_column_set_id); - layout->AddView(time_period_label_); - time_period_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); - layout->AddView(time_period_combobox_, 1, 1, views::GridLayout::LEADING, - views::GridLayout::CENTER); - - layout->AddPaddingRow(0, views::kUnrelatedControlLargeVerticalSpacing); - - // Left-align the throbber - layout->StartRow(0, two_column_set_id); - layout->AddView(throbber_view_, 1, 1, - GridLayout::LEADING, GridLayout::CENTER); - - // Right-align the clear button - layout->AddView(clear_browsing_data_button_, 1, 1, - GridLayout::TRAILING, GridLayout::CENTER); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView2, ComboboxModel implementation: - -int ClearBrowsingDataView2::GetItemCount() { - return 5; -} - -string16 ClearBrowsingDataView2::GetItemAt(int index) { - switch (index) { - case 0: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_HOUR); - case 1: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DAY); - case 2: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_WEEK); - case 3: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_4WEEKS); - case 4: return l10n_util::GetStringUTF16(IDS_CLEAR_DATA_EVERYTHING); - default: NOTREACHED() << "Missing item"; - return ASCIIToUTF16("?"); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView2, views::ComboBoxListener implementation: - -void ClearBrowsingDataView2::ItemChanged(views::Combobox* sender, - int prev_index, int new_index) { - if (sender == time_period_combobox_ && prev_index != new_index) - profile_->GetPrefs()->SetInteger(prefs::kDeleteTimePeriod, new_index); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView2, views::ButtonListener implementation: - -void ClearBrowsingDataView2::ButtonPressed( - views::Button* sender, const views::Event& event) { - if (sender == clear_browsing_data_button_) { - profile_->GetPrefs()->SetBoolean(prefs::kDeleteBrowsingHistory, - del_history_checkbox_->checked() ? true : false); - profile_->GetPrefs()->SetBoolean(prefs::kDeleteDownloadHistory, - del_downloads_checkbox_->checked() ? true : false); - profile_->GetPrefs()->SetBoolean(prefs::kDeleteCache, - del_cache_checkbox_->checked() ? true : false); - profile_->GetPrefs()->SetBoolean(prefs::kDeleteCookies, - del_cookies_checkbox_->checked() ? true : false); - profile_->GetPrefs()->SetBoolean(prefs::kDeletePasswords, - del_passwords_checkbox_->checked() ? true : false); - profile_->GetPrefs()->SetBoolean(prefs::kDeleteFormData, - del_form_data_checkbox_->checked() ? true : false); - clear_data_parent_window_->StartClearingBrowsingData(); - OnDelete(); - } - - // When no checkbox is checked we should not have the action button enabled. - // This forces the button to evaluate what state they should be in. - UpdateControlEnabledState(); -} - -void ClearBrowsingDataView2::LinkActivated(views::Link* source, - int event_flags) { - Browser* browser = Browser::Create(profile_); - browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)), - GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); - browser->window()->Show(); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView2, private: - -views::Checkbox* ClearBrowsingDataView2::AddCheckbox(const std::wstring& text, - bool checked) { - views::Checkbox* checkbox = new views::Checkbox(text); - checkbox->SetChecked(checked); - checkbox->set_listener(this); - return checkbox; -} - -void ClearBrowsingDataView2::UpdateControlEnabledState() { - del_history_checkbox_->SetEnabled(!delete_in_progress_); - del_downloads_checkbox_->SetEnabled(!delete_in_progress_); - del_cache_checkbox_->SetEnabled(!delete_in_progress_); - del_cookies_checkbox_->SetEnabled(!delete_in_progress_); - del_passwords_checkbox_->SetEnabled(!delete_in_progress_); - del_form_data_checkbox_->SetEnabled(!delete_in_progress_); - time_period_combobox_->SetEnabled(!delete_in_progress_); - - status_label_->SetVisible(delete_in_progress_); - throbber_->SetVisible(delete_in_progress_); - if (delete_in_progress_) - throbber_->Start(); - else - throbber_->Stop(); - - clear_browsing_data_button_->SetEnabled( - allow_clear_ && - !delete_in_progress_ && - (del_history_checkbox_->checked() || - del_downloads_checkbox_->checked() || - del_cache_checkbox_->checked() || - del_cookies_checkbox_->checked() || - del_passwords_checkbox_->checked() || - del_form_data_checkbox_->checked())); -} - -// Convenience method that returns true if the supplied checkbox is selected -// and enabled. -static bool IsCheckBoxEnabledAndSelected(views::Checkbox* cb) { - return (cb->IsEnabled() && cb->checked()); -} - -void ClearBrowsingDataView2::OnDelete() { - int period_selected = time_period_combobox_->selected_item(); - - int remove_mask = 0; - if (IsCheckBoxEnabledAndSelected(del_history_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_HISTORY; - if (IsCheckBoxEnabledAndSelected(del_downloads_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_DOWNLOADS; - if (IsCheckBoxEnabledAndSelected(del_cookies_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_COOKIES; - if (IsCheckBoxEnabledAndSelected(del_passwords_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_PASSWORDS; - if (IsCheckBoxEnabledAndSelected(del_form_data_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA; - if (IsCheckBoxEnabledAndSelected(del_cache_checkbox_)) - remove_mask |= BrowsingDataRemover::REMOVE_CACHE; - - delete_in_progress_ = true; - UpdateControlEnabledState(); - - // BrowsingDataRemover deletes itself when done. - remover_ = new BrowsingDataRemover(profile_, - static_cast<BrowsingDataRemover::TimePeriod>(period_selected), - base::Time()); - remover_->AddObserver(this); - remover_->Remove(remove_mask); -} - -void ClearBrowsingDataView2::OnBrowsingDataRemoverDone() { - clear_data_parent_window_->StopClearingBrowsingData(); -} diff --git a/chrome/browser/ui/views/clear_browsing_data_view2.h b/chrome/browser/ui/views/clear_browsing_data_view2.h deleted file mode 100644 index cb2dacf..0000000 --- a/chrome/browser/ui/views/clear_browsing_data_view2.h +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_VIEWS_CLEAR_BROWSING_DATA_VIEW2_H_ -#define CHROME_BROWSER_UI_VIEWS_CLEAR_BROWSING_DATA_VIEW2_H_ -#pragma once - -#include "chrome/browser/browsing_data_remover.h" -#include "chrome/browser/ui/views/clear_data_view.h" -#include "ui/base/models/combobox_model.h" -#include "views/controls/button/button.h" -#include "views/controls/combobox/combobox.h" -#include "views/controls/label.h" -#include "views/controls/link.h" -#include "views/view.h" -#include "views/window/dialog_delegate.h" - -namespace views { -class Checkbox; -class Label; -class Throbber; -class Window; -} - -class ClearDataView; -class Profile; -class MessageLoop; - -//////////////////////////////////////////////////////////////////////////////// -// -// The ClearBrowsingDataView2 class is responsible for drawing the UI controls -// of the dialog that allows the user to select what to delete (history, -// downloads, etc). -// -// TODO(raz) Remove the 2 suffix when the mac/linux/chromeos versions are there -// -//////////////////////////////////////////////////////////////////////////////// -class ClearBrowsingDataView2 : public views::View, - public views::ButtonListener, - public ui::ComboboxModel, - public views::Combobox::Listener, - public BrowsingDataRemover::Observer, - public views::LinkController { - public: - ClearBrowsingDataView2(Profile* profile, ClearDataView* clear_data_view); - - virtual ~ClearBrowsingDataView2(void); - - // Initialize the controls on the dialog. - void Init(); - - // Overridden from ui::ComboboxModel: - virtual int GetItemCount(); - virtual string16 GetItemAt(int index); - - // Overridden from views::Combobox::Listener: - virtual void ItemChanged(views::Combobox* sender, int prev_index, - int new_index); - - // Overridden from views::ButtonListener: - virtual void ButtonPressed(views::Button* sender, const views::Event& event); - - // Overriden from views::LinkController: - virtual void LinkActivated(views::Link* source, int event_flags); - - // Enable/disable clearing from this tab - void SetAllowClear(bool allow); - - private: - // Adds a new check-box as a child to the view. - views::Checkbox* AddCheckbox(const std::wstring& text, bool checked); - - // Sets the controls on the UI to be enabled/disabled depending on whether we - // have a delete operation in progress or not. - void UpdateControlEnabledState(); - - // Hand off control layout to layout manger - void InitControlLayout(); - - // Starts the process of deleting the browsing data depending on what the - // user selected. - void OnDelete(); - - // Callback from BrowsingDataRemover. Closes the dialog. - virtual void OnBrowsingDataRemoverDone(); - - // Parent window, used for disabling close - ClearDataView* clear_data_parent_window_; - - // Allows for disabling the clear button from outside this view - bool allow_clear_; - - // UI elements - views::View* throbber_view_; - views::Throbber* throbber_; - views::Label* status_label_; - views::Label* delete_all_label_; - views::Checkbox* del_history_checkbox_; - views::Checkbox* del_downloads_checkbox_; - views::Checkbox* del_cache_checkbox_; - views::Checkbox* del_cookies_checkbox_; - views::Checkbox* del_passwords_checkbox_; - views::Checkbox* del_form_data_checkbox_; - views::Label* time_period_label_; - views::Combobox* time_period_combobox_; - views::NativeButton* clear_browsing_data_button_; - - // Used to signal enabled/disabled state for controls in the UI. - bool delete_in_progress_; - - Profile* profile_; - - // If non-null it means removal is in progress. BrowsingDataRemover takes care - // of deleting itself when done. - BrowsingDataRemover* remover_; - - DISALLOW_COPY_AND_ASSIGN(ClearBrowsingDataView2); -}; - -#endif // CHROME_BROWSER_UI_VIEWS_CLEAR_BROWSING_DATA_VIEW2_H_ diff --git a/chrome/browser/ui/views/clear_data_view.cc b/chrome/browser/ui/views/clear_data_view.cc deleted file mode 100644 index 82c7a34..0000000 --- a/chrome/browser/ui/views/clear_data_view.cc +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ui/views/clear_data_view.h" - -#include "base/string16.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/browser_window.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/search_engines/template_url_model.h" -#include "chrome/browser/ui/views/clear_server_data.h" -#include "grit/generated_resources.h" -#include "grit/locale_settings.h" -#include "net/url_request/url_request_context.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/insets.h" -#include "views/background.h" -#include "views/controls/button/checkbox.h" -#include "views/controls/label.h" -#include "views/controls/separator.h" -#include "views/controls/throbber.h" -#include "views/layout/grid_layout.h" -#include "views/layout/layout_constants.h" -#include "views/widget/widget.h" -#include "views/window/dialog_client_view.h" -#include "views/window/window.h" - -using views::GridLayout; - -// The combo box is vertically aligned to the 'time-period' label, which makes -// the combo box look a little too close to the check box above it when we use -// standard layout to separate them. We therefore add a little extra margin to -// the label, giving it a little breathing space. -static const int kExtraMarginForTimePeriodLabel = 3; - -//////////////////////////////////////////////////////////////////////////////// -// ClearDataView, public: - -ClearDataView::ClearDataView(Profile* profile) - : profile_(profile), - clear_server_data_tab_(NULL), - clear_browsing_data_tab_(NULL), - clearing_data_(false) { - DCHECK(profile); - Init(); -} - -void ClearDataView::Init() { - tabs_ = new views::TabbedPane; - - tabs_->SetAccessibleName(l10n_util::GetStringFUTF16( - IDS_OPTIONS_DIALOG_TITLE, - l10n_util::GetStringUTF16(IDS_OPTIONS_DIALOG_TITLE))); - AddChildView(tabs_); - - int tab_index = 0; - clear_browsing_data_tab_ = new ClearBrowsingDataView2(profile_, this); - tabs_->AddTabAtIndex( - tab_index++, - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_CHROME_DATA_TAB_LABEL)), - clear_browsing_data_tab_, false); - clear_server_data_tab_ = new ClearServerDataView(profile_, this); - tabs_->AddTabAtIndex( - tab_index++, - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_OTHER_DATA_TAB_LABEL)), - clear_server_data_tab_, false); - - tabs_->SelectTabAt(static_cast<int>(0)); -} - -void ClearDataView::StartClearingBrowsingData() { - // Only one clear can happen at a time - clear_server_data_tab_->SetAllowClear(false); - clearing_data_ = true; - window()->EnableClose(false); - GetDialogClientView()->UpdateDialogButtons(); -} - -void ClearDataView::StopClearingBrowsingData() { - window()->CloseWindow(); -} - -void ClearDataView::StartClearingServerData() { - // Only one clear can happen at a time - clear_browsing_data_tab_->SetAllowClear(false); - clearing_data_ = true; - window()->EnableClose(false); - GetDialogClientView()->UpdateDialogButtons(); -} - -void ClearDataView::SucceededClearingServerData() { - window()->CloseWindow(); -} - -void ClearDataView::FailedClearingServerData() { - clear_browsing_data_tab_->SetAllowClear(true); - clearing_data_ = false; - window()->EnableClose(false); - GetDialogClientView()->UpdateDialogButtons(); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearDataView, views::View implementation: - -gfx::Size ClearDataView::GetPreferredSize() { - gfx::Size size(tabs_->GetPreferredSize()); - size.Enlarge(2 * kDialogPadding, 2 * kDialogPadding); - return size; -} - -void ClearDataView::Layout() { - tabs_->SetBounds(kDialogPadding, kDialogPadding, - width() - (2 * kDialogPadding), - height() - (2 * kDialogPadding)); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearDataView, views::DialogDelegate implementation: - -int ClearDataView::GetDefaultDialogButton() const { - return MessageBoxFlags::DIALOGBUTTON_NONE; -} - -std::wstring ClearDataView::GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const { - DCHECK(button == MessageBoxFlags::DIALOGBUTTON_CANCEL); - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_CANCEL)); -} - -int ClearDataView::GetDialogButtons() const { - return MessageBoxFlags::DIALOGBUTTON_CANCEL; -} - - -bool ClearDataView::IsDialogButtonEnabled( - MessageBoxFlags::DialogButton button) const { - - return !clearing_data_; -} - -bool ClearDataView::CanResize() const { - return false; -} - -bool ClearDataView::CanMaximize() const { - return false; -} - -bool ClearDataView::IsAlwaysOnTop() const { - return false; -} - -bool ClearDataView::HasAlwaysOnTopMenu() const { - return false; -} - -bool ClearDataView::IsModal() const { - return true; -} - -std::wstring ClearDataView::GetWindowTitle() const { - return UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_TITLE)); -} - -views::View* ClearDataView::GetContentsView() { - return this; -} - -views::View* ClearDataView::GetInitiallyFocusedView() { - return GetDialogClientView()->cancel_button(); -} diff --git a/chrome/browser/ui/views/clear_data_view.h b/chrome/browser/ui/views/clear_data_view.h deleted file mode 100644 index 36ea4b7..0000000 --- a/chrome/browser/ui/views/clear_data_view.h +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_VIEWS_CLEAR_DATA_VIEW_H_ -#define CHROME_BROWSER_UI_VIEWS_CLEAR_DATA_VIEW_H_ -#pragma once - -#include "chrome/browser/browsing_data_remover.h" -#include "chrome/browser/ui/views/clear_browsing_data_view2.h" -#include "chrome/browser/ui/views/clear_server_data.h" -#include "views/controls/button/button.h" -#include "views/controls/label.h" -#include "views/controls/link.h" -#include "views/controls/tabbed_pane/tabbed_pane.h" -#include "views/view.h" -#include "views/window/dialog_delegate.h" - -namespace views { -class Checkbox; -class Label; -class Throbber; -class Window; -} - -class ClearBrowsingDataView2; -class ClearServerDataView; -class Profile; -class MessageLoop; - -//////////////////////////////////////////////////////////////////////////////// -// -// The ClearDataView class is responsible for drawing the window that allows -// the user to select what to delete (history, downloads, etc). It has tabs -// separating "local" data from "other" (e.g. server) data -// -//////////////////////////////////////////////////////////////////////////////// -class ClearDataView : public views::View, - public views::DialogDelegate { - public: - explicit ClearDataView(Profile* profile); - virtual ~ClearDataView(void) {} - - // Disallow the window closing while clearing either server or browsing - // data. After clear completes, close the window. - void StartClearingBrowsingData(); - void StopClearingBrowsingData(); - - void StartClearingServerData(); - void SucceededClearingServerData(); - void FailedClearingServerData(); - - // Initialize the controls on the dialog. - void Init(); - - // Overridden from views::View: - virtual gfx::Size GetPreferredSize(); - virtual void Layout(); - - // Overridden from views::DialogDelegate: - virtual int GetDefaultDialogButton() const; - virtual std::wstring GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const; - virtual int GetDialogButtons() const; - virtual bool IsDialogButtonEnabled( - MessageBoxFlags::DialogButton button) const; - virtual bool CanResize() const; - virtual bool CanMaximize() const; - virtual bool IsAlwaysOnTop() const; - virtual bool HasAlwaysOnTopMenu() const; - virtual bool IsModal() const; - virtual std::wstring GetWindowTitle() const; - virtual views::View* GetContentsView(); - virtual bool GetSizeExtraViewHeightToButtons() { return true; } - virtual views::View* GetInitiallyFocusedView(); - - private: - // Sets the controls on the UI to be enabled/disabled depending on whether we - // have a delete operation in progress or not. - void UpdateControlEnabledState(); - - // Currently clearing - bool clearing_data_; - - views::TabbedPane* tabs_; - ClearServerDataView* clear_server_data_tab_; - ClearBrowsingDataView2* clear_browsing_data_tab_; - - Profile* profile_; - - DISALLOW_COPY_AND_ASSIGN(ClearDataView); -}; - -static const int kDialogPadding = 7; - -#endif // CHROME_BROWSER_UI_VIEWS_CLEAR_DATA_VIEW_H_ - diff --git a/chrome/browser/ui/views/clear_server_data.cc b/chrome/browser/ui/views/clear_server_data.cc deleted file mode 100644 index 7d10151..0000000 --- a/chrome/browser/ui/views/clear_server_data.cc +++ /dev/null @@ -1,345 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ui/views/clear_server_data.h" - -#include "base/command_line.h" -#include "base/string16.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/browser_window.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/search_engines/template_url_model.h" -#include "chrome/browser/sync/profile_sync_service.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/common/chrome_switches.h" -#include "grit/generated_resources.h" -#include "grit/locale_settings.h" -#include "net/url_request/url_request_context.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/base/resource/resource_bundle.h" -#include "ui/gfx/insets.h" -#include "views/background.h" -#include "views/controls/button/checkbox.h" -#include "views/controls/label.h" -#include "views/controls/separator.h" -#include "views/controls/throbber.h" -#include "views/layout/grid_layout.h" -#include "views/layout/layout_constants.h" -#include "views/widget/widget.h" -#include "views/window/dialog_client_view.h" -#include "views/window/window.h" - -using views::GridLayout; -using views::ColumnSet; - -// The combo box is vertically aligned to the 'time-period' label, which makes -// the combo box look a little too close to the check box above it when we use -// standard layout to separate them. We therefore add a little extra margin to -// the label, giving it a little breathing space. -static const int kExtraMarginForTimePeriodLabel = 3; - -//////////////////////////////////////////////////////////////////////////////// -// ClearServerDataView, public: - -ClearServerDataView::ClearServerDataView(Profile* profile, - ClearDataView* clear_data_view) - : profile_(profile), - clear_data_parent_window_(clear_data_view), - allow_clear_(true) { - DCHECK(profile); - DCHECK(clear_data_view); - - // Always show preferences for the original profile. Most state when off - // the record comes from the original profile, but we explicitly use - // the original profile to avoid potential problems. - profile_ = profile->GetOriginalProfile(); - sync_service_ = profile_->GetProfileSyncService(); - - if (NULL != sync_service_) { - sync_service_->ResetClearServerDataState(); - sync_service_->AddObserver(this); - } - - Init(); - InitControlLayout(); - InitControlVisibility(); -} - -ClearServerDataView::~ClearServerDataView(void) { - if (NULL != sync_service_) { - sync_service_->RemoveObserver(this); - } -} - -void ClearServerDataView::Init() { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - gfx::Font title_font = - rb.GetFont(ResourceBundle::BaseFont).DeriveFont(0, gfx::Font::BOLD); - - flash_title_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_ADOBE_FLASH_TITLE))); - flash_title_label_->SetFont(title_font); - - flash_description_label_= new views::Label(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_CLEAR_DATA_ADOBE_FLASH_DESCRIPTION))); - flash_link_ = new views::Link( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_FLASH_STORAGE_SETTINGS))); - flash_link_->SetController(this); - - chrome_sync_title_label_= new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_CHROME_SYNC_TITLE))); - chrome_sync_title_label_->SetFont(title_font); - - chrome_sync_description_label_ = new views::Label(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_CLEAR_DATA_CLEAR_SERVER_DATA_DESCRIPTION))); - - clear_server_data_button_= new views::NativeButton( - this, - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_CLEAR_BUTTON))); - - dashboard_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DASHBOARD_DESCRIPTION))); - - dashboard_link_ = new views::Link(); - dashboard_link_->SetController(this); - dashboard_link_->SetText(UTF16ToWide( - l10n_util::GetStringUTF16(IDS_SYNC_PRIVACY_DASHBOARD_LINK_LABEL))); - - status_label_ = new views::Label( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_DELETING))); - throbber_ = new views::Throbber(50, true); -} - -void ClearServerDataView::InitControlLayout() { - GridLayout* layout = GridLayout::CreatePanel(this); - this->SetLayoutManager(layout); - - int centered_column_set_id = 0; - ColumnSet * column_set = layout->AddColumnSet(centered_column_set_id); - column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); - - int left_aligned_column_set_id = 1; - column_set = layout->AddColumnSet(left_aligned_column_set_id); - column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); - - const int three_column_set_id = 2; - column_set = layout->AddColumnSet(three_column_set_id); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, - GridLayout::USE_PREF, 0, 0); - column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, - GridLayout::USE_PREF, 0, 0); - column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, - GridLayout::USE_PREF, 0, 0); - - AddWrappingLabelRow(layout, flash_title_label_, - centered_column_set_id, true); - AddWrappingLabelRow(layout, flash_description_label_, - centered_column_set_id, true); - - layout->StartRow(0, left_aligned_column_set_id); - layout->AddView(flash_link_); - layout->AddPaddingRow(0, views::kPanelVertMargin); - - AddWrappingLabelRow(layout, chrome_sync_title_label_, - centered_column_set_id, true); - AddWrappingLabelRow(layout, chrome_sync_description_label_, - centered_column_set_id, true); - - layout->StartRow(0, three_column_set_id); - layout->AddView(clear_server_data_button_, 1, 1, - GridLayout::LEADING, GridLayout::CENTER); - layout->AddView(status_label_, 1, 1, - GridLayout::LEADING, GridLayout::CENTER); - layout->AddView(throbber_, 1, 1, - GridLayout::TRAILING, GridLayout::CENTER); - layout->AddPaddingRow(0, views::kPanelVertMargin); - - AddWrappingLabelRow(layout, dashboard_label_, centered_column_set_id, true); - - layout->StartRow(0, left_aligned_column_set_id); - layout->AddView(dashboard_link_); -} - -void ClearServerDataView::InitControlVisibility() { - bool allow_clear_server_data_ui = - CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableClearServerData); - - // Hide progress indicators - throbber_->SetVisible(false); - status_label_->SetVisible(false); - - // Only show the sync portion if not behind the flag - chrome_sync_title_label_->SetVisible(allow_clear_server_data_ui); - chrome_sync_description_label_->SetVisible(allow_clear_server_data_ui); - clear_server_data_button_->SetVisible(allow_clear_server_data_ui); - dashboard_label_->SetVisible(allow_clear_server_data_ui); - dashboard_link_->SetVisible(allow_clear_server_data_ui); - - // Enable our clear button, set false for delete_in_progress - UpdateClearButtonEnabledState(false); -} - -void ClearServerDataView::SetAllowClear(bool allow) { - allow_clear_ = allow; - UpdateControlEnabledState(); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearServerDataView, views::View implementation: - -void ClearServerDataView::AddWrappingLabelRow(views::GridLayout* layout, - views::Label* label, - int id, - bool related_follows) { - label->SetMultiLine(true); - label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); - layout->StartRow(0, id); - layout->AddView(label); - AddSpacing(layout, related_follows); -} - -void ClearServerDataView::AddSpacing(views::GridLayout* layout, - bool related_follows) { - layout->AddPaddingRow( - 0, related_follows ? views::kRelatedControlVerticalSpacing - : views::kUnrelatedControlVerticalSpacing); -} - -gfx::Size ClearServerDataView::GetPreferredSize() { - // If we didn't return a preferred size, the containing view auto-sizes to - // the width of the narrowest button, which is not what we want - return gfx::Size(views::Window::GetLocalizedContentsSize( - IDS_CLEARDATA_DIALOG_WIDTH_CHARS, - IDS_CLEARDATA_DIALOG_HEIGHT_LINES)); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearServerDataView, views::ButtonListener implementation: - -void ClearServerDataView::ButtonPressed( - views::Button* sender, const views::Event& event) { - - if (sender == clear_server_data_button_) { - // Protect against the unlikely case where the server received a - // message, and the syncer syncs and resets itself before the - // user tries pressing the Clear button in this dialog again. - // TODO(raz) Confirm whether we have an issue here - if (sync_service_->HasSyncSetupCompleted()) { - ConfirmMessageBoxDialog::Run( - GetWindow()->GetNativeWindow(), - this, - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CONFIRM_CLEAR_DESCRIPTION)), - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CONFIRM_CLEAR_TITLE))); - } - } - - UpdateControlEnabledState(); -} - -void ClearServerDataView::LinkActivated(views::Link* source, - int event_flags) { - Browser* browser = Browser::Create(profile_); - if (source == flash_link_) { - browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)), - GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); - browser->window()->Show(); - } else { - browser->OpenPrivacyDashboardTabAndActivate(); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearServerDataView, ConfirmMessageBoxObserver implementation: - -void ClearServerDataView::OnConfirmMessageAccept() { - clear_data_parent_window_->StartClearingServerData(); - sync_service_->ClearServerData(); - UpdateControlEnabledState(); -} - -void ClearServerDataView::OnConfirmMessageCancel() { - UpdateControlEnabledState(); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearServerDataView, ProfileSyncServiceObserver implementation: - -void ClearServerDataView::OnStateChanged() { - // Note that we are listening for all notifications here. Clearing from - // another browser should cause the "clear" button to go gray (if a - // notification nudges the syncer, causing OnStateChanged to be called with - // sync disabled) - UpdateControlEnabledState(); -} - -//////////////////////////////////////////////////////////////////////////////// -// ClearServerDataView, private: - -void ClearServerDataView::UpdateControlEnabledState() { - bool delete_in_progress = false; - - // We only want to call Suceeded/FailedClearingServerData once, not every - // time the view is refreshed. As such, on success/failure we handle that - // state and immediately reset things back to CLEAR_NOT_STARTED. - ProfileSyncService::ClearServerDataState clear_state = - profile_->GetProfileSyncService()->GetClearServerDataState(); - profile_->GetProfileSyncService()->ResetClearServerDataState(); - - if (NULL != sync_service_) { - sync_service_->ResetClearServerDataState(); - } - - switch (clear_state) { - case ProfileSyncService::CLEAR_NOT_STARTED: - // We can get here when we first start and after a failed clear (which - // does not close the tab), do nothing. - break; - case ProfileSyncService::CLEAR_CLEARING: - // Clearing buttons on all tabs are disabled at this - // point, throbber is going - status_label_->SetText( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_SENDING))); - status_label_->SetVisible(true); - delete_in_progress = true; - break; - case ProfileSyncService::CLEAR_FAILED: - // Show an error and reallow clearing - clear_data_parent_window_->FailedClearingServerData(); - status_label_->SetText( - UTF16ToWide(l10n_util::GetStringUTF16(IDS_CLEAR_DATA_ERROR))); - status_label_->SetVisible(true); - delete_in_progress = false; - break; - case ProfileSyncService::CLEAR_SUCCEEDED: - // Close the dialog box, success! - status_label_->SetVisible(false); - delete_in_progress = false; - clear_data_parent_window_->SucceededClearingServerData(); - break; - } - - // allow_clear can be false when a local browsing data clear is happening - // from the neighboring tab. delete_in_progress means that a clear is - // pending in the current tab. - UpdateClearButtonEnabledState(delete_in_progress); - - throbber_->SetVisible(delete_in_progress); - if (delete_in_progress) - throbber_->Start(); - else - throbber_->Stop(); -} - -void ClearServerDataView::UpdateClearButtonEnabledState( - bool delete_in_progress) { - this->clear_server_data_button_->SetEnabled( - sync_service_ != NULL && - sync_service_->HasSyncSetupCompleted() && - !delete_in_progress && allow_clear_); -} diff --git a/chrome/browser/ui/views/clear_server_data.h b/chrome/browser/ui/views/clear_server_data.h deleted file mode 100644 index c80d8b4..0000000 --- a/chrome/browser/ui/views/clear_server_data.h +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_VIEWS_CLEAR_SERVER_DATA_H_ -#define CHROME_BROWSER_UI_VIEWS_CLEAR_SERVER_DATA_H_ -#pragma once - -#include "chrome/browser/browsing_data_remover.h" -#include "chrome/browser/sync/profile_sync_service.h" -#include "chrome/browser/ui/views/clear_data_view.h" -#include "chrome/browser/ui/views/confirm_message_box_dialog.h" -#include "views/controls/button/button.h" -#include "views/controls/label.h" -#include "views/controls/link.h" -#include "views/layout/grid_layout.h" -#include "views/view.h" -#include "views/window/dialog_delegate.h" - -namespace views { -class Checkbox; -class ColumnSet; -class GridLayout; -class Label; -class Throbber; -class Window; -} - -class ClearDataView; -class Profile; -class MessageLoop; - -//////////////////////////////////////////////////////////////////////////////// -// -// The ClearServerData class is responsible for drawing the UI controls of the -// dialog that allows the user to delete non-local data (e.g. Chrome Sync data) -// -//////////////////////////////////////////////////////////////////////////////// -class ClearServerDataView : public views::View, - public views::ButtonListener, - public views::LinkController, - public ProfileSyncServiceObserver, - public ConfirmMessageBoxObserver { - public: - ClearServerDataView(Profile* profile, ClearDataView* clear_data_view); - - virtual ~ClearServerDataView(); - - // Initialize the controls on the dialog. - void Init(); - - // Overridden from views::View: - virtual gfx::Size GetPreferredSize(); - - // Overridden from views::ButtonListener: - virtual void ButtonPressed(views::Button* sender, const views::Event& event); - - // Overriden from views::LinkController: - virtual void LinkActivated(views::Link* source, int event_flags); - - // Disable clearing from this tab - void SetAllowClear(bool allow); - - private: - void InitControlLayout(); - void InitControlVisibility(); - - void AddSpacing(views::GridLayout* layout, - bool related_follows); - - void AddWrappingLabelRow(views::GridLayout* layout, - views::Label* label, - int id, - bool related_follows); - - // Adds a new check-box as a child to the view. - views::Checkbox* AddCheckbox(const std::wstring& text, bool checked); - - // Sets the controls on the UI to be enabled/disabled depending on whether we - // have a delete operation in progress or not. - void UpdateControlEnabledState(); - - // Enables/disables the clear button as appropriate - void UpdateClearButtonEnabledState(bool delete_in_progress); - - // Starts the process of deleting the browsing data depending on what the - // user selected. - void OnDelete(); - - // ProfileSyncServiceObserver method. - virtual void OnStateChanged(); - - // ProfileSyncServiceObserver - virtual void OnConfirmMessageAccept(); - virtual void OnConfirmMessageCancel(); - - ClearDataView* clear_data_parent_window_; - Profile* profile_; - ProfileSyncService* sync_service_; - bool allow_clear_; - - views::Label* flash_title_label_; - views::Label* flash_description_label_; - views::Label* chrome_sync_title_label_; - views::Label* chrome_sync_description_label_; - views::Label* dashboard_label_; - views::Label* status_label_; - views::Link* flash_link_; - views::Link* dashboard_link_; - views::NativeButton* clear_server_data_button_; - views::Throbber* throbber_; - - DISALLOW_COPY_AND_ASSIGN(ClearServerDataView); -}; - -#endif // CHROME_BROWSER_UI_VIEWS_CLEAR_SERVER_DATA_H_ - diff --git a/chrome/browser/ui/views/dialog_stubs_gtk.cc b/chrome/browser/ui/views/dialog_stubs_gtk.cc index 00cd889..d1eb1a7 100644 --- a/chrome/browser/ui/views/dialog_stubs_gtk.cc +++ b/chrome/browser/ui/views/dialog_stubs_gtk.cc @@ -10,7 +10,6 @@ #include "base/logging.h" #include "chrome/browser/fonts_languages_window.h" #include "chrome/browser/ui/gtk/about_chrome_dialog.h" -#include "chrome/browser/ui/gtk/clear_browsing_data_dialog_gtk.h" #include "chrome/browser/ui/gtk/collected_cookies_gtk.h" #include "chrome/browser/ui/gtk/edit_search_engine_dialog.h" #include "chrome/browser/ui/gtk/keyword_editor_view.h" @@ -24,12 +23,6 @@ namespace browser { -void ShowClearBrowsingDataView(views::Widget* parent, - Profile* profile) { - ClearBrowsingDataDialogGtk::Show(GTK_WINDOW(parent->GetNativeView()), - profile); -} - void ShowKeywordEditorView(Profile* profile) { KeywordEditorView::Show(profile); } diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index d958d47..df6cbe7 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -2536,8 +2536,6 @@ 'browser/ui/gtk/certificate_viewer.h', 'browser/ui/gtk/chrome_gtk_frame.cc', 'browser/ui/gtk/chrome_gtk_frame.h', - 'browser/ui/gtk/clear_browsing_data_dialog_gtk.cc', - 'browser/ui/gtk/clear_browsing_data_dialog_gtk.h', 'browser/ui/gtk/collected_cookies_gtk.cc', 'browser/ui/gtk/collected_cookies_gtk.h', 'browser/ui/gtk/constrained_html_delegate_gtk.cc', @@ -2822,14 +2820,6 @@ 'browser/ui/views/certificate_viewer_win.cc', 'browser/ui/views/chrome_views_delegate.cc', 'browser/ui/views/chrome_views_delegate.h', - 'browser/ui/views/clear_browsing_data_view.cc', - 'browser/ui/views/clear_browsing_data_view.h', - 'browser/ui/views/clear_browsing_data_view2.cc', - 'browser/ui/views/clear_browsing_data_view2.h', - 'browser/ui/views/clear_data_view.cc', - 'browser/ui/views/clear_data_view.h', - 'browser/ui/views/clear_server_data.cc', - 'browser/ui/views/clear_server_data.h', 'browser/ui/views/collected_cookies_win.cc', 'browser/ui/views/collected_cookies_win.h', 'browser/ui/views/confirm_message_box_dialog.cc', @@ -3707,8 +3697,6 @@ ['include', '^browser/ui/gtk/certificate_viewer.h'], ['include', '^browser/ui/gtk/chrome_gtk_frame.cc'], ['include', '^browser/ui/gtk/chrome_gtk_frame.h'], - ['include', '^browser/ui/gtk/clear_browsing_data_dialog_gtk.cc'], - ['include', '^browser/ui/gtk/clear_browsing_data_dialog_gtk.h'], ['include', '^browser/ui/gtk/collected_cookies_gtk.cc'], ['include', '^browser/ui/gtk/collected_cookies_gtk.h'], ['include', '^browser/ui/gtk/constrained_window_gtk.cc'], @@ -3798,8 +3786,6 @@ ['include', '^browser/ui/views/bubble_border.cc'], ['include', '^browser/ui/views/bubble_border.h'], ['include', '^browser/ui/views/chrome_views_delegate.cc'], - ['include', '^browser/ui/views/clear_browsing_data_view.cc'], - ['include', '^browser/ui/views/clear_browsing_data_view.h'], ['include', '^browser/ui/views/constrained_html_delegate_gtk.cc'], ['include', '^browser/ui/views/content_setting_bubble_contents.cc'], ['include', '^browser/ui/views/content_setting_bubble_contents.h'], |