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