collected_cookies_views.h revision 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df
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
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 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