[Metrics] Make MetricsStateManager take a callback param to check if UMA is enabled.
[chromium-blink-merge.git] / chrome / browser / ui / views / extensions / media_galleries_dialog_views.h
blob2eff5123861b1ded10268b9121269920b4f23587
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.
5 #ifndef CHROME_BROWSER_UI_VIEWS_EXTENSIONS_MEDIA_GALLERIES_DIALOG_VIEWS_H_
6 #define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_MEDIA_GALLERIES_DIALOG_VIEWS_H_
8 #include <map>
10 #include "base/compiler_specific.h"
11 #include "chrome/browser/media_galleries/media_galleries_dialog_controller.h"
12 #include "ui/views/context_menu_controller.h"
13 #include "ui/views/controls/button/button.h"
14 #include "ui/views/window/dialog_delegate.h"
16 namespace views {
17 class Checkbox;
18 class LabelButton;
19 class MenuRunner;
20 class Widget;
23 class MediaGalleryCheckboxView;
25 // The media galleries configuration view for Views. It will immediately show
26 // upon construction.
27 class MediaGalleriesDialogViews : public MediaGalleriesDialog,
28 public views::ButtonListener,
29 public views::ContextMenuController,
30 public views::DialogDelegate {
31 public:
32 explicit MediaGalleriesDialogViews(
33 MediaGalleriesDialogController* controller);
34 virtual ~MediaGalleriesDialogViews();
36 // MediaGalleriesDialog implementation:
37 virtual void UpdateGalleries() OVERRIDE;
39 // views::DialogDelegate implementation:
40 virtual base::string16 GetWindowTitle() const OVERRIDE;
41 virtual void DeleteDelegate() OVERRIDE;
42 virtual views::Widget* GetWidget() OVERRIDE;
43 virtual const views::Widget* GetWidget() const OVERRIDE;
44 virtual views::View* GetContentsView() OVERRIDE;
45 virtual base::string16 GetDialogButtonLabel(
46 ui::DialogButton button) const OVERRIDE;
47 virtual bool IsDialogButtonEnabled(ui::DialogButton button) const OVERRIDE;
48 virtual ui::ModalType GetModalType() const OVERRIDE;
49 virtual views::View* CreateExtraView() OVERRIDE;
50 virtual bool Cancel() OVERRIDE;
51 virtual bool Accept() OVERRIDE;
53 // views::ButtonListener implementation:
54 virtual void ButtonPressed(views::Button* sender,
55 const ui::Event& event) OVERRIDE;
57 // views::ContextMenuController implementation:
58 virtual void ShowContextMenuForView(views::View* source,
59 const gfx::Point& point,
60 ui::MenuSourceType source_type) OVERRIDE;
62 private:
63 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, InitializeCheckboxes);
64 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, ToggleCheckboxes);
65 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, UpdateAdds);
66 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, ForgetDeletes);
68 typedef std::map<GalleryDialogId, MediaGalleryCheckboxView*> CheckboxMap;
70 void InitChildViews();
72 // Adds a checkbox or updates an existing checkbox. Returns true if a new one
73 // was added.
74 bool AddOrUpdateGallery(
75 const MediaGalleriesDialogController::GalleryPermission& gallery,
76 views::View* container,
77 int trailing_vertical_space);
79 void ShowContextMenu(const gfx::Point& point,
80 ui::MenuSourceType source_type,
81 GalleryDialogId id);
83 // Whether |controller_| has a valid WebContents or not.
84 // In unit tests, it may not.
85 bool ControllerHasWebContents() const;
87 MediaGalleriesDialogController* controller_;
89 // The containing window (a weak pointer).
90 views::Widget* window_;
92 // The contents of the dialog. Owned by |window_|'s RootView except for tests.
93 views::View* contents_;
95 // A map from gallery ID to views::Checkbox view.
96 CheckboxMap checkbox_map_;
98 // Pointer to the button to add a new gallery. Owned by parent in
99 // the dialog views tree.
100 views::LabelButton* add_gallery_button_;
102 // This tracks whether the confirm button can be clicked. It starts as false
103 // if no checkboxes are ticked. After there is any interaction, or some
104 // checkboxes start checked, this will be true.
105 bool confirm_available_;
107 // True if the user has pressed accept.
108 bool accepted_;
110 scoped_ptr<views::MenuRunner> context_menu_runner_;
112 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogViews);
115 #endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_MEDIA_GALLERIES_DIALOG_VIEWS_H_