15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/gtk/gtk_chrome_cookie_view.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/time_formatting.h"
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/indexed_db_context.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/canonical_cookie.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/parsed_cookie.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/gtk/gtk_hig_constants.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/text/bytes_formatting.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InitBrowserDetailStyle(GtkWidget* entry, GtkStyle* label_style,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            GtkStyle* dialog_style) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_modify_fg(entry, GTK_STATE_NORMAL,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       &label_style->fg[GTK_STATE_NORMAL]);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_modify_fg(entry, GTK_STATE_INSENSITIVE,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       &label_style->fg[GTK_STATE_INSENSITIVE]);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // GTK_NO_WINDOW widgets like GtkLabel don't draw their own background, so we
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // combine the normal or insensitive foreground of the label style with the
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // normal background of the window style to achieve the "normal label" and
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // "insensitive label" colors.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_modify_base(entry, GTK_STATE_NORMAL,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         &dialog_style->bg[GTK_STATE_NORMAL]);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_modify_base(entry, GTK_STATE_INSENSITIVE,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         &dialog_style->bg[GTK_STATE_NORMAL]);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GtkWidget* InitRowLabel(int row, int label_id, GtkWidget* details_table) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* name_label = gtk_label_new(
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      l10n_util::GetStringUTF8(label_id).c_str());
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_misc_set_alignment(GTK_MISC(name_label), 1, 0.5);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_attach(GTK_TABLE(details_table), name_label,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return name_label;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GtkWidget* InitDetailRow(int row, int label_id,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         GtkWidget* details_table, GtkWidget** entry) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* name_label = InitRowLabel(row, label_id, details_table);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *entry = gtk_entry_new();
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_editable_set_editable(GTK_EDITABLE(*entry), FALSE);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_has_frame(GTK_ENTRY(*entry), FALSE);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_attach_defaults(GTK_TABLE(details_table), *entry,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            1, 2, row, row + 1);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return name_label;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GtkWidget* InitComboboxRow(int row, int label_id,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           GtkWidget* details_table,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           GtkWidget** combobox,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           GtkListStore** store) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* name_label = InitRowLabel(row, label_id, details_table);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *store = gtk_list_store_new(1, G_TYPE_STRING);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *combobox = gtk_combo_box_new_with_model(GTK_TREE_MODEL(*store));
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  g_object_unref(*store);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkCellRenderer* cell = gtk_cell_renderer_text_new();
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(*combobox), cell, TRUE);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(*combobox), cell,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  "text", 0, NULL);
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* hbox = gtk_hbox_new(FALSE, 0);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_box_pack_start(GTK_BOX(hbox), *combobox, FALSE, FALSE, 0);
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_attach_defaults(GTK_TABLE(details_table), hbox,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            1, 2, row, row + 1);
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return name_label;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InitStyles(GtkChromeCookieView *self) {
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkStyle* label_style = gtk_widget_get_style(self->first_label_);
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkStyle* dialog_style = gtk_widget_get_style(GTK_WIDGET(self));
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cookie details.
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->cookie_name_entry_, label_style, dialog_style);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->cookie_content_entry_, label_style,
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->cookie_domain_entry_, label_style, dialog_style);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->cookie_path_entry_, label_style, dialog_style);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->cookie_send_for_entry_, label_style,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->cookie_created_entry_, label_style,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (self->cookie_expires_entry_) {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    InitBrowserDetailStyle(self->cookie_expires_entry_, label_style,
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           dialog_style);
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Database details.
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_name_entry_, label_style, dialog_style);
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_description_entry_, label_style,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_size_entry_, label_style, dialog_style);
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_last_modified_entry_, label_style,
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Local storage details.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->local_storage_origin_entry_, label_style,
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->local_storage_size_entry_, label_style,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->local_storage_last_modified_entry_, label_style,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // AppCache details.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->appcache_manifest_entry_, label_style,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->appcache_size_entry_, label_style, dialog_style);
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->appcache_created_entry_, label_style,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->appcache_last_accessed_entry_, label_style,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Local storage item.
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->local_storage_item_origin_entry_, label_style,
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->local_storage_item_key_entry_, label_style,
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->local_storage_item_value_entry_, label_style,
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Database accessed item.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_accessed_origin_entry_, label_style,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_accessed_name_entry_, label_style,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_accessed_description_entry_,
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         label_style, dialog_style);
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->database_accessed_size_entry_, label_style,
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // AppCache created item.
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitBrowserDetailStyle(self->appcache_created_manifest_entry_, label_style,
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         dialog_style);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetCookieDetailsSensitivity(GtkChromeCookieView *self,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 gboolean enabled) {
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->cookie_name_entry_, enabled);
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->cookie_content_entry_, enabled);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->cookie_domain_entry_, enabled);
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->cookie_path_entry_, enabled);
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->cookie_send_for_entry_, enabled);
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->cookie_created_entry_, enabled);
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (self->cookie_expires_entry_)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_set_sensitive(self->cookie_expires_entry_, enabled);
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_set_sensitive(self->cookie_expires_combobox_, enabled);
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetDatabaseDetailsSensitivity(GtkChromeCookieView *self,
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   gboolean enabled) {
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_name_entry_, enabled);
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_description_entry_, enabled);
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_size_entry_, enabled);
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_last_modified_entry_, enabled);
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetLocalStorageDetailsSensitivity(GtkChromeCookieView *self,
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       gboolean enabled) {
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->local_storage_origin_entry_, enabled);
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->local_storage_size_entry_, enabled);
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->local_storage_last_modified_entry_, enabled);
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetAppCacheDetailsSensitivity(GtkChromeCookieView *self,
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   gboolean enabled) {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->appcache_manifest_entry_, enabled);
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->appcache_size_entry_, enabled);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->appcache_created_entry_, enabled);
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->appcache_last_accessed_entry_, enabled);
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetIndexedDBDetailsSensitivity(GtkChromeCookieView *self,
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    gboolean enabled) {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->indexed_db_origin_entry_, enabled);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->indexed_db_size_entry_, enabled);
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->indexed_db_last_modified_entry_, enabled);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetLocalStorageItemSensitivity(GtkChromeCookieView* self,
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    gboolean enabled) {
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->local_storage_item_origin_entry_, enabled);
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->local_storage_item_key_entry_, enabled);
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->local_storage_item_value_entry_, enabled);
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetDatabaseAccessedSensitivity(GtkChromeCookieView* self,
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    gboolean enabled) {
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_accessed_origin_entry_, enabled);
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_accessed_name_entry_, enabled);
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_accessed_description_entry_, enabled);
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->database_accessed_size_entry_, enabled);
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetAppCacheCreatedSensitivity(GtkChromeCookieView* self,
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   gboolean enabled) {
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_sensitive(self->appcache_created_manifest_entry_, enabled);
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ClearCookieDetails(GtkChromeCookieView *self) {
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string no_cookie =
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_NONESELECTED);
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_name_entry_),
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     no_cookie.c_str());
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_content_entry_),
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     no_cookie.c_str());
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_domain_entry_),
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     no_cookie.c_str());
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_path_entry_),
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     no_cookie.c_str());
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_created_entry_),
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     no_cookie.c_str());
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (self->cookie_expires_entry_) {
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_entry_set_text(GTK_ENTRY(self->cookie_expires_entry_),
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       no_cookie.c_str());
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkListStore* store = self->cookie_expires_combobox_store_;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkTreeIter iter;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_list_store_clear(store);
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_list_store_append(store, &iter);
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_list_store_set(store, &iter, 0, no_cookie.c_str(), -1);
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_combo_box_set_active(GTK_COMBO_BOX(self->cookie_expires_combobox_),
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             0);
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_send_for_entry_),
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     no_cookie.c_str());
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetCookieDetailsSensitivity(self, FALSE);
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateVisibleDetailedInfo(GtkChromeCookieView *self, GtkWidget* table) {
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetCookieDetailsSensitivity(self, table == self->cookie_details_table_);
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetDatabaseDetailsSensitivity(self, table == self->database_details_table_);
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetLocalStorageDetailsSensitivity(self,
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      table == self->local_storage_details_table_);
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetAppCacheDetailsSensitivity(self, table == self->appcache_details_table_);
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetIndexedDBDetailsSensitivity(self,
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      table == self->indexed_db_details_table_);
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetLocalStorageItemSensitivity(self,
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      table == self->local_storage_item_table_);
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetDatabaseAccessedSensitivity(self,
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      table == self->database_accessed_table_);
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetAppCacheCreatedSensitivity(self,
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      table == self->appcache_created_table_);
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Display everything
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_show(self->table_box_);
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_show_all(table);
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Hide everything that isn't us.
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->cookie_details_table_)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->cookie_details_table_);
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->database_details_table_)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->database_details_table_);
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->local_storage_details_table_)
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->local_storage_details_table_);
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->appcache_details_table_)
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->appcache_details_table_);
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->indexed_db_details_table_)
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->indexed_db_details_table_);
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->local_storage_item_table_)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->local_storage_item_table_);
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->database_accessed_table_)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->database_accessed_table_);
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (table != self->appcache_created_table_)
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_widget_hide(self->appcache_created_table_);
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_DEFINE_TYPE(GtkChromeCookieView, gtk_chrome_cookie_view, GTK_TYPE_FRAME)
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void gtk_chrome_cookie_view_class_init(GtkChromeCookieViewClass *klass) {
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void gtk_chrome_cookie_view_init(GtkChromeCookieView *self) {
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BuildWidgets(GtkChromeCookieView *self, gboolean editable_expiration) {
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->table_box_ = gtk_vbox_new(FALSE, 0);
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_set_no_show_all(self->table_box_, TRUE);
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cookie details.
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->cookie_details_table_ = gtk_table_new(7, 2, FALSE);
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->cookie_details_table_);
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->cookie_details_table_), 0,
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int row = 0;
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->first_label_ = InitDetailRow(row++, IDS_COOKIES_COOKIE_NAME_LABEL,
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->cookie_details_table_, &self->cookie_name_entry_);
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_CONTENT_LABEL,
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->cookie_details_table_, &self->cookie_content_entry_);
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->cookie_details_table_, &self->cookie_domain_entry_);
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_PATH_LABEL,
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->cookie_details_table_, &self->cookie_path_entry_);
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_SENDFOR_LABEL,
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->cookie_details_table_, &self->cookie_send_for_entry_);
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_CREATED_LABEL,
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->cookie_details_table_, &self->cookie_created_entry_);
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (editable_expiration) {
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    InitComboboxRow(row++, IDS_COOKIES_COOKIE_EXPIRES_LABEL,
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->cookie_details_table_,
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    &self->cookie_expires_combobox_,
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    &self->cookie_expires_combobox_store_);
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    InitDetailRow(row++, IDS_COOKIES_COOKIE_EXPIRES_LABEL,
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  self->cookie_details_table_, &self->cookie_expires_entry_);
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Database details.
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->database_details_table_ = gtk_table_new(4, 2, FALSE);
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->database_details_table_);
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->database_details_table_), 0,
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_NAME_LABEL,
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_details_table_, &self->database_name_entry_);
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL,
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_details_table_,
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->database_description_entry_);
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_details_table_, &self->database_size_entry_);
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_details_table_,
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->database_last_modified_entry_);
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Local storage details.
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->local_storage_details_table_ = gtk_table_new(3, 2, FALSE);
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->local_storage_details_table_);
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->local_storage_details_table_), 0,
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row = 0;
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL,
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->local_storage_details_table_,
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->local_storage_origin_entry_);
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->local_storage_details_table_,
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->local_storage_size_entry_);
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->local_storage_details_table_,
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->local_storage_last_modified_entry_);
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // AppCache details.
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->appcache_details_table_ = gtk_table_new(4, 2, FALSE);
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->appcache_details_table_);
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->appcache_details_table_), 0,
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row = 0;
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL,
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->appcache_details_table_,
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->appcache_manifest_entry_);
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_SIZE_LABEL,
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->appcache_details_table_, &self->appcache_size_entry_);
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_CREATED_LABEL,
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->appcache_details_table_, &self->appcache_created_entry_);
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LAST_ACCESSED_LABEL,
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->appcache_details_table_,
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->appcache_last_accessed_entry_);
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IndexedDB details.
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->indexed_db_details_table_ = gtk_table_new(4, 2, FALSE);
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->indexed_db_details_table_);
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->indexed_db_details_table_), 0,
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row = 0;
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL,
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->indexed_db_details_table_,
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->indexed_db_origin_entry_);
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->indexed_db_details_table_, &self->indexed_db_size_entry_);
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->indexed_db_details_table_,
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->indexed_db_last_modified_entry_);
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Local storage item.
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->local_storage_item_table_ = gtk_table_new(3, 2, FALSE);
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->local_storage_item_table_);
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->local_storage_item_table_), 0,
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row = 0;
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->local_storage_item_table_,
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->local_storage_item_origin_entry_);
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_KEY_LABEL,
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->local_storage_item_table_,
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->local_storage_item_key_entry_);
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_VALUE_LABEL,
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->local_storage_item_table_,
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->local_storage_item_value_entry_);
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Database accessed prompt.
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->database_accessed_table_ = gtk_table_new(2, 2, FALSE);
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->database_accessed_table_);
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->local_storage_item_table_), 0,
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row = 0;
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_accessed_table_,
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->database_accessed_origin_entry_);
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_WEB_DATABASE_NAME,
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_accessed_table_,
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->database_accessed_name_entry_);
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL,
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_accessed_table_,
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->database_accessed_description_entry_);
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_SIZE_LABEL,
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->database_accessed_table_,
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->database_accessed_size_entry_);
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // AppCache created prompt.
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  self->appcache_created_table_ = gtk_table_new(1, 2, FALSE);
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self->table_box_),
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    self->appcache_created_table_);
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_table_set_col_spacing(GTK_TABLE(self->appcache_created_table_), 0,
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ui::kLabelSpacing);
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  row = 0;
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InitDetailRow(row++, IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL,
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                self->appcache_created_table_,
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                &self->appcache_created_manifest_entry_);
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_frame_set_shadow_type(GTK_FRAME(self), GTK_SHADOW_ETCHED_IN);
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_container_add(GTK_CONTAINER(self), self->table_box_);
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GtkWidget* gtk_chrome_cookie_view_new(gboolean editable_expiration) {
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkChromeCookieView* view = GTK_CHROME_COOKIE_VIEW(
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_object_new(GTK_TYPE_CHROME_COOKIE_VIEW, NULL));
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BuildWidgets(view, editable_expiration);
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  g_signal_connect(view, "realize", G_CALLBACK(InitStyles), NULL);
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GTK_WIDGET(view);
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_clear(GtkChromeCookieView* self) {
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->cookie_details_table_);
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ClearCookieDetails(self);
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in cookie.
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_cookie(
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& domain,
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const net::CanonicalCookie& cookie) {
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->cookie_details_table_);
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_name_entry_),
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     cookie.Name().c_str());
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_content_entry_),
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     cookie.Value().c_str());
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_domain_entry_),
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     domain.c_str());
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_path_entry_),
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     cookie.Path().c_str());
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->cookie_created_entry_),
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         cookie.CreationDate())).c_str());
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string expire_text = cookie.IsPersistent() ?
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(cookie.ExpiryDate())) :
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_EXPIRES_SESSION);
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (self->cookie_expires_entry_) {
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_entry_set_text(GTK_ENTRY(self->cookie_expires_entry_),
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       expire_text.c_str());
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkListStore* store = self->cookie_expires_combobox_store_;
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkTreeIter iter;
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_list_store_clear(store);
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (cookie.IsPersistent()) {
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gtk_list_store_append(store, &iter);
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gtk_list_store_set(store, &iter, 0, expire_text.c_str(), -1);
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_list_store_append(store, &iter);
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_list_store_set(
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        store, &iter, 0,
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_EXPIRES_SESSION).c_str(),
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        -1);
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    gtk_combo_box_set_active(GTK_COMBO_BOX(self->cookie_expires_combobox_),
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             0);
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GTK_ENTRY(self->cookie_send_for_entry_),
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      l10n_util::GetStringUTF8(cookie.IsSecure() ?
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               IDS_COOKIES_COOKIE_SENDFOR_SECURE :
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               IDS_COOKIES_COOKIE_SENDFOR_ANY).c_str());
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetCookieDetailsSensitivity(self, TRUE);
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_cookie_string(
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& url,
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& cookie_line) {
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::ParsedCookie pc(cookie_line);
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::CanonicalCookie cookie(url, pc);
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_chrome_cookie_view_display_cookie(
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      self,
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pc.HasDomain() ? pc.Domain() : url.host(),
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cookie);
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in database.
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_database(
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const BrowsingDataDatabaseHelper::DatabaseInfo& database_info) {
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->database_details_table_);
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GTK_ENTRY(self->database_name_entry_),
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      database_info.database_name.empty() ?
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          l10n_util::GetStringUTF8(
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME).c_str() :
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          database_info.database_name.c_str());
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_description_entry_),
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     database_info.description.c_str());
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_size_entry_),
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(ui::FormatBytes(database_info.size)).c_str());
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_last_modified_entry_),
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         database_info.last_modified)).c_str());
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetDatabaseDetailsSensitivity(self, TRUE);
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in local storage data.
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_local_storage(
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const BrowsingDataLocalStorageHelper::LocalStorageInfo&
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_storage_info) {
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->local_storage_details_table_);
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->local_storage_origin_entry_),
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     local_storage_info.origin_url.spec().c_str());
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->local_storage_size_entry_),
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(ui::FormatBytes(
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         local_storage_info.size)).c_str());
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->local_storage_last_modified_entry_),
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         local_storage_info.last_modified)).c_str());
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetLocalStorageDetailsSensitivity(self, TRUE);
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in app cache.
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_app_cache(
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const appcache::AppCacheInfo& info) {
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->appcache_details_table_);
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->appcache_manifest_entry_),
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     info.manifest_url.spec().c_str());
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->appcache_size_entry_),
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(ui::FormatBytes(info.size)).c_str());
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->appcache_created_entry_),
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         info.creation_time)).c_str());
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->appcache_last_accessed_entry_),
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         info.last_access_time)).c_str());
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetAppCacheDetailsSensitivity(self, TRUE);
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in IndexedDB data.
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_indexed_db(
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
594c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const content::IndexedDBInfo& indexed_db_info) {
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->indexed_db_details_table_);
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->indexed_db_origin_entry_),
598c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     indexed_db_info.origin_.spec().c_str());
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->indexed_db_size_entry_),
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(ui::FormatBytes(
601c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                         indexed_db_info.size_)).c_str());
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->indexed_db_last_modified_entry_),
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
604c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                         indexed_db_info.last_modified_)).c_str());
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetLocalStorageDetailsSensitivity(self, TRUE);
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_local_storage_item(
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& host,
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& key,
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& value) {
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->local_storage_item_table_);
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->local_storage_item_origin_entry_),
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     host.c_str());
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->local_storage_item_key_entry_),
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(key).c_str());
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->local_storage_item_value_entry_),
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(value).c_str());
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetLocalStorageItemSensitivity(self, TRUE);
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_database_accessed(
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& host,
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& database_name,
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& display_name,
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long estimated_size) {
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->database_accessed_table_);
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_origin_entry_),
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     host.c_str());
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_name_entry_),
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(database_name).c_str());
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_description_entry_),
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(display_name).c_str());
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_size_entry_),
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     UTF16ToUTF8(ui::FormatBytes(estimated_size)).c_str());
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetDatabaseAccessedSensitivity(self, TRUE);
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_appcache_created(
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& manifest_url) {
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateVisibleDetailedInfo(self, self->appcache_created_table_);
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_entry_set_text(GTK_ENTRY(self->appcache_created_manifest_entry_),
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     manifest_url.spec().c_str());
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetAppCacheCreatedSensitivity(self, TRUE);
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool gtk_chrome_cookie_view_session_expires(GtkChromeCookieView* self) {
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (self->cookie_expires_entry_)
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkListStore* store = self->cookie_expires_combobox_store_;
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int store_size = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (store_size == 1)
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK_EQ(2, store_size);
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int selected = gtk_combo_box_get_active(GTK_COMBO_BOX(
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      self->cookie_expires_combobox_));
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return selected == 1;
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
667