gtk_chrome_cookie_view.h revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
6#define CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
7#pragma once
8
9#include <gtk/gtk.h>
10
11#include <string>
12
13#include "chrome/browser/browsing_data_appcache_helper.h"
14#include "chrome/browser/browsing_data_database_helper.h"
15#include "chrome/browser/browsing_data_indexed_db_helper.h"
16#include "chrome/browser/browsing_data_local_storage_helper.h"
17#include "net/base/cookie_monster.h"
18
19class GURL;
20
21G_BEGIN_DECLS
22
23#define GTK_TYPE_CHROME_COOKIE_VIEW gtk_chrome_cookie_view_get_type()
24
25#define GTK_CHROME_COOKIE_VIEW(obj) \
26  (G_TYPE_CHECK_INSTANCE_CAST((obj), \
27  GTK_TYPE_CHROME_COOKIE_VIEW, GtkChromeCookieView))
28
29#define GTK_CHROME_COOKIE_VIEW_CLASS(klass) \
30  (G_TYPE_CHECK_CLASS_CAST((klass), \
31  GTK_TYPE_CHROME_COOKIE_VIEW, GtkChromeCookieViewClass))
32
33#define GTK_IS_CHROME_COOKIE_VIEW(obj) \
34  (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
35  GTK_TYPE_CHROME_COOKIE_VIEW))
36
37#define GTK_IS_CHROME_COOKIE_VIEW_CLASS(klass) \
38  (G_TYPE_CHECK_CLASS_TYPE((klass), \
39  GTK_TYPE_CHROME_COOKIE_VIEW))
40
41#define GTK_CHROME_COOKIE_VIEW_GET_CLASS(obj) \
42  (G_TYPE_INSTANCE_GET_CLASS((obj), \
43  GTK_TYPE_CHROME_COOKIE_VIEW, GtkChromeCookieViewClass))
44
45// TODO(erg): Refactor the following class. It's continuously grown as more
46// things have been added to it and should probably become a general key/value
47// table. The problem is that any implementation for that would be much more
48// complicated and would require changing a whole lot of code.
49typedef struct {
50  GtkFrame parent;
51
52  // All public for testing since I don't think there's a "friend" mechanism in
53  // gobject.
54
55  GtkWidget* table_box_;
56
57  // A label we keep around so we can access its GtkStyle* once it is realized.
58  GtkWidget* first_label_;
59
60  // The cookie details widgets.
61  GtkWidget* cookie_details_table_;
62  GtkWidget* cookie_name_entry_;
63  GtkWidget* cookie_content_entry_;
64  GtkWidget* cookie_domain_entry_;
65  GtkWidget* cookie_path_entry_;
66  GtkWidget* cookie_send_for_entry_;
67  GtkWidget* cookie_created_entry_;
68
69  // Note: These two widgets are mutually exclusive based on what
70  // |editable_expiration| was when the cookie view was created. One of these
71  // variables will be NULL.
72  GtkWidget* cookie_expires_entry_;
73  GtkWidget* cookie_expires_combobox_;
74
75  GtkListStore* cookie_expires_combobox_store_;
76
77  // The database details widgets.
78  GtkWidget* database_details_table_;
79  GtkWidget* database_name_entry_;
80  GtkWidget* database_description_entry_;
81  GtkWidget* database_size_entry_;
82  GtkWidget* database_last_modified_entry_;
83
84  // The local storage details widgets.
85  GtkWidget* local_storage_details_table_;
86  GtkWidget* local_storage_origin_entry_;
87  GtkWidget* local_storage_size_entry_;
88  GtkWidget* local_storage_last_modified_entry_;
89
90  // The appcache details widgets.
91  GtkWidget* appcache_details_table_;
92  GtkWidget* appcache_manifest_entry_;
93  GtkWidget* appcache_size_entry_;
94  GtkWidget* appcache_created_entry_;
95  GtkWidget* appcache_last_accessed_entry_;
96
97  // The IndexedDB details widgets.
98  GtkWidget* indexed_db_details_table_;
99  GtkWidget* indexed_db_origin_entry_;
100  GtkWidget* indexed_db_size_entry_;
101  GtkWidget* indexed_db_last_modified_entry_;
102
103  // The local storage item widgets.
104  GtkWidget* local_storage_item_table_;
105  GtkWidget* local_storage_item_origin_entry_;
106  GtkWidget* local_storage_item_key_entry_;
107  GtkWidget* local_storage_item_value_entry_;
108
109  // The database accessed widgets.
110  GtkWidget* database_accessed_table_;
111  GtkWidget* database_accessed_origin_entry_;
112  GtkWidget* database_accessed_name_entry_;
113  GtkWidget* database_accessed_description_entry_;
114  GtkWidget* database_accessed_size_entry_;
115
116  // The appcache created widgets.
117  GtkWidget* appcache_created_table_;
118  GtkWidget* appcache_created_manifest_entry_;
119} GtkChromeCookieView;
120
121typedef struct {
122  GtkFrameClass parent_class;
123} GtkChromeCookieViewClass;
124
125GType gtk_chrome_cookie_view_get_type();
126
127// Builds a new cookie view.
128GtkWidget* gtk_chrome_cookie_view_new(gboolean editable_expiration);
129
130// Clears the cookie view.
131void gtk_chrome_cookie_view_clear(GtkChromeCookieView* widget);
132
133// NOTE: The G_END_DECLS ends here instead of at the end of the document
134// because we want to define some methods on GtkChromeCookieView that take C++
135// objects.
136G_END_DECLS
137// NOTE: ^^^^^^^^^^^^^^^^^^^^^^^
138
139// Switches the display to showing the passed in cookie.
140void gtk_chrome_cookie_view_display_cookie(
141    GtkChromeCookieView* widget,
142    const std::string& domain,
143    const net::CookieMonster::CanonicalCookie& cookie);
144
145// Looks up the cookie_line in CookieMonster and displays that.
146void gtk_chrome_cookie_view_display_cookie_string(
147    GtkChromeCookieView* widget,
148    const GURL& url,
149    const std::string& cookie_line);
150
151// Switches the display to showing the passed in database.
152void gtk_chrome_cookie_view_display_database(
153    GtkChromeCookieView* widget,
154    const BrowsingDataDatabaseHelper::DatabaseInfo& database_info);
155
156// Switches the display to showing the passed in local storage data.
157void gtk_chrome_cookie_view_display_local_storage(
158    GtkChromeCookieView* widget,
159    const BrowsingDataLocalStorageHelper::LocalStorageInfo&
160    local_storage_info);
161
162// Switches the display to showing the passed in app cache.
163void gtk_chrome_cookie_view_display_app_cache(
164    GtkChromeCookieView* widget,
165    const appcache::AppCacheInfo& info);
166
167// Switches the display to showing the passed in IndexedDB data.
168void gtk_chrome_cookie_view_display_indexed_db(
169    GtkChromeCookieView* widget,
170    const BrowsingDataIndexedDBHelper::IndexedDBInfo& info);
171
172// Switches the display to an individual storage item.
173void gtk_chrome_cookie_view_display_local_storage_item(
174    GtkChromeCookieView* widget,
175    const std::string& host,
176    const string16& key,
177    const string16& value);
178
179void gtk_chrome_cookie_view_display_database_accessed(
180    GtkChromeCookieView* self,
181    const std::string& host,
182    const string16& database_name,
183    const string16& display_name,
184    unsigned long estimated_size);
185
186void gtk_chrome_cookie_view_display_appcache_created(
187    GtkChromeCookieView* self,
188    const GURL& manifest_url);
189
190// If |editable_expiration| was true at construction time, returns the value of
191// the combo box. Otherwise, returns false.
192bool gtk_chrome_cookie_view_session_expires(GtkChromeCookieView* self);
193
194#endif  // CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
195