Home | History | Annotate | Download | only in gtk
      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 
     19 class GURL;
     20 
     21 G_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.
     49 typedef 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 
    121 typedef struct {
    122   GtkFrameClass parent_class;
    123 } GtkChromeCookieViewClass;
    124 
    125 GType gtk_chrome_cookie_view_get_type();
    126 
    127 // Builds a new cookie view.
    128 GtkWidget* gtk_chrome_cookie_view_new(gboolean editable_expiration);
    129 
    130 // Clears the cookie view.
    131 void 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.
    136 G_END_DECLS
    137 // NOTE: ^^^^^^^^^^^^^^^^^^^^^^^
    138 
    139 // Switches the display to showing the passed in cookie.
    140 void 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.
    146 void 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.
    152 void 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.
    157 void 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.
    163 void 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.
    168 void 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.
    173 void 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 
    179 void 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 
    186 void 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.
    192 bool gtk_chrome_cookie_view_session_expires(GtkChromeCookieView* self);
    193 
    194 #endif  // CHROME_BROWSER_UI_GTK_GTK_CHROME_COOKIE_VIEW_H_
    195