diff options
| author | mad <mad@chromium.org> | 2016-01-13 10:37:12 -0800 |
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2016-01-13 18:38:21 +0000 |
| commit | 569c918257e6001dd1b2f248a55c3b9cabfbce01 (patch) | |
| tree | 8456d9e57d7f4bd32fea7ab409e9724256db7f25 | |
| parent | a9191918994fcda4c8128cde6c1925066df2f08b (diff) | |
| download | chromium_src-569c918257e6001dd1b2f248a55c3b9cabfbce01.zip chromium_src-569c918257e6001dd1b2f248a55c3b9cabfbce01.tar.gz chromium_src-569c918257e6001dd1b2f248a55c3b9cabfbce01.tar.bz2 | |
Don't mark the SRT prompt as closed when it was interacted with.
BUG=537651
Review URL: https://codereview.chromium.org/1579643003
Cr-Commit-Position: refs/heads/master@{#369221}
| -rw-r--r-- | chrome/browser/safe_browsing/srt_global_error_win.cc | 25 | ||||
| -rw-r--r-- | chrome/browser/safe_browsing/srt_global_error_win.h | 4 |
2 files changed, 15 insertions, 14 deletions
diff --git a/chrome/browser/safe_browsing/srt_global_error_win.cc b/chrome/browser/safe_browsing/srt_global_error_win.cc index 68cc85c..db6e4bc 100644 --- a/chrome/browser/safe_browsing/srt_global_error_win.cc +++ b/chrome/browser/safe_browsing/srt_global_error_win.cc @@ -148,13 +148,13 @@ base::string16 SRTGlobalError::GetBubbleViewCancelButtonLabel() { } void SRTGlobalError::OnBubbleViewDidClose(Browser* browser) { - // This won't happen when user interacted with the bubble since DestroySelf is - // called in those cases and will prevent the base class from calling virtual - // methods. This DCHECK makes sure that behavior won't change. - DCHECK(!interacted_); - RecordSRTPromptHistogram(SRT_PROMPT_CLOSED); - g_browser_process->local_state()->SetBoolean(prefs::kSwReporterPendingPrompt, - true); + if (!interacted_) { + // If user didn't interact with the bubble, it means they used the generic + // close bubble button. + RecordSRTPromptHistogram(SRT_PROMPT_CLOSED); + g_browser_process->local_state()->SetBoolean( + prefs::kSwReporterPendingPrompt, true); + } } void SRTGlobalError::BubbleViewAcceptButtonPressed(Browser* browser) { @@ -171,7 +171,7 @@ void SRTGlobalError::BubbleViewCancelButtonPressed(Browser* browser) { BrowserThread::PostBlockingPoolTask( FROM_HERE, base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_)); - DestroySelf(); + OnUserinteractionDone(); } bool SRTGlobalError::ShouldCloseOnDeactivate() const { @@ -189,7 +189,7 @@ void SRTGlobalError::MaybeExecuteSRT() { BrowserThread::PostBlockingPoolTask( FROM_HERE, base::Bind(&MaybeExecuteSRTFromBlockingPool, downloaded_path_, base::ThreadTaskRunnerHandle::Get(), - base::Bind(&SRTGlobalError::DestroySelf, + base::Bind(&SRTGlobalError::OnUserinteractionDone, base::Unretained(this)), base::Bind(&SRTGlobalError::FallbackToDownloadPage, base::Unretained(this)))); @@ -208,12 +208,13 @@ void SRTGlobalError::FallbackToDownloadPage() { BrowserThread::PostBlockingPoolTask( FROM_HERE, base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_)); - DestroySelf(); + OnUserinteractionDone(); } -void SRTGlobalError::DestroySelf() { - // This should only happen when user interacted with the bubble. +void SRTGlobalError::OnUserinteractionDone() { DCHECK(interacted_); + // Once the user interacted with the bubble, we can forget about any pending + // prompt. g_browser_process->local_state()->SetBoolean(prefs::kSwReporterPendingPrompt, false); delete this; diff --git a/chrome/browser/safe_browsing/srt_global_error_win.h b/chrome/browser/safe_browsing/srt_global_error_win.h index 5730f77..b79a226 100644 --- a/chrome/browser/safe_browsing/srt_global_error_win.h +++ b/chrome/browser/safe_browsing/srt_global_error_win.h @@ -59,8 +59,8 @@ class SRTGlobalError : public GlobalErrorWithStandardBubble { // download and execute the SRT. void FallbackToDownloadPage(); - // Destroys this instance. - void DestroySelf(); + // Called when user interaction is done. + void OnUserinteractionDone(); // Used to dismiss the GlobalError, then set to NULL. GlobalErrorService* global_error_service_; |
