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