Index: net/sdch/sdch_owner.h |
diff --git a/net/sdch/sdch_owner.h b/net/sdch/sdch_owner.h |
index 1655275d67a3e8365dc61cf8b01268a5e2884906..8099cd726ba049f550e52179ef9c4fa3ca803b38 100644 |
--- a/net/sdch/sdch_owner.h |
+++ b/net/sdch/sdch_owner.h |
@@ -116,6 +116,52 @@ class NET_EXPORT SdchOwner : public net::SdchObserver, |
bool IsPersistingDictionaries() const; |
+ enum DictionaryFate { |
+ // A Get-Dictionary header wasn't acted on. |
+ DICTIONARY_FATE_GET_IGNORED = 1, |
+ |
+ // A fetch was attempted, but failed. |
+ // TODO(rdsmith): Actually record this case. |
+ DICTIONARY_FATE_FETCH_FAILED = 2, |
+ |
+ // A successful fetch was dropped on the floor, no space. |
+ DICTIONARY_FATE_FETCH_IGNORED_NO_SPACE = 3, |
+ |
+ // A successful fetch was refused by the SdchManager. |
+ DICTIONARY_FATE_FETCH_MANAGER_REFUSED = 4, |
+ |
+ // A dictionary was successfully added based on |
+ // a Get-Dictionary header in a response. |
+ DICTIONARY_FATE_ADD_RESPONSE_TRIGGERED = 5, |
+ |
+ // A dictionary was evicted by an incoming dict. |
+ DICTIONARY_FATE_EVICT_FOR_DICT = 6, |
+ |
+ // A dictionary was evicted by memory pressure. |
+ DICTIONARY_FATE_EVICT_FOR_MEMORY = 7, |
+ |
+ // A dictionary was evicted on destruction. |
+ DICTIONARY_FATE_EVICT_FOR_DESTRUCTION = 8, |
+ |
+ // A dictionary was successfully added based on |
+ // persistence from a previous browser revision. |
+ DICTIONARY_FATE_ADD_PERSISTENCE_TRIGGERED = 9, |
+ |
+ // A dictionary was unloaded on destruction, but is still present on disk. |
+ DICTIONARY_FATE_UNLOAD_FOR_DESTRUCTION = 10, |
+ |
+ DICTIONARY_FATE_MAX = 11 |
+ }; |
+ |
+ void RecordDictionaryFate(DictionaryFate fate); |
+ |
+ // Record the lifetime memory use of a specified dictionary, identified by |
+ // server hash. |
+ void RecordDictionaryEvictionOrUnload( |
+ const std::string& server_hash, |
+ size_t size, |
+ int use_count, DictionaryFate fate); |
+ |
// For investigation of http://crbug.com/454198; remove when resolved. |
base::WeakPtr<net::SdchManager> manager_; |
scoped_ptr<net::SdchDictionaryFetcher> fetcher_; |
@@ -158,6 +204,14 @@ class NET_EXPORT SdchOwner : public net::SdchObserver, |
// load. |
std::map<std::string, int> use_counts_at_load_; |
+ // Load times for loaded dictionaries, keyed by server hash. These are used to |
+ // track the durations that dictionaries are in memory. |
+ std::map<std::string, base::Time> load_times_; |
+ |
+ // Byte-seconds consumed by dictionaries that have been unloaded. These are |
+ // stored for later uploading in the SdchOwner destructor. |
+ std::vector<int64> consumed_byte_seconds_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SdchOwner); |
}; |