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_OFFLINE_PAGES_BACKGROUND_REQUEST_COORDINATOR_H_ | 5 #ifndef COMPONENTS_OFFLINE_PAGES_BACKGROUND_REQUEST_COORDINATOR_H_ |
6 #define COMPONENTS_OFFLINE_PAGES_BACKGROUND_REQUEST_COORDINATOR_H_ | 6 #define COMPONENTS_OFFLINE_PAGES_BACKGROUND_REQUEST_COORDINATOR_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 | 202 |
203 void TryNextRequest(); | 203 void TryNextRequest(); |
204 | 204 |
205 // If there is an active request in the list, cancel that request. | 205 // If there is an active request in the list, cancel that request. |
206 bool CancelActiveRequestIfItMatches(const std::vector<int64_t>& request_ids); | 206 bool CancelActiveRequestIfItMatches(const std::vector<int64_t>& request_ids); |
207 | 207 |
208 // Returns the appropriate offliner to use, getting a new one from the factory | 208 // Returns the appropriate offliner to use, getting a new one from the factory |
209 // if needed. | 209 // if needed. |
210 void GetOffliner(); | 210 void GetOffliner(); |
211 | 211 |
| 212 // Method to wrap calls to getting the connection type so it can be |
| 213 // changed for tests. |
| 214 net::NetworkChangeNotifier::ConnectionType GetConnectionType(); |
| 215 |
| 216 void SetNetworkConditionsForTest( |
| 217 net::NetworkChangeNotifier::ConnectionType connection) { |
| 218 use_test_connection_type_ = true; |
| 219 test_connection_type_ = connection; |
| 220 } |
| 221 |
212 void SetOfflinerTimeoutForTest(const base::TimeDelta& timeout) { | 222 void SetOfflinerTimeoutForTest(const base::TimeDelta& timeout) { |
213 offliner_timeout_ = timeout; | 223 offliner_timeout_ = timeout; |
214 } | 224 } |
215 | 225 |
216 void SetDeviceConditionsForTest(DeviceConditions& current_conditions) { | 226 void SetDeviceConditionsForTest(DeviceConditions& current_conditions) { |
217 current_conditions_.reset(new DeviceConditions(current_conditions)); | 227 current_conditions_.reset(new DeviceConditions(current_conditions)); |
218 } | 228 } |
219 | 229 |
220 friend class RequestCoordinatorTest; | 230 friend class RequestCoordinatorTest; |
221 | 231 |
222 // The offliner can only handle one request at a time - if the offliner is | 232 // The offliner can only handle one request at a time - if the offliner is |
223 // busy, prevent other requests. This flag marks whether the offliner is in | 233 // busy, prevent other requests. This flag marks whether the offliner is in |
224 // use. | 234 // use. |
225 bool is_busy_; | 235 bool is_busy_; |
226 // True if the current request has been canceled. | 236 // True if the current request has been canceled. |
227 bool is_stopped_; | 237 bool is_stopped_; |
| 238 // True if we should use the test connection type instead of the actual type. |
| 239 bool use_test_connection_type_; |
| 240 // For use by tests, a fake network connection type |
| 241 net::NetworkChangeNotifier::ConnectionType test_connection_type_; |
228 // Unowned pointer to the current offliner, if any. | 242 // Unowned pointer to the current offliner, if any. |
229 Offliner* offliner_; | 243 Offliner* offliner_; |
230 base::Time operation_start_time_; | 244 base::Time operation_start_time_; |
231 // The observers. | 245 // The observers. |
232 base::ObserverList<Observer> observers_; | 246 base::ObserverList<Observer> observers_; |
233 // Last known conditions for network, battery | 247 // Last known conditions for network, battery |
234 std::unique_ptr<DeviceConditions> current_conditions_; | 248 std::unique_ptr<DeviceConditions> current_conditions_; |
235 // RequestCoordinator takes over ownership of the policy | 249 // RequestCoordinator takes over ownership of the policy |
236 std::unique_ptr<OfflinerPolicy> policy_; | 250 std::unique_ptr<OfflinerPolicy> policy_; |
237 // OfflinerFactory. Used to create offline pages. Owned. | 251 // OfflinerFactory. Used to create offline pages. Owned. |
(...skipping 18 matching lines...) Expand all Loading... |
256 base::TimeDelta offliner_timeout_; | 270 base::TimeDelta offliner_timeout_; |
257 // Allows us to pass a weak pointer to callbacks. | 271 // Allows us to pass a weak pointer to callbacks. |
258 base::WeakPtrFactory<RequestCoordinator> weak_ptr_factory_; | 272 base::WeakPtrFactory<RequestCoordinator> weak_ptr_factory_; |
259 | 273 |
260 DISALLOW_COPY_AND_ASSIGN(RequestCoordinator); | 274 DISALLOW_COPY_AND_ASSIGN(RequestCoordinator); |
261 }; | 275 }; |
262 | 276 |
263 } // namespace offline_pages | 277 } // namespace offline_pages |
264 | 278 |
265 #endif // COMPONENTS_OFFLINE_PAGES_BACKGROUND_REQUEST_COORDINATOR_H_ | 279 #endif // COMPONENTS_OFFLINE_PAGES_BACKGROUND_REQUEST_COORDINATOR_H_ |
OLD | NEW |