conflicting_module_view_win.h revision 868fa2fe829687343ffae624259930155e16dbd8
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_CONFLICTING_MODULE_VIEW_WIN_H_
6#define CHROME_BROWSER_UI_VIEWS_CONFLICTING_MODULE_VIEW_WIN_H_
7
8#include "content/public/browser/notification_observer.h"
9#include "content/public/browser/notification_registrar.h"
10#include "googleurl/src/gurl.h"
11#include "ui/views/bubble/bubble_delegate.h"
12#include "ui/views/controls/button/button.h"
13
14class Browser;
15
16namespace views {
17class Label;
18class LabelButton;
19}
20
21// This is the class that implements the UI for the bubble showing that there
22// is a 3rd party module loaded that conflicts with Chrome.
23class ConflictingModuleView : public views::BubbleDelegateView,
24                              public views::ButtonListener,
25                              public content::NotificationObserver {
26 public:
27  ConflictingModuleView(views::View* anchor_view,
28                        Browser* browser,
29                        const GURL& help_center_url);
30
31  // Show the Disabled Extension bubble, if needed.
32  static void MaybeShow(Browser* browser, views::View* anchor_view);
33
34 private:
35  virtual ~ConflictingModuleView();
36
37  // Shows the bubble and updates the counter for how often it has been shown.
38  void ShowBubble();
39
40  // Dismiss and make sure the bubble is not shown again. This bubble is a
41  // single-appearance bubble.
42  void DismissBubble();
43
44  // views::BubbleDelegateView implementation:
45  virtual void Init() OVERRIDE;
46
47  // views::ButtonListener implementation.
48  virtual void ButtonPressed(views::Button* sender,
49                             const ui::Event& event) OVERRIDE;
50
51  // views::View implementation.
52  virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
53  virtual void ViewHierarchyChanged(
54      const ViewHierarchyChangedDetails& details) OVERRIDE;
55
56  // content::NotificationObserver implementation.
57  virtual void Observe(
58    int type,
59    const content::NotificationSource& source,
60    const content::NotificationDetails& details) OVERRIDE;
61
62  Browser* browser_;
63
64  content::NotificationRegistrar registrar_;
65
66  // The headline, labels and buttons on the bubble.
67  views::Label* explanation_;
68  views::LabelButton* learn_more_button_;
69  views::LabelButton* not_now_button_;
70
71  // The link to the help center for this conflict.
72  GURL help_center_url_;
73
74  DISALLOW_COPY_AND_ASSIGN(ConflictingModuleView);
75};
76
77#endif  // CHROME_BROWSER_UI_VIEWS_CONFLICTING_MODULE_VIEW_WIN_H_
78