Home | History | Annotate | Download | only in views
      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