• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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