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

Side by Side Diff: chrome/browser/safe_browsing/download_feedback_service.cc

Issue 2439533002: Download Feedback Service should upload all eligible downloads (Closed)
Patch Set: fix comments and nits Created 4 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/download_feedback_service.h" 5 #include "chrome/browser/safe_browsing/download_feedback_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 } 133 }
134 134
135 // static 135 // static
136 void DownloadFeedbackService::RecordEligibleDownloadShown( 136 void DownloadFeedbackService::RecordEligibleDownloadShown(
137 content::DownloadDangerType danger_type) { 137 content::DownloadDangerType danger_type) {
138 UMA_HISTOGRAM_ENUMERATION("SBDownloadFeedback.Eligible", 138 UMA_HISTOGRAM_ENUMERATION("SBDownloadFeedback.Eligible",
139 danger_type, 139 danger_type,
140 content::DOWNLOAD_DANGER_TYPE_MAX); 140 content::DOWNLOAD_DANGER_TYPE_MAX);
141 } 141 }
142 142
143
144 void DownloadFeedbackService::BeginFeedbackForDownload( 143 void DownloadFeedbackService::BeginFeedbackForDownload(
145 content::DownloadItem* download) { 144 content::DownloadItem* download,
145 DownloadCommands::Command download_command) {
146 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 146 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
147
148 UMA_HISTOGRAM_ENUMERATION("SBDownloadFeedback.Activations", 147 UMA_HISTOGRAM_ENUMERATION("SBDownloadFeedback.Activations",
149 download->GetDangerType(), 148 download->GetDangerType(),
150 content::DOWNLOAD_DANGER_TYPE_MAX); 149 content::DOWNLOAD_DANGER_TYPE_MAX);
151 150
152 DownloadFeedbackPings* pings = DownloadFeedbackPings::FromDownload(*download); 151 DownloadFeedbackPings* pings = DownloadFeedbackPings::FromDownload(*download);
153 DCHECK(pings); 152 DCHECK(pings);
154 153
155 download->StealDangerousDownload( 154 download->StealDangerousDownload(
155 download_command == DownloadCommands::DISCARD,
156 base::Bind(&DownloadFeedbackService::BeginFeedbackOrDeleteFile, 156 base::Bind(&DownloadFeedbackService::BeginFeedbackOrDeleteFile,
157 file_task_runner_, 157 file_task_runner_, weak_ptr_factory_.GetWeakPtr(),
158 weak_ptr_factory_.GetWeakPtr(), 158 pings->ping_request(), pings->ping_response()));
159 pings->ping_request(), 159 if (download_command == DownloadCommands::KEEP) {
160 pings->ping_response())); 160 DownloadCommands command(download);
161 command.ExecuteCommand(download_command);
162 }
161 } 163 }
162 164
163 // static 165 // static
164 void DownloadFeedbackService::BeginFeedbackOrDeleteFile( 166 void DownloadFeedbackService::BeginFeedbackOrDeleteFile(
165 const scoped_refptr<base::TaskRunner>& file_task_runner, 167 const scoped_refptr<base::TaskRunner>& file_task_runner,
166 const base::WeakPtr<DownloadFeedbackService>& service, 168 const base::WeakPtr<DownloadFeedbackService>& service,
167 const std::string& ping_request, 169 const std::string& ping_request,
168 const std::string& ping_response, 170 const std::string& ping_response,
169 const base::FilePath& path) { 171 const base::FilePath& path) {
172 if (path.empty())
asanka 2016/11/01 21:09:23 We should probably measure this. Not a big deal if
Jialiu Lin 2016/11/03 20:16:50 Done.
173 return;
174
170 if (service) { 175 if (service) {
171 service->BeginFeedback(ping_request, ping_response, path); 176 service->BeginFeedback(ping_request, ping_response, path);
172 } else { 177 } else {
173 base::FileUtilProxy::DeleteFile(file_task_runner.get(), 178 base::FileUtilProxy::DeleteFile(file_task_runner.get(),
174 path, 179 path,
175 false, 180 false,
176 base::FileUtilProxy::StatusCallback()); 181 base::FileUtilProxy::StatusCallback());
177 } 182 }
178 } 183 }
179 184
180 void DownloadFeedbackService::StartPendingFeedback() { 185 void DownloadFeedbackService::StartPendingFeedback() {
181 DCHECK(!active_feedback_.empty()); 186 DCHECK(!active_feedback_.empty());
182 active_feedback_.front()->Start(base::Bind( 187 active_feedback_.front()->Start(base::Bind(
183 &DownloadFeedbackService::FeedbackComplete, base::Unretained(this))); 188 &DownloadFeedbackService::FeedbackComplete, base::Unretained(this)));
184 } 189 }
185 190
186 void DownloadFeedbackService::BeginFeedback( 191 void DownloadFeedbackService::BeginFeedback(const std::string& ping_request,
187 const std::string& ping_request, 192 const std::string& ping_response,
188 const std::string& ping_response, 193 const base::FilePath& path) {
189 const base::FilePath& path) {
190 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 194 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
191 std::unique_ptr<DownloadFeedback> feedback(DownloadFeedback::Create( 195 std::unique_ptr<DownloadFeedback> feedback(DownloadFeedback::Create(
192 request_context_getter_.get(), file_task_runner_.get(), path, 196 request_context_getter_.get(), file_task_runner_.get(), path,
193 ping_request, ping_response)); 197 ping_request, ping_response));
194 active_feedback_.push(std::move(feedback)); 198 active_feedback_.push(std::move(feedback));
195 UMA_HISTOGRAM_COUNTS_100("SBDownloadFeedback.ActiveFeedbacks", 199 UMA_HISTOGRAM_COUNTS_100("SBDownloadFeedback.ActiveFeedbacks",
196 active_feedback_.size()); 200 active_feedback_.size());
197 201
198 if (active_feedback_.size() == 1) 202 if (active_feedback_.size() == 1)
199 StartPendingFeedback(); 203 StartPendingFeedback();
200 } 204 }
201 205
202 void DownloadFeedbackService::FeedbackComplete() { 206 void DownloadFeedbackService::FeedbackComplete() {
203 DVLOG(1) << __func__; 207 DVLOG(1) << __func__;
204 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 208 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
205 DCHECK(!active_feedback_.empty()); 209 DCHECK(!active_feedback_.empty());
206 active_feedback_.pop(); 210 active_feedback_.pop();
207 if (!active_feedback_.empty()) 211 if (!active_feedback_.empty())
208 StartPendingFeedback(); 212 StartPendingFeedback();
209 } 213 }
210 214
211 } // namespace safe_browsing 215 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698