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

Side by Side Diff: chrome/browser/safe_browsing/browser_feature_extractor.h

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
« no previous file with comments | « no previous file | chrome/browser/safe_browsing/browser_feature_extractor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // BrowserFeatureExtractor computes various browser features for client-side 5 // BrowserFeatureExtractor computes various browser features for client-side
6 // phishing detection. For now it does a bunch of lookups in the history 6 // phishing detection. For now it does a bunch of lookups in the history
7 // service to see whether a particular URL has been visited before by the 7 // service to see whether a particular URL has been visited before by the
8 // user. 8 // user.
9 9
10 #ifndef CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_ 10 #ifndef CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_
11 #define CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_ 11 #define CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_
12 12
13 #include <map> 13 #include <map>
14 #include <memory>
14 #include <set> 15 #include <set>
15 #include <string> 16 #include <string>
16 #include <utility> 17 #include <utility>
17 #include <vector> 18 #include <vector>
18 19
19 #include "base/callback.h" 20 #include "base/callback.h"
20 #include "base/containers/hash_tables.h" 21 #include "base/containers/hash_tables.h"
21 #include "base/macros.h" 22 #include "base/macros.h"
22 #include "base/memory/scoped_ptr.h"
23 #include "base/task/cancelable_task_tracker.h" 23 #include "base/task/cancelable_task_tracker.h"
24 #include "base/time/time.h" 24 #include "base/time/time.h"
25 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 25 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
26 #include "chrome/browser/safe_browsing/ui_manager.h" 26 #include "chrome/browser/safe_browsing/ui_manager.h"
27 #include "components/history/core/browser/history_types.h" 27 #include "components/history/core/browser/history_types.h"
28 #include "content/public/common/resource_type.h" 28 #include "content/public/common/resource_type.h"
29 #include "url/gurl.h" 29 #include "url/gurl.h"
30 30
31 31
32 namespace content { 32 namespace content {
(...skipping 29 matching lines...) Expand all
62 struct BrowseInfo { 62 struct BrowseInfo {
63 // The URL we're currently browsing. 63 // The URL we're currently browsing.
64 GURL url; 64 GURL url;
65 65
66 // List of IPv4 and IPv6 addresses from which content was requested 66 // List of IPv4 and IPv6 addresses from which content was requested
67 // together with the hosts on it, while browsing to the |url|. 67 // together with the hosts on it, while browsing to the |url|.
68 IPUrlMap ips; 68 IPUrlMap ips;
69 69
70 // If a SafeBrowsing interstitial was shown for the current URL 70 // If a SafeBrowsing interstitial was shown for the current URL
71 // this will contain the UnsafeResource struct for that URL. 71 // this will contain the UnsafeResource struct for that URL.
72 scoped_ptr<SafeBrowsingUIManager::UnsafeResource> unsafe_resource; 72 std::unique_ptr<SafeBrowsingUIManager::UnsafeResource> unsafe_resource;
73 73
74 // List of redirects that lead to the first page on the current host and 74 // List of redirects that lead to the first page on the current host and
75 // the current url respectively. These may be the same if the current url 75 // the current url respectively. These may be the same if the current url
76 // is the first page on its host. 76 // is the first page on its host.
77 std::vector<GURL> host_redirects; 77 std::vector<GURL> host_redirects;
78 std::vector<GURL> url_redirects; 78 std::vector<GURL> url_redirects;
79 79
80 // URL of the referrer of this URL load. 80 // URL of the referrer of this URL load.
81 GURL referrer; 81 GURL referrer;
82 82
83 // The HTTP status code from this navigation. 83 // The HTTP status code from this navigation.
84 int http_status_code; 84 int http_status_code;
85 85
86 BrowseInfo(); 86 BrowseInfo();
87 ~BrowseInfo(); 87 ~BrowseInfo();
88 }; 88 };
89 89
90 // All methods of this class must be called on the UI thread (including 90 // All methods of this class must be called on the UI thread (including
91 // the constructor). 91 // the constructor).
92 class BrowserFeatureExtractor { 92 class BrowserFeatureExtractor {
93 public: 93 public:
94 // Called when feature extraction is done. The first argument will be 94 // Called when feature extraction is done. The first argument will be
95 // true iff feature extraction succeeded. The second argument is the 95 // true iff feature extraction succeeded. The second argument is the
96 // phishing request which was modified by the feature extractor. The 96 // phishing request which was modified by the feature extractor. The
97 // DoneCallback takes ownership of the request object. 97 // DoneCallback takes ownership of the request object.
98 typedef base::Callback<void(bool, scoped_ptr<ClientPhishingRequest>)> 98 typedef base::Callback<void(bool, std::unique_ptr<ClientPhishingRequest>)>
99 DoneCallback; 99 DoneCallback;
100 typedef base::Callback<void(bool, scoped_ptr<ClientMalwareRequest>)> 100 typedef base::Callback<void(bool, std::unique_ptr<ClientMalwareRequest>)>
101 MalwareDoneCallback; 101 MalwareDoneCallback;
102 102
103 // The caller keeps ownership of the tab and host objects and is 103 // The caller keeps ownership of the tab and host objects and is
104 // responsible for ensuring that they stay valid for the entire 104 // responsible for ensuring that they stay valid for the entire
105 // lifetime of this object. 105 // lifetime of this object.
106 BrowserFeatureExtractor(content::WebContents* tab, 106 BrowserFeatureExtractor(content::WebContents* tab,
107 ClientSideDetectionHost* host); 107 ClientSideDetectionHost* host);
108 108
109 // The destructor will cancel any pending requests. 109 // The destructor will cancel any pending requests.
110 virtual ~BrowserFeatureExtractor(); 110 virtual ~BrowserFeatureExtractor();
(...skipping 16 matching lines...) Expand all
127 virtual void ExtractMalwareFeatures(BrowseInfo* info, 127 virtual void ExtractMalwareFeatures(BrowseInfo* info,
128 ClientMalwareRequest* request, 128 ClientMalwareRequest* request,
129 const MalwareDoneCallback& callback); 129 const MalwareDoneCallback& callback);
130 130
131 private: 131 private:
132 // Synchronous browser feature extraction. 132 // Synchronous browser feature extraction.
133 void ExtractBrowseInfoFeatures(const BrowseInfo& info, 133 void ExtractBrowseInfoFeatures(const BrowseInfo& info,
134 ClientPhishingRequest* request); 134 ClientPhishingRequest* request);
135 135
136 // Actually starts feature extraction (does the real work). 136 // Actually starts feature extraction (does the real work).
137 void StartExtractFeatures(scoped_ptr<ClientPhishingRequest> request, 137 void StartExtractFeatures(std::unique_ptr<ClientPhishingRequest> request,
138 const DoneCallback& callback); 138 const DoneCallback& callback);
139 139
140 // HistoryService callback which is called when we're done querying URL visits 140 // HistoryService callback which is called when we're done querying URL visits
141 // in the history. 141 // in the history.
142 void QueryUrlHistoryDone(scoped_ptr<ClientPhishingRequest> request, 142 void QueryUrlHistoryDone(std::unique_ptr<ClientPhishingRequest> request,
143 const DoneCallback& callback, 143 const DoneCallback& callback,
144 bool success, 144 bool success,
145 const history::URLRow& row, 145 const history::URLRow& row,
146 const history::VisitVector& visits); 146 const history::VisitVector& visits);
147 147
148 // HistoryService callback which is called when we're done querying HTTP host 148 // HistoryService callback which is called when we're done querying HTTP host
149 // visits in the history. 149 // visits in the history.
150 void QueryHttpHostVisitsDone(scoped_ptr<ClientPhishingRequest> request, 150 void QueryHttpHostVisitsDone(std::unique_ptr<ClientPhishingRequest> request,
151 const DoneCallback& callback, 151 const DoneCallback& callback,
152 bool success, 152 bool success,
153 int num_visits, 153 int num_visits,
154 base::Time first_visit); 154 base::Time first_visit);
155 155
156 // HistoryService callback which is called when we're done querying HTTPS host 156 // HistoryService callback which is called when we're done querying HTTPS host
157 // visits in the history. 157 // visits in the history.
158 void QueryHttpsHostVisitsDone(scoped_ptr<ClientPhishingRequest> request, 158 void QueryHttpsHostVisitsDone(std::unique_ptr<ClientPhishingRequest> request,
159 const DoneCallback& callback, 159 const DoneCallback& callback,
160 bool success, 160 bool success,
161 int num_visits, 161 int num_visits,
162 base::Time first_visit); 162 base::Time first_visit);
163 163
164 // Helper function which sets the host history features given the 164 // Helper function which sets the host history features given the
165 // number of host visits and the time of the fist host visit. Set 165 // number of host visits and the time of the fist host visit. Set
166 // |is_http_query| to true if the URL scheme is HTTP and to false if 166 // |is_http_query| to true if the URL scheme is HTTP and to false if
167 // the scheme is HTTPS. 167 // the scheme is HTTPS.
168 void SetHostVisitsFeatures(int num_visits, 168 void SetHostVisitsFeatures(int num_visits,
169 base::Time first_visit, 169 base::Time first_visit,
170 bool is_http_query, 170 bool is_http_query,
171 ClientPhishingRequest* request); 171 ClientPhishingRequest* request);
172 172
173 // Helper function which gets the history server if possible. If the pointer 173 // Helper function which gets the history server if possible. If the pointer
174 // is set it will return true and false otherwise. 174 // is set it will return true and false otherwise.
175 bool GetHistoryService(history::HistoryService** history); 175 bool GetHistoryService(history::HistoryService** history);
176 176
177 // Helper function which is called when we're done filtering out benign IPs 177 // Helper function which is called when we're done filtering out benign IPs
178 // on the IO thread. This function is called on the UI thread. 178 // on the IO thread. This function is called on the UI thread.
179 void FinishExtractMalwareFeatures(scoped_ptr<IPUrlMap> bad_ips, 179 void FinishExtractMalwareFeatures(
180 MalwareDoneCallback callback, 180 std::unique_ptr<IPUrlMap> bad_ips,
181 scoped_ptr<ClientMalwareRequest> request); 181 MalwareDoneCallback callback,
182 std::unique_ptr<ClientMalwareRequest> request);
182 183
183 content::WebContents* tab_; 184 content::WebContents* tab_;
184 ClientSideDetectionHost* host_; 185 ClientSideDetectionHost* host_;
185 base::CancelableTaskTracker cancelable_task_tracker_; 186 base::CancelableTaskTracker cancelable_task_tracker_;
186 base::WeakPtrFactory<BrowserFeatureExtractor> weak_factory_; 187 base::WeakPtrFactory<BrowserFeatureExtractor> weak_factory_;
187 188
188 DISALLOW_COPY_AND_ASSIGN(BrowserFeatureExtractor); 189 DISALLOW_COPY_AND_ASSIGN(BrowserFeatureExtractor);
189 }; 190 };
190 191
191 } // namespace safe_browsing 192 } // namespace safe_browsing
192 #endif // CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_ 193 #endif // CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/safe_browsing/browser_feature_extractor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698