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 #ifndef CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 6 #define CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 7 8 #include "base/compiler_specific.h" 9 #include "chrome/common/content_settings.h" 10 #include "content/public/browser/notification_observer.h" 11 #include "content/public/browser/notification_registrar.h" 12 #include "ui/views/controls/button/button.h" 13 #include "ui/views/controls/tabbed_pane/tabbed_pane_listener.h" 14 #include "ui/views/controls/tree/tree_view_controller.h" 15 #include "ui/views/window/dialog_delegate.h" 16 17 class CookieInfoView; 18 class CookiesTreeModel; 19 class InfobarView; 20 21 namespace content { 22 class WebContents; 23 } 24 25 namespace views { 26 class Label; 27 class LabelButton; 28 class TreeView; 29 class Widget; 30 } 31 32 // This is the Views implementation of the collected cookies dialog. 33 // 34 // CollectedCookiesViews is a dialog that displays the allowed and blocked 35 // cookies of the current tab contents. To display the dialog, invoke 36 // ShowCollectedCookiesDialog() on the delegate of the WebContents's 37 // content settings tab helper. 38 class CollectedCookiesViews : public views::DialogDelegateView, 39 public content::NotificationObserver, 40 public views::ButtonListener, 41 public views::TabbedPaneListener, 42 public views::TreeViewController { 43 public: 44 // Use BrowserWindow::ShowCollectedCookiesDialog to show. 45 explicit CollectedCookiesViews(content::WebContents* web_contents); 46 47 // views::DialogDelegate: 48 virtual string16 GetWindowTitle() const OVERRIDE; 49 virtual int GetDialogButtons() const OVERRIDE; 50 virtual string16 GetDialogButtonLabel(ui::DialogButton button) const OVERRIDE; 51 virtual void DeleteDelegate() OVERRIDE; 52 virtual bool Cancel() OVERRIDE; 53 virtual views::NonClientFrameView* CreateNonClientFrameView( 54 views::Widget* widget) OVERRIDE; 55 virtual ui::ModalType GetModalType() const OVERRIDE; 56 57 // views::ButtonListener: 58 virtual void ButtonPressed(views::Button* sender, 59 const ui::Event& event) OVERRIDE; 60 61 // views::TabbedPaneListener: 62 virtual void TabSelectedAt(int index) OVERRIDE; 63 64 // views::TreeViewController: 65 virtual void OnTreeViewSelectionChanged(views::TreeView* tree_view) OVERRIDE; 66 67 // views::View: 68 virtual void ViewHierarchyChanged( 69 const ViewHierarchyChangedDetails& details) OVERRIDE; 70 71 private: 72 virtual ~CollectedCookiesViews(); 73 74 void Init(); 75 76 views::View* CreateAllowedPane(); 77 78 views::View* CreateBlockedPane(); 79 80 // Creates and returns a containing ScrollView around the given tree view. 81 views::View* CreateScrollView(views::TreeView* pane); 82 83 void EnableControls(); 84 85 void ShowCookieInfo(); 86 87 void AddContentException(views::TreeView* tree_view, ContentSetting setting); 88 89 // content::NotificationObserver: 90 virtual void Observe(int type, 91 const content::NotificationSource& source, 92 const content::NotificationDetails& details) OVERRIDE; 93 94 content::NotificationRegistrar registrar_; 95 96 views::Widget* window_; 97 98 // The web contents. 99 content::WebContents* web_contents_; 100 101 // Assorted views. 102 views::Label* allowed_label_; 103 views::Label* blocked_label_; 104 105 views::TreeView* allowed_cookies_tree_; 106 views::TreeView* blocked_cookies_tree_; 107 108 views::LabelButton* block_allowed_button_; 109 views::LabelButton* allow_blocked_button_; 110 views::LabelButton* for_session_blocked_button_; 111 112 scoped_ptr<CookiesTreeModel> allowed_cookies_tree_model_; 113 scoped_ptr<CookiesTreeModel> blocked_cookies_tree_model_; 114 115 CookieInfoView* cookie_info_view_; 116 117 InfobarView* infobar_; 118 119 bool status_changed_; 120 121 DISALLOW_COPY_AND_ASSIGN(CollectedCookiesViews); 122 }; 123 124 #endif // CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 125