| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef NET_NQE_CACHED_NETWORK_QUALITY_H_ |
| #define NET_NQE_CACHED_NETWORK_QUALITY_H_ |
| |
| #include "base/time/time.h" |
| #include "net/base/net_export.h" |
| #include "net/nqe/effective_connection_type.h" |
| #include "net/nqe/network_quality.h" |
| |
| namespace net { |
| |
| namespace nqe { |
| |
| namespace internal { |
| |
| // CachedNetworkQuality stores the quality of a previously seen network. |
| class NET_EXPORT_PRIVATE CachedNetworkQuality { |
| public: |
| CachedNetworkQuality(); |
| explicit CachedNetworkQuality( |
| EffectiveConnectionType effective_connection_type); |
| |
| // |last_update_time| is the time when the |network_quality| was computed. |
| CachedNetworkQuality(base::TimeTicks last_update_time, |
| const NetworkQuality& network_quality, |
| EffectiveConnectionType effective_connection_type); |
| CachedNetworkQuality(const CachedNetworkQuality& other); |
| ~CachedNetworkQuality(); |
| |
| // Returns the network quality associated with this cached entry. |
| const NetworkQuality& network_quality() const { return network_quality_; } |
| |
| CachedNetworkQuality& operator=(const CachedNetworkQuality& other); |
| |
| // Returns true if this cache entry was updated before |
| // |cached_network_quality|. |
| bool OlderThan(const CachedNetworkQuality& cached_network_quality) const; |
| |
| base::TimeTicks last_update_time() { return last_update_time_; } |
| |
| EffectiveConnectionType effective_connection_type() const { |
| return effective_connection_type_; |
| } |
| |
| private: |
| // Time when this cache entry was last updated. |
| base::TimeTicks last_update_time_; |
| |
| // Quality of this cached network. |
| NetworkQuality network_quality_; |
| |
| // Effective connection type of the cached network. |
| EffectiveConnectionType effective_connection_type_; |
| }; |
| |
| } // namespace internal |
| |
| } // namespace nqe |
| |
| } // namespace net |
| |
| #endif // NET_NQE_CACHED_NETWORK_QUALITY_H_ |