| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #ifndef COMPONENTS_SAFE_BROWSING_DB_V4_GET_HASH_PROTOCOL_MANAGER_H_ | 5 #ifndef COMPONENTS_SAFE_BROWSING_DB_V4_GET_HASH_PROTOCOL_MANAGER_H_ |
| 6 #define COMPONENTS_SAFE_BROWSING_DB_V4_GET_HASH_PROTOCOL_MANAGER_H_ | 6 #define COMPONENTS_SAFE_BROWSING_DB_V4_GET_HASH_PROTOCOL_MANAGER_H_ |
| 7 | 7 |
| 8 // A class that implements Chrome's interface with the SafeBrowsing V4 protocol. | 8 // A class that implements Chrome's interface with the SafeBrowsing V4 protocol. |
| 9 // | 9 // |
| 10 // The V4GetHashProtocolManager handles formatting and making requests of, and | 10 // The V4GetHashProtocolManager handles formatting and making requests of, and |
| 11 // handling responses from, Google's SafeBrowsing servers. The purpose of this | 11 // handling responses from, Google's SafeBrowsing servers. The purpose of this |
| 12 // class is to get full hash matches from the SB server for the given set of | 12 // class is to get full hash matches from the SB server for the given set of |
| 13 // hash prefixes. | 13 // hash prefixes. |
| 14 | 14 |
| 15 #include <memory> | 15 #include <memory> |
| 16 #include <string> | 16 #include <string> |
| 17 #include <utility> |
| 17 #include <vector> | 18 #include <vector> |
| 18 | 19 |
| 19 #include "base/gtest_prod_util.h" | 20 #include "base/gtest_prod_util.h" |
| 20 #include "base/macros.h" | 21 #include "base/macros.h" |
| 21 #include "base/threading/non_thread_safe.h" | 22 #include "base/threading/non_thread_safe.h" |
| 22 #include "base/time/default_clock.h" | 23 #include "base/time/default_clock.h" |
| 23 #include "base/time/time.h" | 24 #include "base/time/time.h" |
| 24 #include "base/timer/timer.h" | 25 #include "base/timer/timer.h" |
| 25 #include "components/safe_browsing_db/safebrowsing.pb.h" | 26 #include "components/safe_browsing_db/safebrowsing.pb.h" |
| 26 #include "components/safe_browsing_db/util.h" | 27 #include "components/safe_browsing_db/util.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 | 132 |
| 132 // Resets the gethash error counter and multiplier. | 133 // Resets the gethash error counter and multiplier. |
| 133 void ResetGetHashErrors(); | 134 void ResetGetHashErrors(); |
| 134 | 135 |
| 135 // Updates internal state for each GetHash response error, assuming that | 136 // Updates internal state for each GetHash response error, assuming that |
| 136 // the current time is |now|. | 137 // the current time is |now|. |
| 137 void HandleGetHashError(const base::Time& now); | 138 void HandleGetHashError(const base::Time& now); |
| 138 | 139 |
| 139 private: | 140 private: |
| 140 // Map of GetHash requests to parameters which created it. | 141 // Map of GetHash requests to parameters which created it. |
| 141 typedef base::hash_map<const net::URLFetcher*, FullHashCallback> HashRequests; | 142 using HashRequests = base::hash_map< |
| 143 const net::URLFetcher*, |
| 144 std::pair<std::unique_ptr<net::URLFetcher>, FullHashCallback>>; |
| 142 | 145 |
| 143 // The factory that controls the creation of V4GetHashProtocolManager. | 146 // The factory that controls the creation of V4GetHashProtocolManager. |
| 144 // This is used by tests. | 147 // This is used by tests. |
| 145 static V4GetHashProtocolManagerFactory* factory_; | 148 static V4GetHashProtocolManagerFactory* factory_; |
| 146 | 149 |
| 147 // Current active request (in case we need to cancel) for updates or chunks | 150 // Current active request (in case we need to cancel) for updates or chunks |
| 148 // from the SafeBrowsing service. We can only have one of these outstanding | 151 // from the SafeBrowsing service. We can only have one of these outstanding |
| 149 // at any given time unlike GetHash requests, which are tracked separately. | 152 // at any given time unlike GetHash requests, which are tracked separately. |
| 150 std::unique_ptr<net::URLFetcher> request_; | 153 std::unique_ptr<net::URLFetcher> request_; |
| 151 | 154 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 net::URLRequestContextGetter* request_context_getter, | 190 net::URLRequestContextGetter* request_context_getter, |
| 188 const V4ProtocolConfig& config) = 0; | 191 const V4ProtocolConfig& config) = 0; |
| 189 | 192 |
| 190 private: | 193 private: |
| 191 DISALLOW_COPY_AND_ASSIGN(V4GetHashProtocolManagerFactory); | 194 DISALLOW_COPY_AND_ASSIGN(V4GetHashProtocolManagerFactory); |
| 192 }; | 195 }; |
| 193 | 196 |
| 194 } // namespace safe_browsing | 197 } // namespace safe_browsing |
| 195 | 198 |
| 196 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_GET_HASH_PROTOCOL_MANAGER_H_ | 199 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_GET_HASH_PROTOCOL_MANAGER_H_ |
| OLD | NEW |