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

Side by Side Diff: chrome/browser/safe_browsing/incident_reporting/resource_request_detector.cc

Issue 1870003002: Convert //chrome/browser/safe_browsing from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and address comments Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/incident_reporting/resource_request_detec tor.h" 5 #include "chrome/browser/safe_browsing/incident_reporting/resource_request_detec tor.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h"
9 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/safe_browsing/incident_reporting/incident_receiver.h" 11 #include "chrome/browser/safe_browsing/incident_reporting/incident_receiver.h"
11 #include "chrome/browser/safe_browsing/incident_reporting/resource_request_incid ent.h" 12 #include "chrome/browser/safe_browsing/incident_reporting/resource_request_incid ent.h"
12 #include "chrome/common/safe_browsing/csd.pb.h" 13 #include "chrome/common/safe_browsing/csd.pb.h"
13 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/render_frame_host.h" 15 #include "content/public/browser/render_frame_host.h"
15 #include "content/public/browser/render_process_host.h" 16 #include "content/public/browser/render_process_host.h"
16 #include "content/public/browser/resource_request_info.h" 17 #include "content/public/browser/resource_request_info.h"
17 #include "content/public/browser/site_instance.h" 18 #include "content/public/browser/site_instance.h"
18 #include "crypto/sha2.h" 19 #include "crypto/sha2.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 55
55 // Implementation of SafeBrowsingDatabaseManager::Client that is used to lookup 56 // Implementation of SafeBrowsingDatabaseManager::Client that is used to lookup
56 // a resource blacklist. Can be constructed on any thread. 57 // a resource blacklist. Can be constructed on any thread.
57 class ResourceRequestDetectorClient 58 class ResourceRequestDetectorClient
58 : public SafeBrowsingDatabaseManager::Client, 59 : public SafeBrowsingDatabaseManager::Client,
59 public base::RefCountedThreadSafe<ResourceRequestDetectorClient> { 60 public base::RefCountedThreadSafe<ResourceRequestDetectorClient> {
60 public: 61 public:
61 using ResourceRequestIncidentMessage = 62 using ResourceRequestIncidentMessage =
62 ClientIncidentReport::IncidentData::ResourceRequestIncident; 63 ClientIncidentReport::IncidentData::ResourceRequestIncident;
63 64
64 typedef base::Callback<void(scoped_ptr<ResourceRequestIncidentMessage>)> 65 typedef base::Callback<void(std::unique_ptr<ResourceRequestIncidentMessage>)>
65 OnResultCallback; 66 OnResultCallback;
66 67
67 ResourceRequestDetectorClient( 68 ResourceRequestDetectorClient(
68 const GURL& resource_url, 69 const GURL& resource_url,
69 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager, 70 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager,
70 const OnResultCallback& callback) 71 const OnResultCallback& callback)
71 : database_manager_(database_manager) 72 : database_manager_(database_manager)
72 , callback_(callback) { 73 , callback_(callback) {
73 content::BrowserThread::PostTask( 74 content::BrowserThread::PostTask(
74 content::BrowserThread::IO, FROM_HERE, 75 content::BrowserThread::IO, FROM_HERE,
(...skipping 18 matching lines...) Expand all
93 // client object may be destroyed immediately. 94 // client object may be destroyed immediately.
94 if (database_manager_->CheckResourceUrl(resource_url, this)) { 95 if (database_manager_->CheckResourceUrl(resource_url, this)) {
95 Release(); 96 Release();
96 } 97 }
97 } 98 }
98 99
99 void OnCheckResourceUrlResult(const GURL& url, 100 void OnCheckResourceUrlResult(const GURL& url,
100 SBThreatType threat_type, 101 SBThreatType threat_type,
101 const std::string& threat_hash) override { 102 const std::string& threat_hash) override {
102 if (threat_type == SB_THREAT_TYPE_BLACKLISTED_RESOURCE) { 103 if (threat_type == SB_THREAT_TYPE_BLACKLISTED_RESOURCE) {
103 scoped_ptr<ResourceRequestIncidentMessage> incident_data( 104 std::unique_ptr<ResourceRequestIncidentMessage> incident_data(
104 new ResourceRequestIncidentMessage()); 105 new ResourceRequestIncidentMessage());
105 incident_data->set_type(ResourceRequestIncidentMessage::TYPE_PATTERN); 106 incident_data->set_type(ResourceRequestIncidentMessage::TYPE_PATTERN);
106 incident_data->set_digest(threat_hash); 107 incident_data->set_digest(threat_hash);
107 content::BrowserThread::PostTask( 108 content::BrowserThread::PostTask(
108 content::BrowserThread::UI, FROM_HERE, 109 content::BrowserThread::UI, FROM_HERE,
109 base::Bind(callback_, base::Passed(&incident_data))); 110 base::Bind(callback_, base::Passed(&incident_data)));
110 } 111 }
111 Release(); // Balanced in StartCheck. 112 Release(); // Balanced in StartCheck.
112 } 113 }
113 114
114 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; 115 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_;
115 OnResultCallback callback_; 116 OnResultCallback callback_;
116 117
117 DISALLOW_COPY_AND_ASSIGN(ResourceRequestDetectorClient); 118 DISALLOW_COPY_AND_ASSIGN(ResourceRequestDetectorClient);
118 }; 119 };
119 120
120 } // namespace 121 } // namespace
121 122
122 ResourceRequestDetector::ResourceRequestDetector( 123 ResourceRequestDetector::ResourceRequestDetector(
123 scoped_refptr<SafeBrowsingDatabaseManager> database_manager, 124 scoped_refptr<SafeBrowsingDatabaseManager> database_manager,
124 scoped_ptr<IncidentReceiver> incident_receiver) 125 std::unique_ptr<IncidentReceiver> incident_receiver)
125 : incident_receiver_(std::move(incident_receiver)), 126 : incident_receiver_(std::move(incident_receiver)),
126 database_manager_(database_manager), 127 database_manager_(database_manager),
127 allow_null_profile_for_testing_(false), 128 allow_null_profile_for_testing_(false),
128 weak_ptr_factory_(this) { 129 weak_ptr_factory_(this) {}
129 }
130 130
131 ResourceRequestDetector::~ResourceRequestDetector() { 131 ResourceRequestDetector::~ResourceRequestDetector() {
132 } 132 }
133 133
134 void ResourceRequestDetector::OnResourceRequest( 134 void ResourceRequestDetector::OnResourceRequest(
135 const net::URLRequest* request) { 135 const net::URLRequest* request) {
136 // Only look at actual net requests (e.g., not chrome-extensions://id/foo.js). 136 // Only look at actual net requests (e.g., not chrome-extensions://id/foo.js).
137 if (!request->url().SchemeIsHTTPOrHTTPS()) 137 if (!request->url().SchemeIsHTTPOrHTTPS())
138 return; 138 return;
139 139
(...skipping 16 matching lines...) Expand all
156 } 156 }
157 157
158 void ResourceRequestDetector::set_allow_null_profile_for_testing( 158 void ResourceRequestDetector::set_allow_null_profile_for_testing(
159 bool allow_null_profile_for_testing) { 159 bool allow_null_profile_for_testing) {
160 allow_null_profile_for_testing_ = allow_null_profile_for_testing; 160 allow_null_profile_for_testing_ = allow_null_profile_for_testing;
161 } 161 }
162 162
163 void ResourceRequestDetector::ReportIncidentOnUIThread( 163 void ResourceRequestDetector::ReportIncidentOnUIThread(
164 int render_process_id, 164 int render_process_id,
165 int render_frame_id, 165 int render_frame_id,
166 scoped_ptr<ClientIncidentReport_IncidentData_ResourceRequestIncident> 166 std::unique_ptr<ClientIncidentReport_IncidentData_ResourceRequestIncident>
167 incident_data) { 167 incident_data) {
168 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 168 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
169 169
170 Profile* profile = GetProfileForRenderProcessId(render_process_id); 170 Profile* profile = GetProfileForRenderProcessId(render_process_id);
171 if (profile || allow_null_profile_for_testing_) { 171 if (profile || allow_null_profile_for_testing_) {
172 // Add the URL obtained from the RenderFrameHost, if available. 172 // Add the URL obtained from the RenderFrameHost, if available.
173 GURL host_url = GetUrlForRenderFrameId(render_process_id, render_frame_id); 173 GURL host_url = GetUrlForRenderFrameId(render_process_id, render_frame_id);
174 if (host_url.is_valid()) 174 if (host_url.is_valid())
175 incident_data->set_origin(host_url.GetOrigin().spec()); 175 incident_data->set_origin(host_url.GetOrigin().spec());
176 176
177 incident_receiver_->AddIncidentForProfile( 177 incident_receiver_->AddIncidentForProfile(
178 profile, 178 profile, base::WrapUnique(
179 make_scoped_ptr(new ResourceRequestIncident(std::move(incident_data)))); 179 new ResourceRequestIncident(std::move(incident_data))));
180 } 180 }
181 } 181 }
182 182
183 } // namespace safe_browsing 183 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698