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)#ifndef CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <gtk/gtk.h>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browsing_data/browsing_data_appcache_helper.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browsing_data/browsing_data_database_helper.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browsing_data/browsing_data_indexed_db_helper.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CanonicalCookie;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_BEGIN_DECLS
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GTK_TYPE_CHROME_COOKIE_VIEW gtk_chrome_cookie_view_get_type()
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GTK_CHROME_COOKIE_VIEW(obj) \
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (G_TYPE_CHECK_INSTANCE_CAST((obj), \
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GTK_TYPE_CHROME_COOKIE_VIEW, GtkChromeCookieView))
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GTK_CHROME_COOKIE_VIEW_CLASS(klass) \
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (G_TYPE_CHECK_CLASS_CAST((klass), \
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GTK_TYPE_CHROME_COOKIE_VIEW, GtkChromeCookieViewClass))
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GTK_IS_CHROME_COOKIE_VIEW(obj) \
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GTK_TYPE_CHROME_COOKIE_VIEW))
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GTK_IS_CHROME_COOKIE_VIEW_CLASS(klass) \
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (G_TYPE_CHECK_CLASS_TYPE((klass), \
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GTK_TYPE_CHROME_COOKIE_VIEW))
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GTK_CHROME_COOKIE_VIEW_GET_CLASS(obj) \
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (G_TYPE_INSTANCE_GET_CLASS((obj), \
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GTK_TYPE_CHROME_COOKIE_VIEW, GtkChromeCookieViewClass))
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(erg): Refactor the following class. It's continuously grown as more
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// things have been added to it and should probably become a general key/value
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// table. The problem is that any implementation for that would be much more
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// complicated and would require changing a whole lot of code.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkFrame parent;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // All public for testing since I don't think there's a "friend" mechanism in
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // gobject.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* table_box_;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A label we keep around so we can access its GtkStyle* once it is realized.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* first_label_;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The cookie details widgets.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_details_table_;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_name_entry_;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_content_entry_;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_domain_entry_;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_path_entry_;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_send_for_entry_;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_created_entry_;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Note: These two widgets are mutually exclusive based on what
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |editable_expiration| was when the cookie view was created. One of these
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // variables will be NULL.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_expires_entry_;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* cookie_expires_combobox_;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkListStore* cookie_expires_combobox_store_;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The database details widgets.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_details_table_;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_name_entry_;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_description_entry_;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_size_entry_;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_last_modified_entry_;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The local storage details widgets.
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_details_table_;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_origin_entry_;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_size_entry_;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_last_modified_entry_;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The appcache details widgets.
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_details_table_;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_manifest_entry_;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_size_entry_;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_created_entry_;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_last_accessed_entry_;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The IndexedDB details widgets.
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* indexed_db_details_table_;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* indexed_db_origin_entry_;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* indexed_db_size_entry_;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* indexed_db_last_modified_entry_;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The local storage item widgets.
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_item_table_;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_item_origin_entry_;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_item_key_entry_;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* local_storage_item_value_entry_;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The database accessed widgets.
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_accessed_table_;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_accessed_origin_entry_;
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_accessed_name_entry_;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_accessed_description_entry_;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* database_accessed_size_entry_;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The appcache created widgets.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_created_table_;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidget* appcache_created_manifest_entry_;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} GtkChromeCookieView;
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct {
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkFrameClass parent_class;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} GtkChromeCookieViewClass;
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GType gtk_chrome_cookie_view_get_type();
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Builds a new cookie view.
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GtkWidget* gtk_chrome_cookie_view_new(gboolean editable_expiration);
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Clears the cookie view.
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_clear(GtkChromeCookieView* widget);
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: The G_END_DECLS ends here instead of at the end of the document
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// because we want to define some methods on GtkChromeCookieView that take C++
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// objects.
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_END_DECLS
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: ^^^^^^^^^^^^^^^^^^^^^^^
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in cookie.
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_cookie(
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& domain,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const net::CanonicalCookie& cookie);
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Looks up the cookie_line in CookieMonster and displays that.
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_cookie_string(
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& url,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& cookie_line);
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in database.
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_database(
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const BrowsingDataDatabaseHelper::DatabaseInfo& database_info);
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in local storage data.
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_local_storage(
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const BrowsingDataLocalStorageHelper::LocalStorageInfo&
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    local_storage_info);
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in app cache.
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_app_cache(
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const appcache::AppCacheInfo& info);
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to showing the passed in IndexedDB data.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_indexed_db(
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const content::IndexedDBInfo& info);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Switches the display to an individual storage item.
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_local_storage_item(
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* widget,
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& host,
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& key,
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& value);
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_database_accessed(
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& host,
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& database_name,
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const string16& display_name,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long estimated_size);
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void gtk_chrome_cookie_view_display_appcache_created(
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GtkChromeCookieView* self,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& manifest_url);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If |editable_expiration| was true at construction time, returns the value of
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the combo box. Otherwise, returns false.
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool gtk_chrome_cookie_view_session_expires(GtkChromeCookieView* self);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
197