OLD | NEW |
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 // Helper class which handles communication with the SafeBrowsing backends for | 5 // Helper class which handles communication with the SafeBrowsing backends for |
6 // client-side phishing detection. This class can be used to get a file | 6 // client-side phishing detection. This class can be used to get a file |
7 // descriptor to the client-side phishing model and also to send a ping back to | 7 // descriptor to the client-side phishing model and also to send a ping back to |
8 // Google to verify if a particular site is really phishing or not. | 8 // Google to verify if a particular site is really phishing or not. |
9 // | 9 // |
10 // This class is not thread-safe and expects all calls to GetModelFile() and | 10 // This class is not thread-safe and expects all calls to GetModelFile() and |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 // same thread as GetModelFile() was called. | 84 // same thread as GetModelFile() was called. |
85 void GetModelFile(OpenModelDoneCallback* callback); | 85 void GetModelFile(OpenModelDoneCallback* callback); |
86 | 86 |
87 // Sends a request to the SafeBrowsing servers with the potentially phishing | 87 // Sends a request to the SafeBrowsing servers with the potentially phishing |
88 // URL and the client-side phishing score. The |phishing_url| scheme should | 88 // URL and the client-side phishing score. The |phishing_url| scheme should |
89 // be HTTP. This method takes ownership of the |callback| and calls it once | 89 // be HTTP. This method takes ownership of the |callback| and calls it once |
90 // the result has come back from the server or if an error occurs during the | 90 // the result has come back from the server or if an error occurs during the |
91 // fetch. If an error occurs the phishing verdict will always be false. The | 91 // fetch. If an error occurs the phishing verdict will always be false. The |
92 // callback is always called after SendClientReportPhishingRequest() returns | 92 // callback is always called after SendClientReportPhishingRequest() returns |
93 // and on the same thread as SendClientReportPhishingRequest() was called. | 93 // and on the same thread as SendClientReportPhishingRequest() was called. |
94 void SendClientReportPhishingRequest( | 94 virtual void SendClientReportPhishingRequest( |
95 const GURL& phishing_url, | 95 const GURL& phishing_url, |
96 double score, | 96 double score, |
97 ClientReportPhishingRequestCallback* callback); | 97 ClientReportPhishingRequestCallback* callback); |
98 | 98 |
| 99 protected: |
| 100 // Use Create() method to create an instance of this object. |
| 101 ClientSideDetectionService(const FilePath& model_path, |
| 102 URLRequestContextGetter* request_context_getter); |
| 103 |
99 private: | 104 private: |
100 friend class ClientSideDetectionServiceTest; | 105 friend class ClientSideDetectionServiceTest; |
101 friend class ClientSideDetectionServiceHooksTest; | 106 friend class ClientSideDetectionServiceHooksTest; |
102 class ShouldClassifyUrlRequest; | 107 class ShouldClassifyUrlRequest; |
103 | 108 |
104 enum ModelStatus { | 109 enum ModelStatus { |
105 // It's unclear whether or not the model was already fetched. | 110 // It's unclear whether or not the model was already fetched. |
106 UNKNOWN_STATUS, | 111 UNKNOWN_STATUS, |
107 // Model is fetched and is stored on disk. | 112 // Model is fetched and is stored on disk. |
108 READY_STATUS, | 113 READY_STATUS, |
(...skipping 11 matching lines...) Expand all Loading... |
120 }; | 125 }; |
121 typedef std::map<GURL, linked_ptr<CacheState> > PhishingCache; | 126 typedef std::map<GURL, linked_ptr<CacheState> > PhishingCache; |
122 | 127 |
123 static const char kClientReportPhishingUrl[]; | 128 static const char kClientReportPhishingUrl[]; |
124 static const char kClientModelUrl[]; | 129 static const char kClientModelUrl[]; |
125 static const int kMaxReportsPerInterval; | 130 static const int kMaxReportsPerInterval; |
126 static const base::TimeDelta kReportsInterval; | 131 static const base::TimeDelta kReportsInterval; |
127 static const base::TimeDelta kNegativeCacheInterval; | 132 static const base::TimeDelta kNegativeCacheInterval; |
128 static const base::TimeDelta kPositiveCacheInterval; | 133 static const base::TimeDelta kPositiveCacheInterval; |
129 | 134 |
130 // Use Create() method to create an instance of this object. | |
131 ClientSideDetectionService(const FilePath& model_path, | |
132 URLRequestContextGetter* request_context_getter); | |
133 | |
134 // Sets the model status and invokes all the pending callbacks in | 135 // Sets the model status and invokes all the pending callbacks in |
135 // |open_callbacks_| with the current |model_file_| as parameter. | 136 // |open_callbacks_| with the current |model_file_| as parameter. |
136 void SetModelStatus(ModelStatus status); | 137 void SetModelStatus(ModelStatus status); |
137 | 138 |
138 // Called once the initial open() of the model file is done. If the file | 139 // Called once the initial open() of the model file is done. If the file |
139 // exists we're done and we can call all the pending callbacks. If the | 140 // exists we're done and we can call all the pending callbacks. If the |
140 // file doesn't exist this method will asynchronously fetch the model | 141 // file doesn't exist this method will asynchronously fetch the model |
141 // from the server by invoking StartFetchingModel(). | 142 // from the server by invoking StartFetchingModel(). |
142 void OpenModelFileDone(base::PlatformFileError error_code, | 143 void OpenModelFileDone(base::PlatformFileError error_code, |
143 base::PassPlatformFile file, | 144 base::PassPlatformFile file, |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 239 |
239 // Used to register for page load notifications. | 240 // Used to register for page load notifications. |
240 NotificationRegistrar registrar_; | 241 NotificationRegistrar registrar_; |
241 | 242 |
242 DISALLOW_COPY_AND_ASSIGN(ClientSideDetectionService); | 243 DISALLOW_COPY_AND_ASSIGN(ClientSideDetectionService); |
243 }; | 244 }; |
244 | 245 |
245 } // namepsace safe_browsing | 246 } // namepsace safe_browsing |
246 | 247 |
247 #endif // CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_SERVICE_H_ | 248 #endif // CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_SERVICE_H_ |
OLD | NEW |