- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / gtk / collected_cookies_gtk.h
1 // Copyright (c) 2012 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
10 #include <gtk/gtk.h>
11
12 #include "base/compiler_specific.h"
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/public/browser/notification_observer.h"
18 #include "content/public/browser/notification_registrar.h"
19 #include "ui/base/gtk/gtk_signal.h"
20
21 class CookiesTreeModel;
22
23 namespace content {
24 class WebContents;
25 }
26
27 // CollectedCookiesGtk is a dialog that displays the allowed and blocked
28 // cookies of the current tab contents.  To display the dialog, invoke
29 // ShowCollectedCookiesDialog() on the delegate of the web contents's
30 // content settings tab helper.
31
32 class CollectedCookiesGtk : public gtk_tree::TreeAdapter::Delegate,
33                             public content::NotificationObserver {
34  public:
35   CollectedCookiesGtk(GtkWindow* parent, content::WebContents* web_contents);
36
37  private:
38   virtual ~CollectedCookiesGtk();
39
40   // Initialize all widgets of this dialog.
41   void Init();
42
43   // True if the selection contains at least one host node.
44   bool SelectionContainsHostNode(GtkTreeSelection* selection,
45                                  gtk_tree::TreeAdapter* adapter);
46
47   // Enable the allow/block buttons if at least one host node is selected.
48   void EnableControls();
49
50   // Add exceptions for all origin nodes within the selection.
51   void AddExceptions(GtkTreeSelection* selection,
52                      gtk_tree::TreeAdapter* adapter,
53                      ContentSetting setting);
54
55   // Notification Observer implementation.
56   virtual void Observe(int type,
57                        const content::NotificationSource& source,
58                        const content::NotificationDetails& details) OVERRIDE;
59
60   // Create the information panes for the allowed and blocked cookies.
61   GtkWidget* CreateAllowedPane();
62   GtkWidget* CreateBlockedPane();
63
64   // Show information about selected cookie in the cookie info view.
65   void ShowCookieInfo(gint current_page);
66   void ShowSelectionInfo(GtkTreeSelection* selection,
67                          gtk_tree::TreeAdapter* adapter);
68
69
70   // Callbacks.
71   CHROMEGTK_CALLBACK_2(CollectedCookiesGtk, void, OnTreeViewRowExpanded,
72                        GtkTreeIter*, GtkTreePath*);
73   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnTreeViewSelectionChange);
74   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnClose);
75   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnBlockAllowedButtonClicked);
76   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnAllowBlockedButtonClicked);
77   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void,
78                        OnForSessionBlockedButtonClicked);
79   CHROMEGTK_CALLBACK_2(CollectedCookiesGtk, void, OnSwitchPage,
80                        gpointer, guint);
81   CHROMEGTK_CALLBACK_0(CollectedCookiesGtk, void, OnDestroy);
82
83   content::NotificationRegistrar registrar_;
84
85   GtkWidget* 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 web contents.
115   content::WebContents* web_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_