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

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

Issue 6277002: Remove thumbnails from the ClientSideDetectionService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/client_side_detection_service.h" 5 #include "chrome/browser/safe_browsing/client_side_detection_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util_proxy.h" 9 #include "base/file_util_proxy.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/platform_file.h" 12 #include "base/platform_file.h"
13 #include "base/ref_counted_memory.h"
14 #include "base/scoped_ptr.h" 13 #include "base/scoped_ptr.h"
15 #include "base/stl_util-inl.h" 14 #include "base/stl_util-inl.h"
16 #include "base/task.h" 15 #include "base/task.h"
17 #include "chrome/browser/browser_thread.h" 16 #include "chrome/browser/browser_thread.h"
18 #include "chrome/browser/safe_browsing/csd.pb.h" 17 #include "chrome/browser/safe_browsing/csd.pb.h"
19 #include "chrome/common/net/http_return.h" 18 #include "chrome/common/net/http_return.h"
20 #include "chrome/common/net/url_fetcher.h" 19 #include "chrome/common/net/url_fetcher.h"
21 #include "chrome/common/net/url_request_context_getter.h" 20 #include "chrome/common/net/url_request_context_getter.h"
22 #include "gfx/codec/png_codec.h"
23 #include "googleurl/src/gurl.h" 21 #include "googleurl/src/gurl.h"
24 #include "net/base/load_flags.h" 22 #include "net/base/load_flags.h"
25 #include "net/url_request/url_request_status.h" 23 #include "net/url_request/url_request_status.h"
26 #include "third_party/skia/include/core/SkBitmap.h"
27 24
28 namespace safe_browsing { 25 namespace safe_browsing {
29 26
30 const char ClientSideDetectionService::kClientReportPhishingUrl[] = 27 const char ClientSideDetectionService::kClientReportPhishingUrl[] =
31 "https://sb-ssl.google.com/safebrowsing/clientreport/phishing"; 28 "https://sb-ssl.google.com/safebrowsing/clientreport/phishing";
32 const char ClientSideDetectionService::kClientModelUrl[] = 29 const char ClientSideDetectionService::kClientModelUrl[] =
33 "https://ssl.gstatic.com/safebrowsing/csd/client_model_v0.pb"; 30 "https://ssl.gstatic.com/safebrowsing/csd/client_model_v0.pb";
34 31
35 struct ClientSideDetectionService::ClientReportInfo { 32 struct ClientSideDetectionService::ClientReportInfo {
36 scoped_ptr<ClientReportPhishingRequestCallback> callback; 33 scoped_ptr<ClientReportPhishingRequestCallback> callback;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 82 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
86 MessageLoop::current()->PostTask( 83 MessageLoop::current()->PostTask(
87 FROM_HERE, 84 FROM_HERE,
88 method_factory_.NewRunnableMethod( 85 method_factory_.NewRunnableMethod(
89 &ClientSideDetectionService::StartGetModelFile, callback)); 86 &ClientSideDetectionService::StartGetModelFile, callback));
90 } 87 }
91 88
92 void ClientSideDetectionService::SendClientReportPhishingRequest( 89 void ClientSideDetectionService::SendClientReportPhishingRequest(
93 const GURL& phishing_url, 90 const GURL& phishing_url,
94 double score, 91 double score,
95 SkBitmap thumbnail,
96 ClientReportPhishingRequestCallback* callback) { 92 ClientReportPhishingRequestCallback* callback) {
97 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 93 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
98 MessageLoop::current()->PostTask( 94 MessageLoop::current()->PostTask(
99 FROM_HERE, 95 FROM_HERE,
100 method_factory_.NewRunnableMethod( 96 method_factory_.NewRunnableMethod(
101 &ClientSideDetectionService::StartClientReportPhishingRequest, 97 &ClientSideDetectionService::StartClientReportPhishingRequest,
102 phishing_url, score, thumbnail, callback)); 98 phishing_url, score, callback));
103 } 99 }
104 100
105 void ClientSideDetectionService::OnURLFetchComplete( 101 void ClientSideDetectionService::OnURLFetchComplete(
106 const URLFetcher* source, 102 const URLFetcher* source,
107 const GURL& url, 103 const GURL& url,
108 const net::URLRequestStatus& status, 104 const net::URLRequestStatus& status,
109 int response_code, 105 int response_code,
110 const ResponseCookies& cookies, 106 const ResponseCookies& cookies,
111 const std::string& data) { 107 const std::string& data) {
112 if (source == model_fetcher_) { 108 if (source == model_fetcher_) {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 // The model is either in READY or ERROR state which means we can 215 // The model is either in READY or ERROR state which means we can
220 // call the callback right away. 216 // call the callback right away.
221 callback->Run(model_file_); 217 callback->Run(model_file_);
222 delete callback; 218 delete callback;
223 } 219 }
224 } 220 }
225 221
226 void ClientSideDetectionService::StartClientReportPhishingRequest( 222 void ClientSideDetectionService::StartClientReportPhishingRequest(
227 const GURL& phishing_url, 223 const GURL& phishing_url,
228 double score, 224 double score,
229 SkBitmap thumbnail,
230 ClientReportPhishingRequestCallback* callback) { 225 ClientReportPhishingRequestCallback* callback) {
231 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 226 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
232 scoped_ptr<ClientReportPhishingRequestCallback> cb(callback); 227 scoped_ptr<ClientReportPhishingRequestCallback> cb(callback);
233 // The server expects an encoded PNG image.
234 scoped_refptr<RefCountedBytes> thumbnail_data(new RefCountedBytes);
235 SkAutoLockPixels lock(thumbnail);
236 if (!thumbnail.readyToDraw() ||
237 !gfx::PNGCodec::EncodeBGRASkBitmap(thumbnail,
238 true /* discard_transparency */,
239 &thumbnail_data->data)) {
240 cb->Run(phishing_url, false);
241 return;
242 }
243 228
244 ClientPhishingRequest request; 229 ClientPhishingRequest request;
245 request.set_url(phishing_url.spec()); 230 request.set_url(phishing_url.spec());
246 request.set_client_score(static_cast<float>(score)); 231 request.set_client_score(static_cast<float>(score));
247 request.set_snapshot(reinterpret_cast<const char*>(thumbnail_data->front()),
248 thumbnail_data->size());
249 std::string request_data; 232 std::string request_data;
250 if (!request.SerializeToString(&request_data)) { 233 if (!request.SerializeToString(&request_data)) {
251 // For consistency, we always call the callback asynchronously, rather than 234 // For consistency, we always call the callback asynchronously, rather than
252 // directly from this method. 235 // directly from this method.
253 LOG(ERROR) << "Unable to serialize the CSD request. Proto file changed?"; 236 LOG(ERROR) << "Unable to serialize the CSD request. Proto file changed?";
254 cb->Run(phishing_url, false); 237 cb->Run(phishing_url, false);
255 return; 238 return;
256 } 239 }
257 240
258 URLFetcher* fetcher = URLFetcher::Create(0 /* ID is not used */, 241 URLFetcher* fetcher = URLFetcher::Create(0 /* ID is not used */,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 info->callback->Run(info->phishing_url, response.phishy()); 300 info->callback->Run(info->phishing_url, response.phishy());
318 } else { 301 } else {
319 DLOG(ERROR) << "Unable to get the server verdict for URL: " 302 DLOG(ERROR) << "Unable to get the server verdict for URL: "
320 << info->phishing_url; 303 << info->phishing_url;
321 info->callback->Run(info->phishing_url, false); 304 info->callback->Run(info->phishing_url, false);
322 } 305 }
323 client_phishing_reports_.erase(source); 306 client_phishing_reports_.erase(source);
324 } 307 }
325 308
326 } // namespace safe_browsing 309 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698