• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // This is the Gtk implementation of the collected Cookies dialog.
6 
7 #ifndef CHROME_BROWSER_UI_GTK_COLLECTED_COOKIES_GTK_H_
8 #define CHROME_BROWSER_UI_GTK_COLLECTED_COOKIES_GTK_H_
9 #pragma once
10 
11 #include <gtk/gtk.h>
12 
13 #include "base/memory/scoped_ptr.h"
14 #include "chrome/browser/ui/gtk/constrained_window_gtk.h"
15 #include "chrome/browser/ui/gtk/gtk_tree.h"
16 #include "chrome/common/content_settings.h"
17 #include "content/common/notification_observer.h"
18 #include "content/common/notification_registrar.h"
19 #include "ui/base/gtk/gtk_signal.h"
20 
21 class CookiesTreeModel;
22 
23 // CollectedCookiesGtk is a dialog that displays the allowed and blocked
24 // cookies of the current tab contents.  To display the dialog, invoke
25 // ShowCollectedCookiesDialog() on the delegate of the tab contents.
26 
27 class CollectedCookiesGtk : public ConstrainedDialogDelegate,
28                                    gtk_tree::TreeAdapter::Delegate,
29                                    NotificationObserver {
30  public:
31   CollectedCookiesGtk(GtkWindow* parent, TabContents* tab_contents);
32 
33   // ConstrainedDialogDelegate methods.
34   virtual GtkWidget* GetWidgetRoot();
35   virtual GtkWidget* GetFocusWidget();
36   virtual void DeleteDelegate();
37 
38  private:
39   virtual ~CollectedCookiesGtk();
40 
41   // Initialize all widgets of this dialog.
42   void Init();
43 
44   // True if the selection contains at least one origin node.
45   bool SelectionContainsOriginNode(GtkTreeSelection* selection,
46                                    gtk_tree::TreeAdapter* adapter);
47 
48   // Enable the allow/block buttons if at least one origin node is selected.
49   void EnableControls();
50 
51   // Add exceptions for all origin nodes within the selection.
52   void AddExceptions(GtkTreeSelection* selection,
53                      gtk_tree::TreeAdapter* adapter,
54                      ContentSetting setting);
55 
56   // Notification Observer implementation.
57   virtual void Observe(NotificationType type,
58                        const NotificationSource& source,
59                        const NotificationDetails& details);
60 
61   // Create the information panes for the allowed and blocked cookies.
62   GtkWidget* CreateAllowedPane();
63   GtkWidget* CreateBlockedPane();
64 
65   // Show information about selected cookie in the cookie info view.
66   void ShowCookieInfo(gint current_page);
67   void ShowSelectionInfo(GtkTreeSelection* selection,
68                          gtk_tree::TreeAdapter* adapter);
69 
70 
71   // Callbacks.
72   CHROMEGTK_CALLBACK_2(CollectedCookiesGtk, void, OnTreeViewRowExpanded,
73                        GtkTreeIter*, GtkTreePath*);
74   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnTreeViewSelectionChange);
75   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnClose);
76   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnBlockAllowedButtonClicked);
77   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnAllowBlockedButtonClicked);
78   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void,
79                        OnForSessionBlockedButtonClicked);
80   CHROMEGTK_CALLBACK_2(CollectedCookiesGtk, void, OnSwitchPage,
81                        gpointer, guint);
82 
83   NotificationRegistrar registrar_;
84 
85   ConstrainedWindow* window_;
86 
87   // Widgets of the dialog.
88   GtkWidget* dialog_;
89 
90   GtkWidget* allowed_description_label_;
91   GtkWidget* blocked_description_label_;
92 
93   GtkWidget* block_allowed_cookie_button_;
94 
95   GtkWidget* allow_blocked_cookie_button_;
96   GtkWidget* for_session_blocked_cookie_button_;
97   GtkWidget* close_button_;
98 
99   // The table listing the cookies.
100   GtkWidget* notebook_;
101   GtkWidget* allowed_tree_;
102   GtkWidget* blocked_tree_;
103 
104   GtkTreeSelection* allowed_selection_;
105   GtkTreeSelection* blocked_selection_;
106 
107   // The infobar widget.
108   GtkWidget* infobar_;
109   GtkWidget* infobar_label_;
110 
111   // Displays information about selected cookie.
112   GtkWidget* cookie_info_view_;
113 
114   // The tab contents.
115   TabContents* tab_contents_;
116 
117   bool status_changed_;
118 
119   // The Cookies Table model.
120   scoped_ptr<CookiesTreeModel> allowed_cookies_tree_model_;
121   scoped_ptr<CookiesTreeModel> blocked_cookies_tree_model_;
122   scoped_ptr<gtk_tree::TreeAdapter> allowed_cookies_tree_adapter_;
123   scoped_ptr<gtk_tree::TreeAdapter> blocked_cookies_tree_adapter_;
124 
125   DISALLOW_COPY_AND_ASSIGN(CollectedCookiesGtk);
126 };
127 
128 #endif  // CHROME_BROWSER_UI_GTK_COLLECTED_COOKIES_GTK_H_
129