Chromium Code Reviews| 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_UPDATE_PROTOCOL_MANAGER_H_ | 5 #ifndef COMPONENTS_SAFE_BROWSING_DB_V4_UPDATE_PROTOCOL_MANAGER_H_ |
| 6 #define COMPONENTS_SAFE_BROWSING_DB_V4_UPDATE_PROTOCOL_MANAGER_H_ | 6 #define COMPONENTS_SAFE_BROWSING_DB_V4_UPDATE_PROTOCOL_MANAGER_H_ |
| 7 | 7 |
| 8 // A class that implements Chrome's interface with the SafeBrowsing V4 update | 8 // A class that implements Chrome's interface with the SafeBrowsing V4 update |
| 9 // protocol. | 9 // protocol. |
| 10 // | 10 // |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 81 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, | 81 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, |
| 82 TestGetUpdatesErrorHandlingNetwork); | 82 TestGetUpdatesErrorHandlingNetwork); |
| 83 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, | 83 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, |
| 84 TestGetUpdatesErrorHandlingResponseCode); | 84 TestGetUpdatesErrorHandlingResponseCode); |
| 85 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, TestGetUpdatesNoError); | 85 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, TestGetUpdatesNoError); |
| 86 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, | 86 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, |
| 87 TestGetUpdatesWithOneBackoff); | 87 TestGetUpdatesWithOneBackoff); |
| 88 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, | 88 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, |
| 89 TestBase64EncodingUsesUrlEncoding); | 89 TestBase64EncodingUsesUrlEncoding); |
| 90 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, TestDisableAutoUpdates); | 90 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, TestDisableAutoUpdates); |
| 91 FRIEND_TEST_ALL_PREFIXES(V4UpdateProtocolManagerTest, | |
| 92 TestGetUpdatesHasTimeout); | |
| 91 friend class V4UpdateProtocolManagerFactoryImpl; | 93 friend class V4UpdateProtocolManagerFactoryImpl; |
| 92 | 94 |
| 93 // Fills a FetchThreatListUpdatesRequest protocol buffer for a request. | 95 // Fills a FetchThreatListUpdatesRequest protocol buffer for a request. |
| 94 // Returns the serialized and base64 URL encoded request as a string. | 96 // Returns the serialized and base64 URL encoded request as a string. |
| 95 std::string GetBase64SerializedUpdateRequestProto(); | 97 std::string GetBase64SerializedUpdateRequestProto(); |
| 96 | 98 |
| 97 // The method to populate |gurl| with the URL to be sent to the server. | 99 // The method to populate |gurl| with the URL to be sent to the server. |
| 98 // |request_base64| is the base64 encoded form of an instance of the protobuf | 100 // |request_base64| is the base64 encoded form of an instance of the protobuf |
| 99 // FetchThreatListUpdatesRequest. Also sets the appropriate header values for | 101 // FetchThreatListUpdatesRequest. Also sets the appropriate header values for |
| 100 // sending PVer4 requests in |headers|. | 102 // sending PVer4 requests in |headers|. |
| 101 void GetUpdateUrlAndHeaders(const std::string& request_base64, | 103 void GetUpdateUrlAndHeaders(const std::string& request_base64, |
| 102 GURL* gurl, | 104 GURL* gurl, |
| 103 net::HttpRequestHeaders* headers) const; | 105 net::HttpRequestHeaders* headers) const; |
| 104 | 106 |
| 105 // Parses the base64 encoded response received from the server as a | 107 // Parses the base64 encoded response received from the server as a |
| 106 // FetchThreatListUpdatesResponse protobuf and returns each of the | 108 // FetchThreatListUpdatesResponse protobuf and returns each of the |
| 107 // ListUpdateResponse protobufs contained in it as a vector. | 109 // ListUpdateResponse protobufs contained in it as a vector. |
| 108 // Returns true if parsing is successful, false otherwise. | 110 // Returns true if parsing is successful, false otherwise. |
| 109 bool ParseUpdateResponse(const std::string& data_base64, | 111 bool ParseUpdateResponse(const std::string& data_base64, |
| 110 ParsedServerResponse* parsed_server_response); | 112 ParsedServerResponse* parsed_server_response); |
| 111 | 113 |
| 112 // Resets the update error counter and multiplier. | 114 // Resets the update error counter and multiplier. |
| 113 void ResetUpdateErrors(); | 115 void ResetUpdateErrors(); |
| 114 | 116 |
| 117 // Called when update request times out. Cancels the existing request and | |
| 118 // re-sends the update request. | |
| 119 void HandleTimeout(); | |
| 120 | |
| 115 // Updates internal update and backoff state for each update response error, | 121 // Updates internal update and backoff state for each update response error, |
| 116 // assuming that the current time is |now|. | 122 // assuming that the current time is |now|. |
| 117 void HandleUpdateError(const base::Time& now); | 123 void HandleUpdateError(const base::Time& now); |
| 118 | 124 |
| 119 // Generates the URL for the update request and issues the request for the | 125 // Generates the URL for the update request and issues the request for the |
| 120 // lists passed to the constructor. | 126 // lists passed to the constructor. |
| 121 void IssueUpdateRequest(); | 127 void IssueUpdateRequest(); |
| 122 | 128 |
| 123 // Returns whether another update is currently scheduled. | 129 // Returns whether another update is currently scheduled. |
| 124 bool IsUpdateScheduled() const; | 130 bool IsUpdateScheduled() const; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 166 | 172 |
| 167 // The pending update request. The request must be canceled when the object is | 173 // The pending update request. The request must be canceled when the object is |
| 168 // destroyed. | 174 // destroyed. |
| 169 std::unique_ptr<net::URLFetcher> request_; | 175 std::unique_ptr<net::URLFetcher> request_; |
| 170 | 176 |
| 171 // Timer to setup the next update request. | 177 // Timer to setup the next update request. |
| 172 base::OneShotTimer update_timer_; | 178 base::OneShotTimer update_timer_; |
| 173 | 179 |
| 174 base::Time last_response_time_; | 180 base::Time last_response_time_; |
| 175 | 181 |
| 182 // Used to interrupt and re-issue update requests that take too long. | |
|
Nathan Parker
2016/11/08 23:39:29
It doesn't re-issue, it just reschedules now, yes?
vakh (use Gerrit instead)
2016/11/09 00:08:51
Done.
| |
| 183 base::OneShotTimer timeout_timer_; | |
| 184 | |
| 176 DISALLOW_COPY_AND_ASSIGN(V4UpdateProtocolManager); | 185 DISALLOW_COPY_AND_ASSIGN(V4UpdateProtocolManager); |
| 177 }; | 186 }; |
| 178 | 187 |
| 179 // Interface of a factory to create V4UpdateProtocolManager. Useful for tests. | 188 // Interface of a factory to create V4UpdateProtocolManager. Useful for tests. |
| 180 class V4UpdateProtocolManagerFactory { | 189 class V4UpdateProtocolManagerFactory { |
| 181 public: | 190 public: |
| 182 V4UpdateProtocolManagerFactory() {} | 191 V4UpdateProtocolManagerFactory() {} |
| 183 virtual ~V4UpdateProtocolManagerFactory() {} | 192 virtual ~V4UpdateProtocolManagerFactory() {} |
| 184 virtual std::unique_ptr<V4UpdateProtocolManager> CreateProtocolManager( | 193 virtual std::unique_ptr<V4UpdateProtocolManager> CreateProtocolManager( |
| 185 net::URLRequestContextGetter* request_context_getter, | 194 net::URLRequestContextGetter* request_context_getter, |
| 186 const V4ProtocolConfig& config, | 195 const V4ProtocolConfig& config, |
| 187 V4UpdateCallback callback) = 0; | 196 V4UpdateCallback callback) = 0; |
| 188 | 197 |
| 189 private: | 198 private: |
| 190 DISALLOW_COPY_AND_ASSIGN(V4UpdateProtocolManagerFactory); | 199 DISALLOW_COPY_AND_ASSIGN(V4UpdateProtocolManagerFactory); |
| 191 }; | 200 }; |
| 192 | 201 |
| 193 } // namespace safe_browsing | 202 } // namespace safe_browsing |
| 194 | 203 |
| 195 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_UPDATE_PROTOCOL_MANAGER_H_ | 204 #endif // COMPONENTS_SAFE_BROWSING_DB_V4_UPDATE_PROTOCOL_MANAGER_H_ |
| OLD | NEW |