summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/base/filter.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/base/filter.cc b/net/base/filter.cc
index 397a599..d15635a 100644
--- a/net/base/filter.cc
+++ b/net/base/filter.cc
@@ -4,6 +4,7 @@
#include "net/base/filter.h"
+#include "base/file_path.h"
#include "base/string_util.h"
#include "net/base/gzip_filter.h"
#include "net/base/bzip2_filter.h"
@@ -93,6 +94,21 @@ void Filter::FixupEncodingTypes(
// .gz files. We match Firefox's nsHttpChannel::ProcessNormal and ignore
// the Content-Encoding here.
encoding_types->clear();
+
+ GURL url;
+ success = filter_context.GetURL(&url);
+ DCHECK(success);
+ FilePath filename = FilePath().AppendASCII(url.ExtractFileName());
+ FilePath::StringType extension = filename.Extension();
+
+ // Firefox does not apply the filter to the following extensions.
+ // See Firefox's nsHttpChannel::nsContentEncodings::GetNext() and
+ // nonDecodableExtensions in nsExternalHelperAppService.cpp
+ if (0 == extension.compare(FILE_PATH_LITERAL(".gz")) ||
+ 0 == extension.compare(FILE_PATH_LITERAL(".tgz")) ||
+ 0 == extension.compare(FILE_PATH_LITERAL(".svgz"))) {
+ encoding_types->clear();
+ }
}
if (!filter_context.IsSdchResponse()) {