collected_cookies_views.h revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
12bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola// Use of this source code is governed by a BSD-style license that can be 32bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola// found in the LICENSE file. 42bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 52bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#ifndef CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 62bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#define CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 72bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 82bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "base/compiler_specific.h" 92bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "chrome/common/content_settings.h" 102bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "content/public/browser/notification_observer.h" 112bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "content/public/browser/notification_registrar.h" 122bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "ui/views/controls/button/button.h" 132bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "ui/views/controls/tabbed_pane/tabbed_pane_listener.h" 1406120815a252676ea8abfddf4f80f549ef9a9f06Rafael Espindola#include "ui/views/controls/tree/tree_view_controller.h" 152bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#include "ui/views/window/dialog_delegate.h" 162bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 172bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindolaclass CookieInfoView; 182bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindolaclass CookiesTreeModel; 192bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindolaclass InfobarView; 202bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 212bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindolanamespace content { 222bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindolaclass WebContents; 232bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola} 242bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 252bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindolanamespace views { 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass Label; 2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass LabelButton; 2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass TreeView; 2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass Widget; 3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This is the Views implementation of the collected cookies dialog. 3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CollectedCookiesViews is a dialog that displays the allowed and blocked 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// cookies of the current tab contents. To display the dialog, invoke 3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// ShowCollectedCookiesDialog() on the delegate of the WebContents's 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// content settings tab helper. 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesclass CollectedCookiesViews : public views::DialogDelegateView, 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines public content::NotificationObserver, 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines public views::ButtonListener, 41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines public views::TabbedPaneListener, 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines public views::TreeViewController { 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines public: 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines // Use BrowserWindow::ShowCollectedCookiesDialog to show. 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines explicit CollectedCookiesViews(content::WebContents* web_contents); 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines // views::DialogDelegate: 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines virtual string16 GetWindowTitle() const OVERRIDE; 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines virtual int GetDialogButtons() const OVERRIDE; 5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines virtual string16 GetDialogButtonLabel(ui::DialogButton button) const OVERRIDE; 5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines virtual void DeleteDelegate() OVERRIDE; 522bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual bool Cancel() OVERRIDE; 532bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual views::NonClientFrameView* CreateNonClientFrameView( 542bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::Widget* widget) OVERRIDE; 552bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual ui::ModalType GetModalType() const OVERRIDE; 562bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 572bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // views::ButtonListener: 5836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines virtual void ButtonPressed(views::Button* sender, 592bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola const ui::Event& event) OVERRIDE; 602bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 612bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // views::TabbedPaneListener: 622bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual void TabSelectedAt(int index) OVERRIDE; 632bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 642bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // views::TreeViewController: 652bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual void OnTreeViewSelectionChanged(views::TreeView* tree_view) OVERRIDE; 662bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 672bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // views::View: 682bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual gfx::Size GetMinimumSize() OVERRIDE; 692bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual void ViewHierarchyChanged( 702bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola const ViewHierarchyChangedDetails& details) OVERRIDE; 712bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 722bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola private: 732bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual ~CollectedCookiesViews(); 742bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 752bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola void Init(); 762bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 772bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::View* CreateAllowedPane(); 782bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 792bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::View* CreateBlockedPane(); 802bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 812bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // Creates and returns a containing ScrollView around the given tree view. 822bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::View* CreateScrollView(views::TreeView* pane); 832bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 842bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola void EnableControls(); 852bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 862bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola void ShowCookieInfo(); 872bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 882bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola void AddContentException(views::TreeView* tree_view, ContentSetting setting); 892bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 902bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // content::NotificationObserver: 912bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola virtual void Observe(int type, 922bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola const content::NotificationSource& source, 932bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola const content::NotificationDetails& details) OVERRIDE; 942bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 952bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola content::NotificationRegistrar registrar_; 962bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 972bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::Widget* window_; 982bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 992bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // The web contents. 1002bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola content::WebContents* web_contents_; 1012bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1022bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola // Assorted views. 1032bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::Label* allowed_label_; 1042bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::Label* blocked_label_; 1052bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1062bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::TreeView* allowed_cookies_tree_; 1072bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::TreeView* blocked_cookies_tree_; 1082bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1092bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::LabelButton* block_allowed_button_; 1102bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::LabelButton* allow_blocked_button_; 1112bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola views::LabelButton* for_session_blocked_button_; 1122bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1132bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola scoped_ptr<CookiesTreeModel> allowed_cookies_tree_model_; 1142bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola scoped_ptr<CookiesTreeModel> blocked_cookies_tree_model_; 1152bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1162bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola CookieInfoView* cookie_info_view_; 1172bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1182bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola InfobarView* infobar_; 1192bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1202bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola bool status_changed_; 1212bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1222bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola DISALLOW_COPY_AND_ASSIGN(CollectedCookiesViews); 1232bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola}; 1242bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola 1252bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola#endif // CHROME_BROWSER_UI_VIEWS_COLLECTED_COOKIES_VIEWS_H_ 1262bbe3781471936fa0c37ad738fa86b72997c6831Rafael Espindola