Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(680)

Side by Side Diff: chrome/browser/safe_browsing/chrome_cleaner/srt_global_error_win.cc

Issue 2858073002: Use constexpr TaskTraits constructor in chrome. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/safe_browsing/chrome_cleaner/srt_global_error_win.h" 5 #include "chrome/browser/safe_browsing/chrome_cleaner/srt_global_error_win.h"
6 6
7 #include "base/base_paths.h" 7 #include "base/base_paths.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 SRTGlobalError::SRTGlobalError(GlobalErrorService* global_error_service, 105 SRTGlobalError::SRTGlobalError(GlobalErrorService* global_error_service,
106 const base::FilePath& downloaded_path) 106 const base::FilePath& downloaded_path)
107 : global_error_service_(global_error_service), 107 : global_error_service_(global_error_service),
108 downloaded_path_(downloaded_path) { 108 downloaded_path_(downloaded_path) {
109 DCHECK(global_error_service_); 109 DCHECK(global_error_service_);
110 } 110 }
111 111
112 SRTGlobalError::~SRTGlobalError() { 112 SRTGlobalError::~SRTGlobalError() {
113 if (!interacted_) { 113 if (!interacted_) {
114 base::PostTaskWithTraits( 114 base::PostTaskWithTraits(
115 FROM_HERE, base::TaskTraits().MayBlock().WithPriority( 115 FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
116 base::TaskPriority::BACKGROUND),
117 base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_)); 116 base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_));
118 } 117 }
119 } 118 }
120 119
121 bool SRTGlobalError::HasMenuItem() { 120 bool SRTGlobalError::HasMenuItem() {
122 return true; 121 return true;
123 } 122 }
124 123
125 int SRTGlobalError::MenuItemCommandID() { 124 int SRTGlobalError::MenuItemCommandID() {
126 return IDC_SHOW_SRT_BUBBLE; 125 return IDC_SHOW_SRT_BUBBLE;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 } 182 }
184 183
185 void SRTGlobalError::BubbleViewAcceptButtonPressed(Browser* browser) { 184 void SRTGlobalError::BubbleViewAcceptButtonPressed(Browser* browser) {
186 OnUserinteractionStarted(SRT_PROMPT_ACCEPTED); 185 OnUserinteractionStarted(SRT_PROMPT_ACCEPTED);
187 MaybeExecuteSRT(); 186 MaybeExecuteSRT();
188 } 187 }
189 188
190 void SRTGlobalError::BubbleViewCancelButtonPressed(Browser* browser) { 189 void SRTGlobalError::BubbleViewCancelButtonPressed(Browser* browser) {
191 OnUserinteractionStarted(SRT_PROMPT_DENIED); 190 OnUserinteractionStarted(SRT_PROMPT_DENIED);
192 base::PostTaskWithTraits( 191 base::PostTaskWithTraits(
193 FROM_HERE, base::TaskTraits().MayBlock().WithPriority( 192 FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
194 base::TaskPriority::BACKGROUND),
195 base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_)); 193 base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_));
196 OnUserinteractionDone(); 194 OnUserinteractionDone();
197 } 195 }
198 196
199 bool SRTGlobalError::ShouldCloseOnDeactivate() const { 197 bool SRTGlobalError::ShouldCloseOnDeactivate() const {
200 return false; 198 return false;
201 } 199 }
202 200
203 void SRTGlobalError::MaybeExecuteSRT() { 201 void SRTGlobalError::MaybeExecuteSRT() {
204 if (downloaded_path_.empty()) { 202 if (downloaded_path_.empty()) {
205 FallbackToDownloadPage(); 203 FallbackToDownloadPage();
206 return; 204 return;
207 } 205 }
208 // At this point, this object owns itself, since ownership has been taken back 206 // At this point, this object owns itself, since ownership has been taken back
209 // from the global_error_service_ in the call to OnUserInteractionStarted. 207 // from the global_error_service_ in the call to OnUserInteractionStarted.
210 // This means that it is safe to use base::Unretained here. 208 // This means that it is safe to use base::Unretained here.
211 base::PostTaskWithTraitsAndReplyWithResult( 209 base::PostTaskWithTraitsAndReplyWithResult(
212 FROM_HERE, 210 FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
213 base::TaskTraits().MayBlock().WithPriority(
214 base::TaskPriority::BACKGROUND),
215 base::Bind( 211 base::Bind(
216 &MaybeExecuteSRTFromBlockingPool, downloaded_path_, 212 &MaybeExecuteSRTFromBlockingPool, downloaded_path_,
217 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(), 213 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(),
218 SafeBrowsingExtendedReportingEnabled(), 214 SafeBrowsingExtendedReportingEnabled(),
219 bubble_shown_from_menu_ 215 bubble_shown_from_menu_
220 ? chrome_cleaner::ChromePromptValue::kShownFromMenu 216 ? chrome_cleaner::ChromePromptValue::kShownFromMenu
221 : chrome_cleaner::ChromePromptValue::kPrompted), 217 : chrome_cleaner::ChromePromptValue::kPrompted),
222 base::Bind( 218 base::Bind(
223 [](SRTGlobalError* self, bool success) { 219 [](SRTGlobalError* self, bool success) {
224 if (success) 220 if (success)
225 self->OnUserinteractionDone(); 221 self->OnUserinteractionDone();
226 else 222 else
227 self->FallbackToDownloadPage(); 223 self->FallbackToDownloadPage();
228 }, 224 },
229 base::Unretained(this))); 225 base::Unretained(this)));
230 } 226 }
231 227
232 void SRTGlobalError::FallbackToDownloadPage() { 228 void SRTGlobalError::FallbackToDownloadPage() {
233 RecordSRTPromptHistogram(SRT_PROMPT_FALLBACK); 229 RecordSRTPromptHistogram(SRT_PROMPT_FALLBACK);
234 230
235 Browser* browser = chrome::FindLastActive(); 231 Browser* browser = chrome::FindLastActive();
236 if (browser) { 232 if (browser) {
237 browser->OpenURL( 233 browser->OpenURL(
238 content::OpenURLParams(GURL(kSRTDownloadURL), content::Referrer(), 234 content::OpenURLParams(GURL(kSRTDownloadURL), content::Referrer(),
239 WindowOpenDisposition::NEW_FOREGROUND_TAB, 235 WindowOpenDisposition::NEW_FOREGROUND_TAB,
240 ui::PAGE_TRANSITION_LINK, false)); 236 ui::PAGE_TRANSITION_LINK, false));
241 } 237 }
242 238
243 base::PostTaskWithTraits( 239 base::PostTaskWithTraits(
244 FROM_HERE, base::TaskTraits().MayBlock().WithPriority( 240 FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
245 base::TaskPriority::BACKGROUND),
246 base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_)); 241 base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_));
247 OnUserinteractionDone(); 242 OnUserinteractionDone();
248 } 243 }
249 244
250 void SRTGlobalError::OnUserinteractionStarted( 245 void SRTGlobalError::OnUserinteractionStarted(
251 SRTPromptHistogramValue histogram_value) { 246 SRTPromptHistogramValue histogram_value) {
252 // This is for cases where the UI doesn't go away quickly enough and user 247 // This is for cases where the UI doesn't go away quickly enough and user
253 // might click on the button more than once, or more than one button. 248 // might click on the button more than once, or more than one button.
254 if (interacted_) 249 if (interacted_)
255 return; 250 return;
256 RecordSRTPromptHistogram(histogram_value); 251 RecordSRTPromptHistogram(histogram_value);
257 interacted_ = true; 252 interacted_ = true;
258 if (global_error_service_) { 253 if (global_error_service_) {
259 global_error_service_->RemoveGlobalError(this).release(); 254 global_error_service_->RemoveGlobalError(this).release();
260 global_error_service_ = nullptr; 255 global_error_service_ = nullptr;
261 } 256 }
262 } 257 }
263 258
264 void SRTGlobalError::OnUserinteractionDone() { 259 void SRTGlobalError::OnUserinteractionDone() {
265 DCHECK(interacted_); 260 DCHECK(interacted_);
266 // Once the user interacted with the bubble, we can forget about any pending 261 // Once the user interacted with the bubble, we can forget about any pending
267 // prompt. 262 // prompt.
268 g_browser_process->local_state()->SetBoolean(prefs::kSwReporterPendingPrompt, 263 g_browser_process->local_state()->SetBoolean(prefs::kSwReporterPendingPrompt,
269 false); 264 false);
270 delete this; 265 delete this;
271 } 266 }
272 267
273 } // namespace safe_browsing 268 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698