Index: net/base/sdch_manager.h |
diff --git a/net/base/sdch_manager.h b/net/base/sdch_manager.h |
index 6f2ea5af6de0a637e70a395164fe5f80fdd09af3..56f2aee396ccfd6f4ff40c35a45490cf971ca827 100644 |
--- a/net/base/sdch_manager.h |
+++ b/net/base/sdch_manager.h |
@@ -23,6 +23,7 @@ |
#include <map> |
#include <set> |
#include <string> |
+#include <vector> |
#include "base/gtest_prod_util.h" |
#include "base/memory/ref_counted.h" |
@@ -32,6 +33,11 @@ |
#include "net/base/net_export.h" |
#include "url/gurl.h" |
+namespace base { |
+class Value; |
+class DictionaryValue; |
+} |
+ |
namespace net { |
//------------------------------------------------------------------------------ |
@@ -200,11 +206,12 @@ class NET_EXPORT SdchManager : public NON_EXPORTED_BASE(base::NonThreadSafe) { |
// Security methods to check if we can establish a new dictionary with the |
// given data, that arrived in response to get of dictionary_url. |
static bool CanSet(const std::string& domain, const std::string& path, |
- const std::set<int>& ports, const GURL& dictionary_url); |
+ const std::set<int>& ports, const GURL& dictionary_url, |
+ SdchManager* sdch_manager); |
// Security method to check if we can use a dictionary to decompress a |
// target that arrived with a reference to this dictionary. |
- bool CanUse(const GURL& referring_url); |
+ bool CanUse(const GURL& referring_url, SdchManager* sdch_manager); |
// Compare paths to see if they "match" for dictionary use. |
static bool PathMatch(const std::string& path, |
@@ -213,6 +220,7 @@ class NET_EXPORT SdchManager : public NON_EXPORTED_BASE(base::NonThreadSafe) { |
// Compare domains to see if the "match" for dictionary use. |
static bool DomainMatch(const GURL& url, const std::string& restriction); |
+ base::DictionaryValue* DictionaryInfoToValue() const; |
// The actual text of the dictionary. |
std::string text_; |
@@ -243,7 +251,7 @@ class NET_EXPORT SdchManager : public NON_EXPORTED_BASE(base::NonThreadSafe) { |
void ClearData(); |
// Record stats on various errors. |
- static void SdchErrorRecovery(ProblemCodes problem); |
+ void SdchErrorRecovery(ProblemCodes problem, const GURL& url) const; |
// Register a fetcher that this class can use to obtain dictionaries. |
void set_sdch_fetcher(SdchFetcher* fetcher); |
@@ -336,6 +344,8 @@ class NET_EXPORT SdchManager : public NON_EXPORTED_BASE(base::NonThreadSafe) { |
void SetAllowLatencyExperiment(const GURL& url, bool enable); |
+ base::Value* SdchInfoToValue() const; |
+ |
private: |
typedef std::map<std::string, int> DomainCounter; |
typedef std::set<std::string> ExperimentSet; |
@@ -343,6 +353,9 @@ class NET_EXPORT SdchManager : public NON_EXPORTED_BASE(base::NonThreadSafe) { |
// A map of dictionaries info indexed by the hash that the server provides. |
typedef std::map<std::string, scoped_refptr<Dictionary> > DictionaryMap; |
+ // List of urls and encountered SDCH problems. |
+ typedef std::vector<std::pair<std::string, ProblemCodes> > Problems; |
+ |
// Support SDCH compression, by advertising in headers. |
static bool g_sdch_enabled_; |
@@ -370,6 +383,8 @@ class NET_EXPORT SdchManager : public NON_EXPORTED_BASE(base::NonThreadSafe) { |
// round trip test has recently passed). |
ExperimentSet allow_latency_experiment_; |
+ mutable Problems problems_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SdchManager); |
}; |