diff options
Diffstat (limited to 'net/url_request/url_request_http_job.cc')
-rw-r--r-- | net/url_request/url_request_http_job.cc | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 480833a..ab3e947 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -80,6 +80,55 @@ class HTTPSProberDelegateImpl : public HTTPSProberDelegate { } // namespace +URLRequestHttpJob::HttpFilterContext::HttpFilterContext(URLRequestHttpJob* job) + : job_(job) { + DCHECK(job_); +} + +URLRequestHttpJob::HttpFilterContext::~HttpFilterContext() { +} + +bool URLRequestHttpJob::HttpFilterContext::GetMimeType( + std::string* mime_type) const { + return job_->GetMimeType(mime_type); +} + +bool URLRequestHttpJob::HttpFilterContext::GetURL(GURL* gurl) const { + if (!job_->request()) + return false; + *gurl = job_->request()->url(); + return true; +} + +base::Time URLRequestHttpJob::HttpFilterContext::GetRequestTime() const { + return job_->request() ? job_->request()->request_time() : base::Time(); +} + +bool URLRequestHttpJob::HttpFilterContext::IsCachedContent() const { + return job_->IsCachedContent(); +} + +bool URLRequestHttpJob::HttpFilterContext::IsDownload() const { + return (job_->request_info_.load_flags & LOAD_IS_DOWNLOAD) != 0; +} + +bool URLRequestHttpJob::HttpFilterContext::IsSdchResponse() const { + return job_->sdch_dictionary_advertised_; +} + +int64 URLRequestHttpJob::HttpFilterContext::GetByteReadCount() const { + return job_->filter_input_byte_count(); +} + +int URLRequestHttpJob::HttpFilterContext::GetResponseCode() const { + return job_->GetResponseCode(); +} + +void URLRequestHttpJob::HttpFilterContext::RecordPacketStats( + StatisticSelector statistic) const { + job_->RecordPacketStats(statistic); +} + // TODO(darin): make sure the port blocking code is not lost // static URLRequestJob* URLRequestHttpJob::Factory(URLRequest* request, @@ -143,6 +192,7 @@ URLRequestHttpJob::URLRequestHttpJob(URLRequest* request) sdch_test_control_(false), is_cached_content_(false), request_creation_time_(), + ALLOW_THIS_IN_INITIALIZER_LIST(filter_context_(this)), ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { ResetTimer(); } @@ -748,20 +798,16 @@ Filter* URLRequestHttpJob::SetupFilter() const { // some decoding, as some proxies strip encoding completely. In such cases, // we may need to add (for example) SDCH filtering (when the context suggests // it is appropriate). - Filter::FixupEncodingTypes(*this, &encoding_types); + Filter::FixupEncodingTypes(filter_context_, &encoding_types); return !encoding_types.empty() - ? Filter::Factory(encoding_types, *this) : NULL; + ? Filter::Factory(encoding_types, filter_context_) : NULL; } bool URLRequestHttpJob::IsCachedContent() const { return is_cached_content_; } -bool URLRequestHttpJob::IsSdchResponse() const { - return sdch_dictionary_advertised_; -} - bool URLRequestHttpJob::IsSafeRedirect(const GURL& location) { // We only allow redirects to certain "safe" protocols. This does not // restrict redirects to externally handled protocols. Our consumer would @@ -948,9 +994,9 @@ URLRequestHttpJob::~URLRequestHttpJob() { DCHECK(!sdch_test_control_ || !sdch_test_activated_); if (!IsCachedContent()) { if (sdch_test_control_) - RecordPacketStats(SDCH_EXPERIMENT_HOLDBACK); + RecordPacketStats(FilterContext::SDCH_EXPERIMENT_HOLDBACK); if (sdch_test_activated_) - RecordPacketStats(SDCH_EXPERIMENT_DECODE); + RecordPacketStats(FilterContext::SDCH_EXPERIMENT_DECODE); } // Make sure SDCH filters are told to emit histogram data while this class // can still service the IsCachedContent() call. |