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 base::string16 GetWindowTitle() const OVERRIDE; 49 virtual int GetDialogButtons() const OVERRIDE; 50 virtual base::string16 GetDialogButtonLabel( 51 ui::DialogButton button) const OVERRIDE; 52 virtual void DeleteDelegate() OVERRIDE; 53 virtual bool Cancel() OVERRIDE; 54 virtual views::NonClientFrameView* CreateNonClientFrameView( 55 views::Widget* widget) OVERRIDE; 56 virtual ui::ModalType GetModalType() const OVERRIDE; 57 58 // views::ButtonListener: 59 virtual void ButtonPressed(views::Button* sender, 60 const ui::Event& event) OVERRIDE; 61 62 // views::TabbedPaneListener: 63 virtual void TabSelectedAt(int index) OVERRIDE; 64 65 // views::TreeViewController: 66 virtual void OnTreeViewSelectionChanged(views::TreeView* tree_view) OVERRIDE; 67 68 // views::View: 69 virtual gfx::Size GetMinimumSize() OVERRIDE; 70 virtual void ViewHierarchyChanged( 71 const ViewHierarchyChangedDetails& details) OVERRIDE; 72 73 private: 74 virtual ~CollectedCookiesViews(); 75 76 void Init(); 77 78 views::View* CreateAllowedPane(); 79 80 views::View* CreateBlockedPane(); 81 82 // Creates and returns a containing ScrollView around the given tree view. 83 views::View* CreateScrollView(views::TreeView* pane); 84 85 void EnableControls(); 86 87 void ShowCookieInfo(); 88 89 void AddContentException(views::TreeView* tree_view, ContentSetting setting); 90 91 // content::NotificationObserver: 92 virtual void Observe(int type, 93 const content::NotificationSource& source, 94 const content::NotificationDetails& details) OVERRIDE; 95 96 content::NotificationRegistrar registrar_; 97 98 views::Widget* window_; 99 100 // The web contents. 101 content::WebContents* web_contents_; 102 103 // Assorted views. 104 views::Label* allowed_label_; 105 views::Label* blocked_label_; 106 107 views::TreeView* allowed_cookies_tree_; 108 views::TreeView* blocked_cookies_tree_; 109 110 views::LabelButton* block_allowed_button_; 111 views::LabelButton* allow_blocked_button_; 112 views::LabelButton* for_session_blocked_button_; 113 114 scoped_ptr<CookiesTreeModel> allowed_cookies_tree_model_; 115 scoped_ptr<CookiesTreeModel> blocked_cookies_tree_model_; 116 117 CookieInfoView* cookie_info_view_; 118 119 InfobarView* infobar_; 120 121 bool status_changed_; 122 123 DISALLOW_COPY_AND_ASSIGN(CollectedCookiesViews); 124 }; 125 126 #endif // CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 127