Index: net/http/http_server_properties_manager.h |
diff --git a/net/http/http_server_properties_manager.h b/net/http/http_server_properties_manager.h |
index 0b7dc11045eeef114ea5395029c30561b8bc64ea..db8ffd10e60f56ce06b7211d6789240139b100d6 100644 |
--- a/net/http/http_server_properties_manager.h |
+++ b/net/http/http_server_properties_manager.h |
@@ -15,6 +15,7 @@ |
#include "base/gtest_prod_util.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/time/default_tick_clock.h" |
#include "base/timer/timer.h" |
#include "base/values.h" |
#include "net/base/host_port_pair.h" |
@@ -24,6 +25,7 @@ |
namespace base { |
class SingleThreadTaskRunner; |
+class TickClock; |
} |
namespace net { |
@@ -92,10 +94,21 @@ class NET_EXPORT HttpServerPropertiesManager : public HttpServerProperties { |
// cache update to the pref thread; |
// |network_task_runner| should be bound with the network thread and is used |
// to post pref update to the cache thread. |
+ // |
+ // |clock| is used for setting expiration times and scheduling the |
+ // expiration of broken alternative services. It must not be null. |
+ HttpServerPropertiesManager( |
+ PrefDelegate* pref_delegate, |
+ scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner, |
+ scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, |
+ base::TickClock* clock); |
+ |
+ // Default clock will be used. |
HttpServerPropertiesManager( |
PrefDelegate* pref_delegate, |
scoped_refptr<base::SingleThreadTaskRunner> pref_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> network_task_runner); |
+ |
~HttpServerPropertiesManager() override; |
// Initialize on Network thread. |
@@ -211,6 +224,10 @@ class NET_EXPORT HttpServerPropertiesManager : public HttpServerProperties { |
IPAddress* last_quic_address, |
ServerNetworkStatsMap* server_network_stats_map, |
QuicServerInfoMap* quic_server_info_map, |
+ std::unique_ptr<BrokenAlternativeServiceList> |
+ broken_alternative_service_list, |
+ std::unique_ptr<RecentlyBrokenAlternativeServices> |
+ recently_broken_alternative_services, |
Zhongyi Shi
2017/06/16 04:17:09
Can we just use raw pointers here? Is there any st
wangyix1
2017/06/16 18:41:15
Acknowledged.
|
bool detected_corrupted_prefs); |
// These are used to delay updating the preferences when cached data in |
@@ -232,12 +249,15 @@ class NET_EXPORT HttpServerPropertiesManager : public HttpServerProperties { |
// Update prefs::kHttpServerProperties preferences on pref thread. Executes an |
// optional |completion| callback when finished. Protected for testing. |
- void UpdatePrefsOnPrefThread(base::ListValue* spdy_server_list, |
- AlternativeServiceMap* alternative_service_map, |
- IPAddress* last_quic_address, |
- ServerNetworkStatsMap* server_network_stats_map, |
- QuicServerInfoMap* quic_server_info_map, |
- const base::Closure& completion); |
+ void UpdatePrefsOnPrefThread( |
+ base::ListValue* spdy_server_list, |
+ AlternativeServiceMap* alternative_service_map, |
+ IPAddress* last_quic_address, |
+ ServerNetworkStatsMap* server_network_stats_map, |
+ QuicServerInfoMap* quic_server_info_map, |
+ BrokenAlternativeServiceList* broken_alternative_service_list, |
+ RecentlyBrokenAlternativeServices* recently_broken_alternative_services, |
+ const base::Closure& completion); |
private: |
typedef std::vector<std::string> ServerList; |
@@ -270,6 +290,13 @@ class NET_EXPORT HttpServerPropertiesManager : public HttpServerProperties { |
ServerNetworkStatsMap* network_stats_map); |
bool AddToQuicServerInfoMap(const base::DictionaryValue& server_dict, |
QuicServerInfoMap* quic_server_info_map); |
+ bool ExtractBrokenAlternativeServiceData( |
Zhongyi Shi
2017/06/16 04:17:09
nit: %s/ExtractBrokenAlternativeServiceData/AddToB
wangyix1
2017/06/16 18:41:15
Acknowledged.
|
+ const base::DictionaryValue* broken_alternative_service_dict, |
+ AlternativeService* alternative_service, |
+ base::TimeTicks* expiration_time_ticks); |
+ bool AddRecentlyBrokenAlternativeServiceData( |
Zhongyi Shi
2017/06/16 04:17:09
nit: %s/AddRecentlyBrokenAlternativeServiceData/Ad
wangyix1
2017/06/16 18:41:15
Done.
|
+ const base::DictionaryValue* recently_broken_alternative_service_dict, |
+ RecentlyBrokenAlternativeServices* recently_broken_alternative_services); |
void SaveAlternativeServiceToServerPrefs( |
const AlternativeServiceInfoVector* alternative_service_info_vector, |
@@ -283,8 +310,17 @@ class NET_EXPORT HttpServerPropertiesManager : public HttpServerProperties { |
void SaveQuicServerInfoMapToServerPrefs( |
QuicServerInfoMap* quic_server_info_map, |
base::DictionaryValue* http_server_properties_dict); |
+ void SaveBrokenAlternativeServiceListToPrefs( |
+ const BrokenAlternativeServiceList* broken_alternative_service_list, |
+ base::DictionaryValue* http_server_properties_dict); |
+ void SaveRecentlyBrokenAlternativeServicesToPrefs( |
+ const RecentlyBrokenAlternativeServices* |
+ recently_broken_alternative_services, |
+ base::DictionaryValue* http_server_properties_dict); |
void SetInitialized(); |
+ base::DefaultTickClock default_clock_; |
+ |
// ----------- |
// Pref thread |
// ----------- |
@@ -299,6 +335,8 @@ class NET_EXPORT HttpServerPropertiesManager : public HttpServerProperties { |
std::unique_ptr<PrefDelegate> pref_delegate_; |
bool setting_prefs_; |
+ base::TickClock* clock_; // Unowned |
+ |
// -------------- |
// Network thread |
// -------------- |