Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / download / download_feedback_dialog_view.h
1 // Copyright 2014 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_DOWNLOAD_DOWNLOAD_FEEDBACK_DIALOG_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_FEEDBACK_DIALOG_VIEW_H_
7
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "ui/views/controls/link_listener.h"
11 #include "ui/views/window/dialog_delegate.h"
12
13 namespace views {
14 class MessageBoxView;
15 }
16
17 namespace content {
18 class PageNavigator;
19 }
20
21 class Profile;
22
23 // Asks the user whether s/he wants to participate in the Safe Browsing
24 // download feedback program. Shown only for downloads marked DANGEROUS_HOST
25 // or UNCOMMON_DOWNLOAD. The user should only see this dialog once.
26 class DownloadFeedbackDialogView : public views::DialogDelegate,
27                                    public views::LinkListener {
28  public:
29   // Callback with the user's decision. |accepted| is true if the user clicked
30   // Accept(). Otherwise, assume the user cancelled.
31   typedef base::Callback<void(bool accepted)> UserDecisionCallback;
32
33   static void Show(
34       gfx::NativeWindow parent_window,
35       Profile* profile,
36       content::PageNavigator* navigator,
37       const UserDecisionCallback& callback);
38
39  private:
40   DownloadFeedbackDialogView(
41       Profile* profile,
42       content::PageNavigator* navigator,
43       const UserDecisionCallback& callback);
44   ~DownloadFeedbackDialogView() override;
45
46   // Handles the user's decision.
47   bool OnButtonClicked(bool accepted);
48
49   // views::DialogDelegate:
50   ui::ModalType GetModalType() const override;
51   base::string16 GetWindowTitle() const override;
52   void DeleteDelegate() override;
53   views::Widget* GetWidget() override;
54   const views::Widget* GetWidget() const override;
55   views::View* GetContentsView() override;
56   int GetDefaultDialogButton() const override;
57   base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
58   bool Cancel() override;
59   bool Accept() override;
60   views::View* CreateExtraView() override;
61
62   // views::LinkListener:
63   void LinkClicked(views::Link* source, int event_flags) override;
64
65   Profile* profile_;
66   content::PageNavigator* navigator_;
67   const UserDecisionCallback callback_;
68   views::MessageBoxView* explanation_box_view_;
69   views::Link* link_view_;
70   base::string16 title_text_;
71   base::string16 ok_button_text_;
72   base::string16 cancel_button_text_;
73
74   DISALLOW_COPY_AND_ASSIGN(DownloadFeedbackDialogView);
75 };
76
77 #endif  // CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_FEEDBACK_DIALOG_VIEW_H_