172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/gtk_chrome_cookie_view.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/i18n/time_formatting.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/utf_string_conversions.h"
972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/gtk_util.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h"
1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid InitBrowserDetailStyle(GtkWidget* entry, GtkStyle* label_style,
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            GtkStyle* dialog_style) {
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_modify_fg(entry, GTK_STATE_NORMAL,
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       &label_style->fg[GTK_STATE_NORMAL]);
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_modify_fg(entry, GTK_STATE_INSENSITIVE,
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       &label_style->fg[GTK_STATE_INSENSITIVE]);
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // GTK_NO_WINDOW widgets like GtkLabel don't draw their own background, so we
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // combine the normal or insensitive foreground of the label style with the
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // normal background of the window style to achieve the "normal label" and
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // "insensitive label" colors.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_modify_base(entry, GTK_STATE_NORMAL,
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         &dialog_style->bg[GTK_STATE_NORMAL]);
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_modify_base(entry, GTK_STATE_INSENSITIVE,
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         &dialog_style->bg[GTK_STATE_NORMAL]);
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGtkWidget* InitRowLabel(int row, int label_id, GtkWidget* details_table) {
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* name_label = gtk_label_new(
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringUTF8(label_id).c_str());
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_misc_set_alignment(GTK_MISC(name_label), 1, 0.5);
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_attach(GTK_TABLE(details_table), name_label,
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                   0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return name_label;
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGtkWidget* InitDetailRow(int row, int label_id,
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         GtkWidget* details_table, GtkWidget** entry) {
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* name_label = InitRowLabel(row, label_id, details_table);
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  *entry = gtk_entry_new();
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_editable(GTK_ENTRY(*entry), FALSE);
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_has_frame(GTK_ENTRY(*entry), FALSE);
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_attach_defaults(GTK_TABLE(details_table), *entry,
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            1, 2, row, row + 1);
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return name_label;
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGtkWidget* InitComboboxRow(int row, int label_id,
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           GtkWidget* details_table,
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           GtkWidget** combobox,
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           GtkListStore** store) {
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* name_label = InitRowLabel(row, label_id, details_table);
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  *store = gtk_list_store_new(1, G_TYPE_STRING);
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  *combobox = gtk_combo_box_new_with_model(GTK_TREE_MODEL(*store));
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  g_object_unref(*store);
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkCellRenderer* cell = gtk_cell_renderer_text_new();
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(*combobox), cell, TRUE);
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(*combobox), cell,
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                  "text", 0, NULL);
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* hbox = gtk_hbox_new(FALSE, 0);
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_box_pack_start(GTK_BOX(hbox), *combobox, FALSE, FALSE, 0);
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_attach_defaults(GTK_TABLE(details_table), hbox,
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            1, 2, row, row + 1);
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return name_label;
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid InitStyles(GtkChromeCookieView *self) {
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkStyle* label_style = gtk_widget_get_style(self->first_label_);
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkStyle* dialog_style = gtk_widget_get_style(GTK_WIDGET(self));
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Cookie details.
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->cookie_name_entry_, label_style, dialog_style);
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->cookie_content_entry_, label_style,
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->cookie_domain_entry_, label_style, dialog_style);
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->cookie_path_entry_, label_style, dialog_style);
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->cookie_send_for_entry_, label_style,
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->cookie_created_entry_, label_style,
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (self->cookie_expires_entry_) {
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    InitBrowserDetailStyle(self->cookie_expires_entry_, label_style,
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           dialog_style);
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Database details.
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_name_entry_, label_style, dialog_style);
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_description_entry_, label_style,
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_size_entry_, label_style, dialog_style);
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_last_modified_entry_, label_style,
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Local storage details.
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->local_storage_origin_entry_, label_style,
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->local_storage_size_entry_, label_style,
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->local_storage_last_modified_entry_, label_style,
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AppCache details.
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->appcache_manifest_entry_, label_style,
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->appcache_size_entry_, label_style, dialog_style);
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->appcache_created_entry_, label_style,
118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->appcache_last_accessed_entry_, label_style,
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Local storage item.
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->local_storage_item_origin_entry_, label_style,
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->local_storage_item_key_entry_, label_style,
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->local_storage_item_value_entry_, label_style,
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Database accessed item.
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_accessed_origin_entry_, label_style,
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_accessed_name_entry_, label_style,
134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_accessed_description_entry_,
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         label_style, dialog_style);
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->database_accessed_size_entry_, label_style,
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AppCache created item.
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitBrowserDetailStyle(self->appcache_created_manifest_entry_, label_style,
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         dialog_style);
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetCookieDetailsSensitivity(GtkChromeCookieView *self,
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                 gboolean enabled) {
147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->cookie_name_entry_, enabled);
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->cookie_content_entry_, enabled);
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->cookie_domain_entry_, enabled);
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->cookie_path_entry_, enabled);
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->cookie_send_for_entry_, enabled);
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->cookie_created_entry_, enabled);
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (self->cookie_expires_entry_)
154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_set_sensitive(self->cookie_expires_entry_, enabled);
155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  else
156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_set_sensitive(self->cookie_expires_combobox_, enabled);
157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetDatabaseDetailsSensitivity(GtkChromeCookieView *self,
160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                   gboolean enabled) {
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_name_entry_, enabled);
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_description_entry_, enabled);
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_size_entry_, enabled);
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_last_modified_entry_, enabled);
165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetLocalStorageDetailsSensitivity(GtkChromeCookieView *self,
168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                       gboolean enabled) {
169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->local_storage_origin_entry_, enabled);
170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->local_storage_size_entry_, enabled);
171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->local_storage_last_modified_entry_, enabled);
172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetAppCacheDetailsSensitivity(GtkChromeCookieView *self,
175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                   gboolean enabled) {
176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->appcache_manifest_entry_, enabled);
177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->appcache_size_entry_, enabled);
178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->appcache_created_entry_, enabled);
179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->appcache_last_accessed_entry_, enabled);
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
1823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid SetIndexedDBDetailsSensitivity(GtkChromeCookieView *self,
1833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                    gboolean enabled) {
1843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_widget_set_sensitive(self->indexed_db_origin_entry_, enabled);
1853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_widget_set_sensitive(self->indexed_db_size_entry_, enabled);
1863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_widget_set_sensitive(self->indexed_db_last_modified_entry_, enabled);
1873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
1883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetLocalStorageItemSensitivity(GtkChromeCookieView* self,
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                    gboolean enabled) {
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->local_storage_item_origin_entry_, enabled);
192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->local_storage_item_key_entry_, enabled);
193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->local_storage_item_value_entry_, enabled);
194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetDatabaseAccessedSensitivity(GtkChromeCookieView* self,
197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                    gboolean enabled) {
198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_accessed_origin_entry_, enabled);
199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_accessed_name_entry_, enabled);
200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_accessed_description_entry_, enabled);
201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->database_accessed_size_entry_, enabled);
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetAppCacheCreatedSensitivity(GtkChromeCookieView* self,
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                   gboolean enabled) {
206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_sensitive(self->appcache_created_manifest_entry_, enabled);
207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid ClearCookieDetails(GtkChromeCookieView *self) {
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string no_cookie =
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_NONESELECTED);
212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_name_entry_),
213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     no_cookie.c_str());
214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_content_entry_),
215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     no_cookie.c_str());
216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_domain_entry_),
217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     no_cookie.c_str());
218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_path_entry_),
219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     no_cookie.c_str());
220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_created_entry_),
221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     no_cookie.c_str());
222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (self->cookie_expires_entry_) {
223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_entry_set_text(GTK_ENTRY(self->cookie_expires_entry_),
224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       no_cookie.c_str());
225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  } else {
226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkListStore* store = self->cookie_expires_combobox_store_;
227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkTreeIter iter;
228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_list_store_clear(store);
229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_list_store_append(store, &iter);
231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_list_store_set(store, &iter, 0, no_cookie.c_str(), -1);
232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_combo_box_set_active(GTK_COMBO_BOX(self->cookie_expires_combobox_),
234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                             0);
235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_send_for_entry_),
237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     no_cookie.c_str());
238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetCookieDetailsSensitivity(self, FALSE);
239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateVisibleDetailedInfo(GtkChromeCookieView *self, GtkWidget* table) {
242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetCookieDetailsSensitivity(self, table == self->cookie_details_table_);
243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetDatabaseDetailsSensitivity(self, table == self->database_details_table_);
244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetLocalStorageDetailsSensitivity(self,
245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      table == self->local_storage_details_table_);
246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetAppCacheDetailsSensitivity(self, table == self->appcache_details_table_);
2473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  SetIndexedDBDetailsSensitivity(self,
2483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      table == self->indexed_db_details_table_);
249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetLocalStorageItemSensitivity(self,
250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      table == self->local_storage_item_table_);
251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetDatabaseAccessedSensitivity(self,
252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      table == self->database_accessed_table_);
253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetAppCacheCreatedSensitivity(self,
254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      table == self->appcache_created_table_);
255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Display everything
257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_show(self->table_box_);
258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_show_all(table);
259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Hide everything that isn't us.
260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->cookie_details_table_)
261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->cookie_details_table_);
262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->database_details_table_)
263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->database_details_table_);
264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->local_storage_details_table_)
265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->local_storage_details_table_);
266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->appcache_details_table_)
267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->appcache_details_table_);
2683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  if (table != self->indexed_db_details_table_)
2693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    gtk_widget_hide(self->indexed_db_details_table_);
270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->local_storage_item_table_)
271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->local_storage_item_table_);
272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->database_accessed_table_)
273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->database_accessed_table_);
274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (table != self->appcache_created_table_)
275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_widget_hide(self->appcache_created_table_);
276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace
279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
280c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochG_DEFINE_TYPE(GtkChromeCookieView, gtk_chrome_cookie_view, GTK_TYPE_FRAME)
281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstatic void gtk_chrome_cookie_view_class_init(GtkChromeCookieViewClass *klass) {
283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstatic void gtk_chrome_cookie_view_init(GtkChromeCookieView *self) {
286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid BuildWidgets(GtkChromeCookieView *self, gboolean editable_expiration) {
289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->table_box_ = gtk_vbox_new(FALSE, 0);
290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_set_no_show_all(self->table_box_, TRUE);
291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Cookie details.
293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->cookie_details_table_ = gtk_table_new(7, 2, FALSE);
294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->cookie_details_table_);
296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->cookie_details_table_), 0,
297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int row = 0;
300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->first_label_ = InitDetailRow(row++, IDS_COOKIES_COOKIE_NAME_LABEL,
301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->cookie_details_table_, &self->cookie_name_entry_);
302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_CONTENT_LABEL,
303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->cookie_details_table_, &self->cookie_content_entry_);
304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->cookie_details_table_, &self->cookie_domain_entry_);
306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_PATH_LABEL,
307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->cookie_details_table_, &self->cookie_path_entry_);
308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_SENDFOR_LABEL,
309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->cookie_details_table_, &self->cookie_send_for_entry_);
310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_CREATED_LABEL,
311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->cookie_details_table_, &self->cookie_created_entry_);
312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (editable_expiration) {
313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    InitComboboxRow(row++, IDS_COOKIES_COOKIE_EXPIRES_LABEL,
314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->cookie_details_table_,
315c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    &self->cookie_expires_combobox_,
316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    &self->cookie_expires_combobox_store_);
317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  } else {
318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    InitDetailRow(row++, IDS_COOKIES_COOKIE_EXPIRES_LABEL,
319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                  self->cookie_details_table_, &self->cookie_expires_entry_);
320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Database details.
323c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->database_details_table_ = gtk_table_new(4, 2, FALSE);
324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->database_details_table_);
326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->database_details_table_), 0,
327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_NAME_LABEL,
330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_details_table_, &self->database_name_entry_);
331c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL,
332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_details_table_,
333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->database_description_entry_);
334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_details_table_, &self->database_size_entry_);
336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_details_table_,
338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->database_last_modified_entry_);
339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Local storage details.
341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->local_storage_details_table_ = gtk_table_new(3, 2, FALSE);
342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->local_storage_details_table_);
344c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->local_storage_details_table_), 0,
345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
347c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  row = 0;
348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL,
349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->local_storage_details_table_,
350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->local_storage_origin_entry_);
351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->local_storage_details_table_,
353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->local_storage_size_entry_);
354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->local_storage_details_table_,
356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->local_storage_last_modified_entry_);
357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AppCache details.
359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->appcache_details_table_ = gtk_table_new(4, 2, FALSE);
360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->appcache_details_table_);
362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->appcache_details_table_), 0,
363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  row = 0;
366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL,
367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->appcache_details_table_,
368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->appcache_manifest_entry_);
369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_SIZE_LABEL,
370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->appcache_details_table_, &self->appcache_size_entry_);
371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_CREATED_LABEL,
372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->appcache_details_table_, &self->appcache_created_entry_);
373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LAST_ACCESSED_LABEL,
374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->appcache_details_table_,
375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->appcache_last_accessed_entry_);
376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // IndexedDB details.
3783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  self->indexed_db_details_table_ = gtk_table_new(4, 2, FALSE);
3793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_container_add(GTK_CONTAINER(self->table_box_),
3803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                    self->indexed_db_details_table_);
3813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_table_set_col_spacing(GTK_TABLE(self->indexed_db_details_table_), 0,
3823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                            gtk_util::kLabelSpacing);
3833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
3843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  row = 0;
3853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL,
3863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                self->indexed_db_details_table_,
3873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                &self->indexed_db_origin_entry_);
3883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL,
3893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                self->indexed_db_details_table_, &self->indexed_db_size_entry_);
3903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL,
3913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                self->indexed_db_details_table_,
3923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                &self->indexed_db_last_modified_entry_);
3933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Local storage item.
395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->local_storage_item_table_ = gtk_table_new(3, 2, FALSE);
396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->local_storage_item_table_);
398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->local_storage_item_table_), 0,
399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  row = 0;
402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->local_storage_item_table_,
404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->local_storage_item_origin_entry_);
405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_KEY_LABEL,
406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->local_storage_item_table_,
407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->local_storage_item_key_entry_);
408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_LOCAL_STORAGE_VALUE_LABEL,
409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->local_storage_item_table_,
410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->local_storage_item_value_entry_);
411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Database accessed prompt.
413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->database_accessed_table_ = gtk_table_new(2, 2, FALSE);
414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->database_accessed_table_);
416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->local_storage_item_table_), 0,
417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  row = 0;
420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_COOKIE_DOMAIN_LABEL,
421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_accessed_table_,
422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->database_accessed_origin_entry_);
423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_WEB_DATABASE_NAME,
424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_accessed_table_,
425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->database_accessed_name_entry_);
426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL,
427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_accessed_table_,
428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->database_accessed_description_entry_);
429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_SIZE_LABEL,
430c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->database_accessed_table_,
431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->database_accessed_size_entry_);
432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AppCache created prompt.
434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  self->appcache_created_table_ = gtk_table_new(1, 2, FALSE);
435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self->table_box_),
436c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                    self->appcache_created_table_);
437c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_table_set_col_spacing(GTK_TABLE(self->appcache_created_table_), 0,
438c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            gtk_util::kLabelSpacing);
439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  row = 0;
440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitDetailRow(row++, IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL,
441c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                self->appcache_created_table_,
442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                &self->appcache_created_manifest_entry_);
443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_frame_set_shadow_type(GTK_FRAME(self), GTK_SHADOW_ETCHED_IN);
445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_container_add(GTK_CONTAINER(self), self->table_box_);
446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
448c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGtkWidget* gtk_chrome_cookie_view_new(gboolean editable_expiration) {
449c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkChromeCookieView* view = GTK_CHROME_COOKIE_VIEW(
450c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      g_object_new(GTK_TYPE_CHROME_COOKIE_VIEW, NULL));
451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BuildWidgets(view, editable_expiration);
452c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  g_signal_connect(view, "realize", G_CALLBACK(InitStyles), NULL);
453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return GTK_WIDGET(view);
454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
455c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
456c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_clear(GtkChromeCookieView* self) {
457c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->cookie_details_table_);
458c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ClearCookieDetails(self);
459c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
460c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
461c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Switches the display to showing the passed in cookie.
462c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_cookie(
463c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
464c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const std::string& domain,
465c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const net::CookieMonster::CanonicalCookie& cookie) {
466c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->cookie_details_table_);
467c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
468c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_name_entry_),
469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     cookie.Name().c_str());
470c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_content_entry_),
471c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     cookie.Value().c_str());
472c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_domain_entry_),
473c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     domain.c_str());
474c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_path_entry_),
475c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     cookie.Path().c_str());
476c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->cookie_created_entry_),
47721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
478c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         cookie.CreationDate())).c_str());
479c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
480c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string expire_text = cookie.DoesExpire() ?
48121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(cookie.ExpiryDate())) :
482c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_EXPIRES_SESSION);
483c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
484c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (self->cookie_expires_entry_) {
485c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_entry_set_text(GTK_ENTRY(self->cookie_expires_entry_),
486c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       expire_text.c_str());
487c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  } else {
488c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkListStore* store = self->cookie_expires_combobox_store_;
489c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkTreeIter iter;
490c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_list_store_clear(store);
491c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
492c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (cookie.DoesExpire()) {
493c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      gtk_list_store_append(store, &iter);
494c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      gtk_list_store_set(store, &iter, 0, expire_text.c_str(), -1);
495c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    }
496c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
497c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_list_store_append(store, &iter);
498c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_list_store_set(
499c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        store, &iter, 0,
500c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        l10n_util::GetStringUTF8(IDS_COOKIES_COOKIE_EXPIRES_SESSION).c_str(),
501c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        -1);
502c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
503c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_combo_box_set_active(GTK_COMBO_BOX(self->cookie_expires_combobox_),
504c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                             0);
505c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
506c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
507c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(
508c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GTK_ENTRY(self->cookie_send_for_entry_),
509c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringUTF8(cookie.IsSecure() ?
510c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                               IDS_COOKIES_COOKIE_SENDFOR_SECURE :
511c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                               IDS_COOKIES_COOKIE_SENDFOR_ANY).c_str());
512c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetCookieDetailsSensitivity(self, TRUE);
513c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
514c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
515c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_cookie_string(
516c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
517c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const GURL& url,
518c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const std::string& cookie_line) {
519c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  net::CookieMonster::ParsedCookie pc(cookie_line);
520c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  net::CookieMonster::CanonicalCookie cookie(url, pc);
521c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
522c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_chrome_cookie_view_display_cookie(
523c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      self,
524c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pc.HasDomain() ? pc.Domain() : url.host(),
525c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      cookie);
526c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
527c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
528c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Switches the display to showing the passed in database.
529c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_database(
530c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
531c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const BrowsingDataDatabaseHelper::DatabaseInfo& database_info) {
532c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->database_details_table_);
533c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
534c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(
535c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GTK_ENTRY(self->database_name_entry_),
536c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      database_info.database_name.empty() ?
537c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch          l10n_util::GetStringUTF8(
538c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch              IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME).c_str() :
539c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch          database_info.database_name.c_str());
540c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_description_entry_),
541c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     database_info.description.c_str());
542c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_size_entry_),
5433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                     UTF16ToUTF8(FormatBytes(
544c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         database_info.size,
545c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         GetByteDisplayUnits(database_info.size),
546c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         true)).c_str());
547c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_last_modified_entry_),
54821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
549c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         database_info.last_modified)).c_str());
550c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetDatabaseDetailsSensitivity(self, TRUE);
551c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
552c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
553c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Switches the display to showing the passed in local storage data.
554c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_local_storage(
555c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
556c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const BrowsingDataLocalStorageHelper::LocalStorageInfo&
557c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    local_storage_info) {
558c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->local_storage_details_table_);
559c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
560c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->local_storage_origin_entry_),
561c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     local_storage_info.origin.c_str());
562c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->local_storage_size_entry_),
5633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                     UTF16ToUTF8(FormatBytes(
564c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         local_storage_info.size,
565c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         GetByteDisplayUnits(local_storage_info.size),
566c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         true)).c_str());
567c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->local_storage_last_modified_entry_),
56821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
569c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         local_storage_info.last_modified)).c_str());
570c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetLocalStorageDetailsSensitivity(self, TRUE);
571c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
572c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
573c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Switches the display to showing the passed in app cache.
574c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_app_cache(
575c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
576c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const appcache::AppCacheInfo& info) {
577c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->appcache_details_table_);
578c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
579c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->appcache_manifest_entry_),
580c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     info.manifest_url.spec().c_str());
581c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->appcache_size_entry_),
5823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                     UTF16ToUTF8(FormatBytes(
583c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         info.size,
584c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         GetByteDisplayUnits(info.size),
585c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         true)).c_str());
586c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->appcache_created_entry_),
58721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
588c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         info.creation_time)).c_str());
589c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->appcache_last_accessed_entry_),
59021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
591c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         info.last_access_time)).c_str());
592c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetAppCacheDetailsSensitivity(self, TRUE);
593c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
594c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Switches the display to showing the passed in IndexedDB data.
5963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid gtk_chrome_cookie_view_display_indexed_db(
5973345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    GtkChromeCookieView* self,
5983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    const BrowsingDataIndexedDBHelper::IndexedDBInfo& indexed_db_info) {
5993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  UpdateVisibleDetailedInfo(self, self->indexed_db_details_table_);
6003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
6013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_entry_set_text(GTK_ENTRY(self->indexed_db_origin_entry_),
6023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                     indexed_db_info.origin.c_str());
6033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_entry_set_text(GTK_ENTRY(self->indexed_db_size_entry_),
6043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                     UTF16ToUTF8(FormatBytes(
6053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                         indexed_db_info.size,
6063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                         GetByteDisplayUnits(indexed_db_info.size),
6073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                         true)).c_str());
6083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  gtk_entry_set_text(GTK_ENTRY(self->indexed_db_last_modified_entry_),
60921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     UTF16ToUTF8(base::TimeFormatFriendlyDateAndTime(
6103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                         indexed_db_info.last_modified)).c_str());
6113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  SetLocalStorageDetailsSensitivity(self, TRUE);
6123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
6133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
614c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_local_storage_item(
615c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
616c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const std::string& host,
617c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const string16& key,
618c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const string16& value) {
619c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->local_storage_item_table_);
620c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
621c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->local_storage_item_origin_entry_),
622c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     host.c_str());
623c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->local_storage_item_key_entry_),
624c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     UTF16ToUTF8(key).c_str());
625c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->local_storage_item_value_entry_),
626c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     UTF16ToUTF8(value).c_str());
627c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetLocalStorageItemSensitivity(self, TRUE);
628c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
629c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
630c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_database_accessed(
631c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
632c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const std::string& host,
633c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const string16& database_name,
634c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const string16& display_name,
635c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    unsigned long estimated_size) {
636c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->database_accessed_table_);
637c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
638c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_origin_entry_),
639c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     host.c_str());
640c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_name_entry_),
641c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     UTF16ToUTF8(database_name).c_str());
642c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_description_entry_),
643c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     UTF16ToUTF8(display_name).c_str());
644c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->database_accessed_size_entry_),
6453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                     UTF16ToUTF8(FormatBytes(
646c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         estimated_size,
647c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         GetByteDisplayUnits(estimated_size),
648c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         true)).c_str());
649c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetDatabaseAccessedSensitivity(self, TRUE);
650c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
651c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
652c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid gtk_chrome_cookie_view_display_appcache_created(
653c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    GtkChromeCookieView* self,
654c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const GURL& manifest_url) {
655c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  UpdateVisibleDetailedInfo(self, self->appcache_created_table_);
656c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_entry_set_text(GTK_ENTRY(self->appcache_created_manifest_entry_),
657c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     manifest_url.spec().c_str());
658c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetAppCacheCreatedSensitivity(self, TRUE);
659c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
660c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
661c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool gtk_chrome_cookie_view_session_expires(GtkChromeCookieView* self) {
662c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (self->cookie_expires_entry_)
663c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return false;
664c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
665c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkListStore* store = self->cookie_expires_combobox_store_;
666c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int store_size = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
667c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (store_size == 1)
668c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return false;
669c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
670c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DCHECK_EQ(2, store_size);
671c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
672c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int selected = gtk_combo_box_get_active(GTK_COMBO_BOX(
673c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      self->cookie_expires_combobox_));
674c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return selected == 1;
675c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
676