Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: net/base/sdch_filter.cc

Issue 40138: Use FilterContext to allow filters to access URLRequestJob data... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <limits.h> 5 #include <limits.h>
6 #include <ctype.h> 6 #include <ctype.h>
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/histogram.h" 10 #include "base/histogram.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "net/base/sdch_filter.h" 12 #include "net/base/sdch_filter.h"
13 #include "net/base/sdch_manager.h" 13 #include "net/base/sdch_manager.h"
14 14
15 #include "sdch/open-vcdiff/src/google/vcdecoder.h" 15 #include "sdch/open-vcdiff/src/google/vcdecoder.h"
16 16
17 SdchFilter::SdchFilter() 17 SdchFilter::SdchFilter(const FilterContext& filter_context)
18 : decoding_status_(DECODING_UNINITIALIZED), 18 : Filter(filter_context),
19 decoding_status_(DECODING_UNINITIALIZED),
19 vcdiff_streaming_decoder_(NULL), 20 vcdiff_streaming_decoder_(NULL),
20 dictionary_hash_(), 21 dictionary_hash_(),
21 dictionary_hash_is_plausible_(false), 22 dictionary_hash_is_plausible_(false),
22 dictionary_(NULL), 23 dictionary_(NULL),
23 dest_buffer_excess_(), 24 dest_buffer_excess_(),
24 dest_buffer_excess_index_(0), 25 dest_buffer_excess_index_(0),
25 source_bytes_(0), 26 source_bytes_(0),
26 output_bytes_(0), 27 output_bytes_(0),
27 possible_pass_through_(false) { 28 possible_pass_through_(false) {
28 } 29 }
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 SdchManager::SdchErrorRecovery(SdchManager::PASSING_THROUGH_NON_SDCH); 176 SdchManager::SdchErrorRecovery(SdchManager::PASSING_THROUGH_NON_SDCH);
176 decoding_status_ = PASS_THROUGH; 177 decoding_status_ = PASS_THROUGH;
177 dest_buffer_excess_ = dictionary_hash_; // Send what we scanned. 178 dest_buffer_excess_ = dictionary_hash_; // Send what we scanned.
178 } else { 179 } else {
179 // We don't have the dictionary that was demanded. 180 // We don't have the dictionary that was demanded.
180 // With very low probability, random garbage data looked like a 181 // With very low probability, random garbage data looked like a
181 // dictionary specifier (8 ASCII characters followed by a null), but 182 // dictionary specifier (8 ASCII characters followed by a null), but
182 // that is sufficiently unlikely that we ignore it. 183 // that is sufficiently unlikely that we ignore it.
183 if (std::string::npos == mime_type().find_first_of("text/html")) { 184 if (std::string::npos == mime_type().find_first_of("text/html")) {
184 SdchManager::BlacklistDomainForever(url()); 185 SdchManager::BlacklistDomainForever(url());
185 if (was_cached_) 186 if (was_cached())
186 SdchManager::SdchErrorRecovery( 187 SdchManager::SdchErrorRecovery(
187 SdchManager::CACHED_META_REFRESH_UNSUPPORTED); 188 SdchManager::CACHED_META_REFRESH_UNSUPPORTED);
188 else 189 else
189 SdchManager::SdchErrorRecovery( 190 SdchManager::SdchErrorRecovery(
190 SdchManager::META_REFRESH_UNSUPPORTED); 191 SdchManager::META_REFRESH_UNSUPPORTED);
191 return FILTER_ERROR; 192 return FILTER_ERROR;
192 } 193 }
193 // HTML content means we can issue a meta-refresh, and get the content 194 // HTML content means we can issue a meta-refresh, and get the content
194 // again, perhaps without SDCH (to be safe). 195 // again, perhaps without SDCH (to be safe).
195 if (was_cached_) { 196 if (was_cached()) {
196 // Cached content is probably a startup tab, so we'll just get fresh 197 // Cached content is probably a startup tab, so we'll just get fresh
197 // content and try again, without disabling sdch. 198 // content and try again, without disabling sdch.
198 SdchManager::SdchErrorRecovery( 199 SdchManager::SdchErrorRecovery(
199 SdchManager::META_REFRESH_CACHED_RECOVERY); 200 SdchManager::META_REFRESH_CACHED_RECOVERY);
200 } else { 201 } else {
201 // Since it wasn't in the cache, we definately need at least some 202 // Since it wasn't in the cache, we definately need at least some
202 // period of blacklisting to get the correct content. 203 // period of blacklisting to get the correct content.
203 SdchManager::BlacklistDomain(url()); 204 SdchManager::BlacklistDomain(url());
204 SdchManager::SdchErrorRecovery(SdchManager::META_REFRESH_RECOVERY); 205 SdchManager::SdchErrorRecovery(SdchManager::META_REFRESH_RECOVERY);
205 } 206 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 memcpy(dest_buffer, dest_buffer_excess_.data() + dest_buffer_excess_index_, 334 memcpy(dest_buffer, dest_buffer_excess_.data() + dest_buffer_excess_index_,
334 amount); 335 amount);
335 dest_buffer_excess_index_ += amount; 336 dest_buffer_excess_index_ += amount;
336 if (dest_buffer_excess_.size() <= dest_buffer_excess_index_) { 337 if (dest_buffer_excess_.size() <= dest_buffer_excess_index_) {
337 DCHECK(dest_buffer_excess_.size() == dest_buffer_excess_index_); 338 DCHECK(dest_buffer_excess_.size() == dest_buffer_excess_index_);
338 dest_buffer_excess_.clear(); 339 dest_buffer_excess_.clear();
339 dest_buffer_excess_index_ = 0; 340 dest_buffer_excess_index_ = 0;
340 } 341 }
341 return amount; 342 return amount;
342 } 343 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698