Chromium Code Reviews| Index: chrome/browser/ui/views/download/download_feedback_dialog_view.cc |
| diff --git a/chrome/browser/ui/views/download/download_feedback_dialog_view.cc b/chrome/browser/ui/views/download/download_feedback_dialog_view.cc |
| index ccdfadd3258ac5a0b36392b449013d7e9c2cdffb..1337f0b289ea6e652eda61b8389964c4c5d79ced 100644 |
| --- a/chrome/browser/ui/views/download/download_feedback_dialog_view.cc |
| +++ b/chrome/browser/ui/views/download/download_feedback_dialog_view.cc |
| @@ -7,14 +7,19 @@ |
| #include "base/metrics/histogram.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/supports_user_data.h" |
| +#include "chrome/browser/platform_util.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/views/constrained_window_views.h" |
| +#include "content/public/browser/page_navigator.h" |
| #include "grit/chromium_strings.h" |
| #include "grit/generated_resources.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +#include "ui/views/controls/link.h" |
| #include "ui/views/controls/message_box_view.h" |
| #include "ui/views/widget/widget.h" |
| +using content::OpenURLParams; |
| + |
| namespace { |
| const void* kDialogStatusKey = &kDialogStatusKey; |
| @@ -35,6 +40,7 @@ class DialogStatusData : public base::SupportsUserData::Data { |
| void DownloadFeedbackDialogView::Show( |
| gfx::NativeWindow parent_window, |
| Profile* profile, |
| + content::PageNavigator* navigator, |
| const UserDecisionCallback& callback) { |
| // This dialog should only be shown if it hasn't been shown before. |
| DCHECK(!profile->GetPrefs()->HasPrefPath( |
| @@ -52,7 +58,7 @@ void DownloadFeedbackDialogView::Show( |
| if (data->currently_shown() == false) { |
| data->set_currently_shown(true); |
| DownloadFeedbackDialogView* window = |
| - new DownloadFeedbackDialogView(profile, callback); |
| + new DownloadFeedbackDialogView(profile, navigator, callback); |
| CreateBrowserModalDialogViews(window, parent_window)->Show(); |
| } else { |
| callback.Run(false); |
| @@ -61,17 +67,22 @@ void DownloadFeedbackDialogView::Show( |
| DownloadFeedbackDialogView::DownloadFeedbackDialogView( |
| Profile* profile, |
| + content::PageNavigator* navigator, |
| const UserDecisionCallback& callback) |
| : profile_(profile), |
| + navigator_(navigator), |
| callback_(callback), |
| explanation_box_view_(new views::MessageBoxView( |
| views::MessageBoxView::InitParams(l10n_util::GetStringUTF16( |
| IDS_FEEDBACK_SERVICE_DIALOG_EXPLANATION)))), |
| + link_view_(new views::Link(l10n_util::GetStringUTF16( |
| + IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE_V2))), |
| title_text_(l10n_util::GetStringUTF16(IDS_FEEDBACK_SERVICE_DIALOG_TITLE)), |
| ok_button_text_(l10n_util::GetStringUTF16( |
| IDS_FEEDBACK_SERVICE_DIALOG_OK_BUTTON_LABEL)), |
| cancel_button_text_(l10n_util::GetStringUTF16( |
| IDS_FEEDBACK_SERVICE_DIALOG_CANCEL_BUTTON_LABEL)) { |
| + link_view_->set_listener(this); |
| } |
| DownloadFeedbackDialogView::~DownloadFeedbackDialogView() {} |
| @@ -131,3 +142,19 @@ const views::Widget* DownloadFeedbackDialogView::GetWidget() const { |
| views::View* DownloadFeedbackDialogView::GetContentsView() { |
| return explanation_box_view_; |
| } |
| + |
| +views::View* DownloadFeedbackDialogView::CreateExtraView() { |
| + return link_view_; |
| +} |
| + |
| +void DownloadFeedbackDialogView::LinkClicked( |
| + views::Link* source, int event_flags) { |
| + WindowOpenDisposition disposition = |
| + ui::DispositionFromEventFlags(event_flags); |
| + content::OpenURLParams params( |
| + GURL(l10n_util::GetStringUTF8(IDS_SAFE_BROWSING_PRIVACY_POLICY_URL)), |
| + content::Referrer(), |
| + disposition == CURRENT_TAB ? NEW_FOREGROUND_TAB : disposition, |
| + content::PAGE_TRANSITION_LINK, false); |
| + navigator_->OpenURL(params); |
|
sky
2014/06/17 19:11:28
How do you know navigator_ is still valid by the t
felt
2014/06/17 20:27:31
The navigator is from the download shelf, which wo
sky
2014/06/17 23:54:41
DCHECK(navigator_) wouldn't tell if you the object
|
| +} |