OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013 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_EXTENSIONS_SUSPICIOUS_EXTENSION_BUBBLE_VIEW_H_ | |
6 #define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_SUSPICIOUS_EXTENSION_BUBBLE_VIEW_H_ | |
7 | |
8 #include "chrome/browser/extensions/suspicious_extension_bubble.h" | |
9 #include "ui/views/bubble/bubble_delegate.h" | |
10 #include "ui/views/controls/button/button.h" | |
11 #include "ui/views/controls/link_listener.h" | |
12 | |
13 class Browser; | |
14 | |
15 namespace views { | |
16 class Label; | |
17 class LabelButton; | |
18 class Link; | |
19 class Widget; | |
20 } | |
21 | |
22 namespace extensions { | |
23 | |
24 class SuspiciousExtensionBubbleController; | |
25 | |
26 // This is a class that implements the UI for the bubble showing which | |
27 // extensions look suspicious and have therefore been automatically disabled. | |
28 class SuspiciousExtensionBubbleView : public SuspiciousExtensionBubble, | |
29 public views::BubbleDelegateView, | |
30 public views::ButtonListener, | |
31 public views::LinkListener { | |
32 public: | |
33 // Show the Disabled Extension bubble, if needed. | |
34 static void MaybeShow(Browser* browser, views::View* anchor_view); | |
35 | |
36 // SuspiciousExtensionBubble methods. | |
37 virtual void OnButtonClicked(const base::Closure& callback) OVERRIDE; | |
38 virtual void OnLinkClicked(const base::Closure& callback) OVERRIDE; | |
39 virtual void Show() OVERRIDE; | |
40 | |
41 // WidgetObserver methods. | |
42 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; | |
43 | |
44 private: | |
45 SuspiciousExtensionBubbleView( | |
46 views::View* anchor_view, | |
47 SuspiciousExtensionBubbleController* controller); | |
48 virtual ~SuspiciousExtensionBubbleView(); | |
49 | |
50 // Shows the bubble and updates the counter for how often it has been shown. | |
51 void ShowBubble(); | |
52 | |
53 // views::BubbleDelegateView overrides: | |
54 virtual void Init() OVERRIDE; | |
55 | |
56 // views::ButtonListener implementation. | |
57 virtual void ButtonPressed(views::Button* sender, | |
58 const ui::Event& event) OVERRIDE; | |
59 | |
60 // views::LinkListener implementation. | |
61 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE; | |
62 | |
63 // views::View implementation. | |
64 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; | |
65 virtual void ViewHierarchyChanged( | |
66 const ViewHierarchyChangedDetails& details) OVERRIDE; | |
67 | |
68 base::WeakPtrFactory<SuspiciousExtensionBubbleView> weak_factory_; | |
69 | |
70 // The controller for the bubble. Weak, not owned by us. | |
71 SuspiciousExtensionBubbleController* controller_; | |
72 | |
73 // The headline, labels and buttons on the bubble. | |
74 views::Label* headline_; | |
75 views::Link* learn_more_; | |
76 views::LabelButton* dismiss_button_; | |
77 | |
78 // All actions (link, button, esc) close the bubble, but we need to | |
79 // make sure we don't send dismiss if the link was clicked. | |
80 bool link_clicked_; | |
81 | |
82 // Callbacks into the controller. | |
83 base::Closure button_callback_; | |
84 base::Closure link_callback_; | |
85 | |
86 DISALLOW_COPY_AND_ASSIGN(SuspiciousExtensionBubbleView); | |
87 }; | |
88 | |
89 } // namespace extensions | |
90 | |
91 #endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_SUSPICIOUS_EXTENSION_BUBBLE_VIEW_H
_ | |
OLD | NEW |