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

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

Issue 42553002: Mostly integrate new malware IP blacklist with the csd client. When (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix leaks in the unit-tests Created 7 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 | Annotate | Revision Log
« 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_
(...skipping 19 matching lines...) Expand all
30 30
31 class HistoryService; 31 class HistoryService;
32 32
33 namespace content { 33 namespace content {
34 class WebContents; 34 class WebContents;
35 } 35 }
36 36
37 namespace safe_browsing { 37 namespace safe_browsing {
38 class ClientMalwareRequest; 38 class ClientMalwareRequest;
39 class ClientPhishingRequest; 39 class ClientPhishingRequest;
40 class ClientSideDetectionService; 40 class ClientSideDetectionHost;
41 41
42 typedef std::map<std::string, std::set<std::string> > IPUrlMap; 42 typedef std::map<std::string, std::set<std::string> > IPUrlMap;
43 43
44 struct BrowseInfo { 44 struct BrowseInfo {
45 // List of IPv4 and IPv6 addresses from which content was requested 45 // List of IPv4 and IPv6 addresses from which content was requested
46 // together with the hosts on it, while browsing to the |url|. 46 // together with the hosts on it, while browsing to the |url|.
47 IPUrlMap ips; 47 IPUrlMap ips;
48 48
49 // If a SafeBrowsing interstitial was shown for the current URL 49 // If a SafeBrowsing interstitial was shown for the current URL
50 // this will contain the UnsafeResource struct for that URL. 50 // this will contain the UnsafeResource struct for that URL.
(...skipping 14 matching lines...) Expand all
65 65
66 // All methods of this class must be called on the UI thread (including 66 // All methods of this class must be called on the UI thread (including
67 // the constructor). 67 // the constructor).
68 class BrowserFeatureExtractor { 68 class BrowserFeatureExtractor {
69 public: 69 public:
70 // Called when feature extraction is done. The first argument will be 70 // Called when feature extraction is done. The first argument will be
71 // true iff feature extraction succeeded. The second argument is the 71 // true iff feature extraction succeeded. The second argument is the
72 // phishing request which was modified by the feature extractor. The 72 // phishing request which was modified by the feature extractor. The
73 // DoneCallback takes ownership of the request object. 73 // DoneCallback takes ownership of the request object.
74 typedef base::Callback<void(bool, ClientPhishingRequest*)> DoneCallback; 74 typedef base::Callback<void(bool, ClientPhishingRequest*)> DoneCallback;
75 typedef base::Callback<void(bool, ClientMalwareRequest*)> MalwareDoneCallback; 75 typedef base::Callback<void(bool, scoped_ptr<ClientMalwareRequest>)>
76 MalwareDoneCallback;
76 77
77 // The caller keeps ownership of the tab and service objects and is 78 // The caller keeps ownership of the tab and host objects and is
78 // responsible for ensuring that they stay valid for the entire 79 // responsible for ensuring that they stay valid for the entire
79 // lifetime of this object. 80 // lifetime of this object.
80 BrowserFeatureExtractor(content::WebContents* tab, 81 BrowserFeatureExtractor(content::WebContents* tab,
81 ClientSideDetectionService* service); 82 ClientSideDetectionHost* host);
82 83
83 // The destructor will cancel any pending requests. 84 // The destructor will cancel any pending requests.
84 virtual ~BrowserFeatureExtractor(); 85 virtual ~BrowserFeatureExtractor();
85 86
86 // Begins extraction of the browser features. We take ownership 87 // Begins extraction of the browser features. We take ownership
87 // of the request object until |callback| is called (see DoneCallback above) 88 // of the request object until |callback| is called (see DoneCallback above)
88 // and will write the extracted features to the feature map. Once the 89 // and will write the extracted features to the feature map. Once the
89 // feature extraction is complete, |callback| is run on the UI thread. We 90 // feature extraction is complete, |callback| is run on the UI thread. We
90 // take ownership of the |callback| object. |info| may not be valid after 91 // take ownership of the |callback| object. |info| may not be valid after
91 // ExtractFeatures returns. This method must run on the UI thread. 92 // ExtractFeatures returns. This method must run on the UI thread.
92 virtual void ExtractFeatures(const BrowseInfo* info, 93 virtual void ExtractFeatures(const BrowseInfo* info,
93 ClientPhishingRequest* request, 94 ClientPhishingRequest* request,
94 const DoneCallback& callback); 95 const DoneCallback& callback);
95 96
96 // Extract the malware related features. The request object is owned by the 97 // Begins extraction of the malware related features. We take ownership
97 // caller. 98 // of the request object until |callback| is called. Once feature extraction
98 virtual void ExtractMalwareFeatures(const BrowseInfo* info, 99 // is complete, |callback| will run on the UI thread. |info| is not expected
99 ClientMalwareRequest* request); 100 // to stay valid after ExtractMalwareFeatures returns. All IPs stored in
101 // |info| will be cleared by calling this function.
102 virtual void ExtractMalwareFeatures(BrowseInfo* info,
103 ClientMalwareRequest* request,
104 const MalwareDoneCallback& callback);
100 105
101 private: 106 private:
102 friend class base::DeleteHelper<BrowserFeatureExtractor>; 107 friend class base::DeleteHelper<BrowserFeatureExtractor>;
103 typedef std::pair<ClientPhishingRequest*, DoneCallback> ExtractionData; 108 typedef std::pair<ClientPhishingRequest*, DoneCallback> ExtractionData;
104 typedef std::map<CancelableRequestProvider::Handle, 109 typedef std::map<CancelableRequestProvider::Handle,
105 ExtractionData> PendingQueriesMap; 110 ExtractionData> PendingQueriesMap;
106 111
107 // Synchronous browser feature extraction. 112 // Synchronous browser feature extraction.
108 void ExtractBrowseInfoFeatures(const BrowseInfo& info, 113 void ExtractBrowseInfoFeatures(const BrowseInfo& info,
109 ClientPhishingRequest* request); 114 ClientPhishingRequest* request);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 // is a pending query for the given handle it will return false and set both 157 // is a pending query for the given handle it will return false and set both
153 // the request and cb pointers. Otherwise, it will return false. 158 // the request and cb pointers. Otherwise, it will return false.
154 bool GetPendingQuery(CancelableRequestProvider::Handle handle, 159 bool GetPendingQuery(CancelableRequestProvider::Handle handle,
155 ClientPhishingRequest** request, 160 ClientPhishingRequest** request,
156 DoneCallback* callback); 161 DoneCallback* callback);
157 162
158 // Helper function which gets the history server if possible. If the pointer 163 // Helper function which gets the history server if possible. If the pointer
159 // is set it will return true and false otherwise. 164 // is set it will return true and false otherwise.
160 bool GetHistoryService(HistoryService** history); 165 bool GetHistoryService(HistoryService** history);
161 166
167 // Helper function which is called when we're done filtering out benign IPs
168 // on the IO thread. This function is called on the UI thread.
169 void FinishExtractMalwareFeatures(scoped_ptr<IPUrlMap> bad_ips,
170 MalwareDoneCallback callback,
171 scoped_ptr<ClientMalwareRequest> request);
172
162 content::WebContents* tab_; 173 content::WebContents* tab_;
163 ClientSideDetectionService* service_; 174 ClientSideDetectionHost* host_;
164 CancelableRequestConsumer request_consumer_; 175 CancelableRequestConsumer request_consumer_;
165 base::WeakPtrFactory<BrowserFeatureExtractor> weak_factory_; 176 base::WeakPtrFactory<BrowserFeatureExtractor> weak_factory_;
166 177
167 // Set of pending extractions (i.e. extractions for which ExtractFeatures was 178 // Set of pending extractions (i.e. extractions for which ExtractFeatures was
168 // called but not StartExtractFeatures). 179 // called but not StartExtractFeatures).
169 std::map<ClientPhishingRequest*, DoneCallback> pending_extractions_; 180 std::map<ClientPhishingRequest*, DoneCallback> pending_extractions_;
170 181
171 // Set of pending queries (i.e., where history->Query...() was called but 182 // Set of pending queries (i.e., where history->Query...() was called but
172 // the history callback hasn't been invoked yet). 183 // the history callback hasn't been invoked yet).
173 PendingQueriesMap pending_queries_; 184 PendingQueriesMap pending_queries_;
174 185
175 // Max number of malware IPs can be sent in one malware request
176 static const int kMaxMalwareIPPerRequest;
177
178 DISALLOW_COPY_AND_ASSIGN(BrowserFeatureExtractor); 186 DISALLOW_COPY_AND_ASSIGN(BrowserFeatureExtractor);
179 }; 187 };
180 188
181 } // namespace safe_browsing 189 } // namespace safe_browsing
182 #endif // CHROME_BROWSER_SAFE_BROWSING_BROWSER_FEATURE_EXTRACTOR_H_ 190 #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