| Index: net/filter/sdch_filter.cc
|
| diff --git a/net/filter/sdch_filter.cc b/net/filter/sdch_filter.cc
|
| index 55d9b4c6bd984c4934df7472e17c3b1b2ecc2faf..5590821841b460badf80b0b991f21677abf273ff 100644
|
| --- a/net/filter/sdch_filter.cc
|
| +++ b/net/filter/sdch_filter.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/logging.h"
|
| #include "base/metrics/histogram.h"
|
| #include "net/base/sdch_manager.h"
|
| +#include "net/url_request/url_request_context.h"
|
|
|
| #include "sdch/open-vcdiff/src/google/vcdecoder.h"
|
|
|
| @@ -23,6 +24,7 @@ SdchFilter::SdchFilter(const FilterContext& filter_context)
|
| dictionary_hash_(),
|
| dictionary_hash_is_plausible_(false),
|
| dictionary_(NULL),
|
| + url_request_context_(filter_context.GetURLRequestContext()),
|
| dest_buffer_excess_(),
|
| dest_buffer_excess_index_(0),
|
| source_bytes_(0),
|
| @@ -32,6 +34,7 @@ SdchFilter::SdchFilter(const FilterContext& filter_context)
|
| DCHECK(success);
|
| success = filter_context.GetURL(&url_);
|
| DCHECK(success);
|
| + DCHECK(url_request_context_->sdch_manager());
|
| }
|
|
|
| SdchFilter::~SdchFilter() {
|
| @@ -51,7 +54,8 @@ SdchFilter::~SdchFilter() {
|
| // Make it possible for the user to hit reload, and get non-sdch content.
|
| // Note this will "wear off" quickly enough, and is just meant to assure
|
| // in some rare case that the user is not stuck.
|
| - SdchManager::BlacklistDomain(url_);
|
| + url_request_context_->sdch_manager()->BlacklistDomain(
|
| + url_);
|
| UMA_HISTOGRAM_COUNTS("Sdch3.PartialBytesIn",
|
| static_cast<int>(filter_context_.GetByteReadCount()));
|
| UMA_HISTOGRAM_COUNTS("Sdch3.PartialVcdiffIn", source_bytes_);
|
| @@ -88,7 +92,8 @@ SdchFilter::~SdchFilter() {
|
| filter_context_.RecordPacketStats(FilterContext::SDCH_DECODE);
|
|
|
| // Allow latency experiments to proceed.
|
| - SdchManager::Global()->SetAllowLatencyExperiment(url_, true);
|
| + url_request_context_->sdch_manager()->SetAllowLatencyExperiment(
|
| + url_, true);
|
| return;
|
| }
|
| case PASS_THROUGH: {
|
| @@ -213,7 +218,7 @@ Filter::FilterStatus SdchFilter::ReadFilteredData(char* dest_buffer,
|
| SdchManager::SdchErrorRecovery(SdchManager::PASSING_THROUGH_NON_SDCH);
|
| decoding_status_ = PASS_THROUGH;
|
| // ... but further back-off on advertising SDCH support.
|
| - SdchManager::BlacklistDomain(url_);
|
| + url_request_context_->sdch_manager()->BlacklistDomain(url_);
|
| }
|
|
|
| if (decoding_status_ == PASS_THROUGH) {
|
| @@ -223,7 +228,7 @@ Filter::FilterStatus SdchFilter::ReadFilteredData(char* dest_buffer,
|
| if (std::string::npos == mime_type_.find("text/html")) {
|
| // Since we can't do a meta-refresh (along with an exponential
|
| // backoff), we'll just make sure this NEVER happens again.
|
| - SdchManager::BlacklistDomainForever(url_);
|
| + url_request_context_->sdch_manager()->BlacklistDomainForever(url_);
|
| if (filter_context_.IsCachedContent())
|
| SdchManager::SdchErrorRecovery(
|
| SdchManager::CACHED_META_REFRESH_UNSUPPORTED);
|
| @@ -242,7 +247,7 @@ Filter::FilterStatus SdchFilter::ReadFilteredData(char* dest_buffer,
|
| } else {
|
| // Since it wasn't in the cache, we definately need at least some
|
| // period of blacklisting to get the correct content.
|
| - SdchManager::BlacklistDomain(url_);
|
| + url_request_context_->sdch_manager()->BlacklistDomain(url_);
|
| SdchManager::SdchErrorRecovery(SdchManager::META_REFRESH_RECOVERY);
|
| }
|
| decoding_status_ = META_REFRESH_RECOVERY;
|
| @@ -335,12 +340,14 @@ Filter::FilterStatus SdchFilter::InitializeDictionary() {
|
| dictionary_hash_is_plausible_ = true; // Assume plausible, but check.
|
|
|
| SdchManager::Dictionary* dictionary = NULL;
|
| - if ('\0' == dictionary_hash_[kServerIdLength - 1])
|
| - SdchManager::Global()->GetVcdiffDictionary(std::string(dictionary_hash_, 0,
|
| - kServerIdLength - 1),
|
| - url_, &dictionary);
|
| - else
|
| + if ('\0' == dictionary_hash_[kServerIdLength - 1]) {
|
| + SdchManager* manager(url_request_context_->sdch_manager());
|
| + manager->GetVcdiffDictionary(
|
| + std::string(dictionary_hash_, 0, kServerIdLength - 1),
|
| + url_, &dictionary);
|
| + } else {
|
| dictionary_hash_is_plausible_ = false;
|
| + }
|
|
|
| if (!dictionary) {
|
| DCHECK(dictionary_hash_.size() == kServerIdLength);
|
|
|