| Index: chrome/browser/gtk/options/cookies_view.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/options/cookies_view.cc (revision 36995)
|
| +++ chrome/browser/gtk/options/cookies_view.cc (working copy)
|
| @@ -35,8 +35,8 @@
|
| // The currently open cookie manager, if any.
|
| CookiesView* instance_ = NULL;
|
|
|
| -void InitCookieDetailStyle(GtkWidget* entry, GtkStyle* label_style,
|
| - GtkStyle* dialog_style) {
|
| +void InitBrowserDetailStyle(GtkWidget* entry, GtkStyle* label_style,
|
| + GtkStyle* dialog_style) {
|
| gtk_widget_modify_fg(entry, GTK_STATE_NORMAL,
|
| &label_style->fg[GTK_STATE_NORMAL]);
|
| gtk_widget_modify_fg(entry, GTK_STATE_INSENSITIVE,
|
| @@ -57,20 +57,26 @@
|
| }
|
|
|
| // static
|
| -void CookiesView::Show(Profile* profile) {
|
| +void CookiesView::Show(
|
| + Profile* profile,
|
| + BrowsingDataLocalStorageHelper* browsing_data_local_storage_helper) {
|
| DCHECK(profile);
|
| + DCHECK(browsing_data_local_storage_helper);
|
|
|
| // If there's already an existing editor window, activate it.
|
| if (instance_) {
|
| gtk_window_present(GTK_WINDOW(instance_->dialog_));
|
| } else {
|
| - instance_ = new CookiesView(profile);
|
| + instance_ = new CookiesView(profile, browsing_data_local_storage_helper);
|
| instance_->InitStylesAndShow();
|
| }
|
| }
|
|
|
| -CookiesView::CookiesView(Profile* profile)
|
| +CookiesView::CookiesView(
|
| + Profile* profile,
|
| + BrowsingDataLocalStorageHelper* browsing_data_local_storage_helper)
|
| : profile_(profile),
|
| + browsing_data_local_storage_helper_(browsing_data_local_storage_helper),
|
| filter_update_factory_(this) {
|
| Init();
|
| }
|
| @@ -160,7 +166,8 @@
|
| GTK_SHADOW_ETCHED_IN);
|
| gtk_box_pack_start(GTK_BOX(cookie_list_vbox), scroll_window, TRUE, TRUE, 0);
|
|
|
| - cookies_tree_model_.reset(new CookiesTreeModel(profile_));
|
| + cookies_tree_model_.reset(new CookiesTreeModel(
|
| + profile_, browsing_data_local_storage_helper_));
|
| cookies_tree_adapter_.reset(
|
| new gtk_tree::TreeAdapter(this, cookies_tree_model_.get()));
|
| tree_ = gtk_tree_view_new_with_model(
|
| @@ -193,31 +200,54 @@
|
| G_CALLBACK(OnSelectionChanged), this);
|
|
|
| // Cookie details.
|
| - GtkWidget* details_frame = gtk_frame_new(NULL);
|
| - gtk_frame_set_shadow_type(GTK_FRAME(details_frame), GTK_SHADOW_ETCHED_IN);
|
| - gtk_box_pack_start(GTK_BOX(cookie_list_vbox), details_frame,
|
| + GtkWidget* cookie_details_frame = gtk_frame_new(NULL);
|
| + gtk_frame_set_shadow_type(GTK_FRAME(cookie_details_frame),
|
| + GTK_SHADOW_ETCHED_IN);
|
| + gtk_box_pack_start(GTK_BOX(cookie_list_vbox), cookie_details_frame,
|
| FALSE, FALSE, 0);
|
| cookie_details_table_ = gtk_table_new(7, 2, FALSE);
|
| - gtk_container_add(GTK_CONTAINER(details_frame), cookie_details_table_);
|
| + gtk_container_add(GTK_CONTAINER(cookie_details_frame), cookie_details_table_);
|
| gtk_table_set_col_spacing(GTK_TABLE(cookie_details_table_), 0,
|
| gtk_util::kLabelSpacing);
|
|
|
| int row = 0;
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_NAME_LABEL,
|
| - &cookie_name_entry_);
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_CONTENT_LABEL,
|
| - &cookie_content_entry_);
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
|
| - &cookie_domain_entry_);
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_PATH_LABEL,
|
| - &cookie_path_entry_);
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_SENDFOR_LABEL,
|
| - &cookie_send_for_entry_);
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_CREATED_LABEL,
|
| - &cookie_created_entry_);
|
| - InitCookieDetailRow(row++, IDS_COOKIES_COOKIE_EXPIRES_LABEL,
|
| - &cookie_expires_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_NAME_LABEL,
|
| + cookie_details_table_, &cookie_name_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_CONTENT_LABEL,
|
| + cookie_details_table_, &cookie_content_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
|
| + cookie_details_table_, &cookie_domain_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_PATH_LABEL,
|
| + cookie_details_table_, &cookie_path_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_SENDFOR_LABEL,
|
| + cookie_details_table_, &cookie_send_for_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_CREATED_LABEL,
|
| + cookie_details_table_, &cookie_created_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_COOKIE_EXPIRES_LABEL,
|
| + cookie_details_table_, &cookie_expires_entry_);
|
|
|
| + // Local storage details.
|
| + GtkWidget* local_storage_details_frame = gtk_frame_new(NULL);
|
| + gtk_frame_set_shadow_type(GTK_FRAME(local_storage_details_frame),
|
| + GTK_SHADOW_ETCHED_IN);
|
| + gtk_box_pack_start(GTK_BOX(cookie_list_vbox), local_storage_details_frame,
|
| + FALSE, FALSE, 0);
|
| + local_storage_details_table_ = gtk_table_new(3, 2, FALSE);
|
| + gtk_container_add(GTK_CONTAINER(local_storage_details_frame),
|
| + local_storage_details_table_);
|
| + gtk_table_set_col_spacing(GTK_TABLE(local_storage_details_table_), 0,
|
| + gtk_util::kLabelSpacing);
|
| +
|
| + row = 0;
|
| + InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL,
|
| + local_storage_details_table_, &local_storage_origin_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
|
| + local_storage_details_table_, &local_storage_size_entry_);
|
| + InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
|
| + local_storage_details_table_,
|
| + &local_storage_last_modified_entry_);
|
| +
|
| + UpdateVisibleDetailedInfo(cookie_details_table_);
|
| // Populate the view.
|
| cookies_tree_adapter_->Init();
|
| SetInitialTreeState();
|
| @@ -231,30 +261,38 @@
|
| GtkStyle* label_style = gtk_widget_get_style(description_label_);
|
| GtkStyle* dialog_style = gtk_widget_get_style(dialog_);
|
|
|
| - InitCookieDetailStyle(cookie_name_entry_, label_style, dialog_style);
|
| - InitCookieDetailStyle(cookie_content_entry_, label_style, dialog_style);
|
| - InitCookieDetailStyle(cookie_domain_entry_, label_style, dialog_style);
|
| - InitCookieDetailStyle(cookie_path_entry_, label_style, dialog_style);
|
| - InitCookieDetailStyle(cookie_send_for_entry_, label_style, dialog_style);
|
| - InitCookieDetailStyle(cookie_created_entry_, label_style, dialog_style);
|
| - InitCookieDetailStyle(cookie_expires_entry_, label_style, dialog_style);
|
| + // Cookie details.
|
| + InitBrowserDetailStyle(cookie_name_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(cookie_content_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(cookie_domain_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(cookie_path_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(cookie_send_for_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(cookie_created_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(cookie_expires_entry_, label_style, dialog_style);
|
|
|
| + // Local storage details.
|
| + InitBrowserDetailStyle(local_storage_origin_entry_, label_style,
|
| + dialog_style);
|
| + InitBrowserDetailStyle(local_storage_size_entry_, label_style, dialog_style);
|
| + InitBrowserDetailStyle(local_storage_last_modified_entry_, label_style,
|
| + dialog_style);
|
| +
|
| gtk_widget_show_all(dialog_);
|
| }
|
|
|
| -void CookiesView::InitCookieDetailRow(int row, int label_id,
|
| - GtkWidget** entry) {
|
| +void CookiesView::InitDetailRow(int row, int label_id,
|
| + GtkWidget* details_table, GtkWidget** entry) {
|
| GtkWidget* name_label = gtk_label_new(
|
| l10n_util::GetStringUTF8(label_id).c_str());
|
| gtk_misc_set_alignment(GTK_MISC(name_label), 1, 0.5);
|
| - gtk_table_attach(GTK_TABLE(cookie_details_table_), name_label,
|
| + gtk_table_attach(GTK_TABLE(details_table), name_label,
|
| 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
|
|
|
| *entry = gtk_entry_new();
|
|
|
| gtk_entry_set_editable(GTK_ENTRY(*entry), FALSE);
|
| gtk_entry_set_has_frame(GTK_ENTRY(*entry), FALSE);
|
| - gtk_table_attach_defaults(GTK_TABLE(cookie_details_table_), *entry,
|
| + gtk_table_attach_defaults(GTK_TABLE(details_table), *entry,
|
| 1, 2, row, row + 1);
|
| }
|
|
|
| @@ -279,9 +317,15 @@
|
| static_cast<CookieTreeNode*>(
|
| cookies_tree_adapter_->GetNode(&iter))->GetDetailedInfo();
|
| if (detailed_info.node_type == CookieTreeNode::DetailedInfo::TYPE_COOKIE) {
|
| + UpdateVisibleDetailedInfo(cookie_details_table_);
|
| PopulateCookieDetails(detailed_info.cookie->first,
|
| detailed_info.cookie->second);
|
| + } else if (detailed_info.node_type ==
|
| + CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE) {
|
| + UpdateVisibleDetailedInfo(local_storage_details_table_);
|
| + PopulateLocalStorageDetails(*detailed_info.local_storage_info);
|
| } else {
|
| + UpdateVisibleDetailedInfo(cookie_details_table_);
|
| ClearCookieDetails();
|
| }
|
| } else {
|
| @@ -299,6 +343,12 @@
|
| gtk_widget_set_sensitive(cookie_expires_entry_, enabled);
|
| }
|
|
|
| +void CookiesView::SetLocalStorageDetailsSensitivity(gboolean enabled) {
|
| + gtk_widget_set_sensitive(local_storage_origin_entry_, enabled);
|
| + gtk_widget_set_sensitive(local_storage_size_entry_, enabled);
|
| + gtk_widget_set_sensitive(local_storage_last_modified_entry_, enabled);
|
| +}
|
| +
|
| void CookiesView::PopulateCookieDetails(
|
| const std::string& domain,
|
| const net::CookieMonster::CanonicalCookie& cookie) {
|
| @@ -326,6 +376,22 @@
|
| SetCookieDetailsSensitivity(TRUE);
|
| }
|
|
|
| +void CookiesView::PopulateLocalStorageDetails(
|
| + const BrowsingDataLocalStorageHelper::LocalStorageInfo&
|
| + local_storage_info) {
|
| + gtk_entry_set_text(GTK_ENTRY(local_storage_origin_entry_),
|
| + local_storage_info.origin.c_str());
|
| + gtk_entry_set_text(GTK_ENTRY(local_storage_size_entry_),
|
| + WideToUTF8(FormatBytes(
|
| + local_storage_info.size,
|
| + GetByteDisplayUnits(local_storage_info.size),
|
| + true)).c_str());
|
| + gtk_entry_set_text(GTK_ENTRY(local_storage_last_modified_entry_),
|
| + WideToUTF8(base::TimeFormatFriendlyDateAndTime(
|
| + local_storage_info.last_modified)).c_str());
|
| + SetLocalStorageDetailsSensitivity(TRUE);
|
| +}
|
| +
|
| void CookiesView::ClearCookieDetails() {
|
| std::string no_cookie =
|
| l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_NONESELECTED);
|
| @@ -387,6 +453,7 @@
|
| window->RemoveSelectedItems();
|
| } else if (response_id == RESPONSE_REMOVE_ALL) {
|
| window->cookies_tree_model_->DeleteAllCookies();
|
| + window->browsing_data_local_storage_helper_->DeleteAllLocalStorageFiles();
|
| } else {
|
| gtk_widget_destroy(window->dialog_);
|
| }
|
| @@ -437,6 +504,21 @@
|
| }
|
| }
|
|
|
| +void CookiesView::UpdateVisibleDetailedInfo(GtkWidget* table) {
|
| + // Toggle the parent (the table frame) visibility and sensitivity.
|
| + gtk_widget_show(gtk_widget_get_parent(table));
|
| + // Toggle the other tables.
|
| + if (table == cookie_details_table_) {
|
| + SetCookieDetailsSensitivity(true);
|
| + SetLocalStorageDetailsSensitivity(false);
|
| + gtk_widget_hide(gtk_widget_get_parent(local_storage_details_table_));
|
| + } else if (table == local_storage_details_table_) {
|
| + SetCookieDetailsSensitivity(false);
|
| + SetLocalStorageDetailsSensitivity(true);
|
| + gtk_widget_hide(gtk_widget_get_parent(cookie_details_table_));
|
| + }
|
| +}
|
| +
|
| // static
|
| void CookiesView::OnFilterEntryActivated(GtkEntry* entry, CookiesView* window) {
|
| window->filter_update_factory_.RevokeAll();
|
|
|