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

Unified Diff: net/filter/gzip_filter.h

Issue 2478703004: Remove net::Filter code (Closed)
Patch Set: Address Matt's comment Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/filter/filter.cc ('k') | net/filter/gzip_filter.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/filter/gzip_filter.h
diff --git a/net/filter/gzip_filter.h b/net/filter/gzip_filter.h
deleted file mode 100644
index c0d80b6859371fdca841def29bf4602de00f8138..0000000000000000000000000000000000000000
--- a/net/filter/gzip_filter.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// GZipFilter applies gzip and deflate content encoding/decoding to a data
-// stream. As specified by HTTP 1.1, with gzip encoding the content is
-// wrapped with a gzip header, and with deflate encoding the content is in
-// a raw, headerless DEFLATE stream.
-//
-// Internally GZipFilter uses zlib inflate to do decoding.
-//
-// GZipFilter is a subclass of Filter. See the latter's header file filter.h
-// for sample usage.
-
-#ifndef NET_FILTER_GZIP_FILTER_H_
-#define NET_FILTER_GZIP_FILTER_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "net/filter/filter.h"
-
-typedef struct z_stream_s z_stream;
-
-namespace net {
-
-class GZipHeader;
-
-class GZipFilter : public Filter {
- public:
- ~GZipFilter() override;
-
- // Initializes filter decoding mode and internal control blocks.
- // Parameter filter_type specifies the type of filter, which corresponds to
- // either gzip or deflate decoding. The function returns true if success and
- // false otherwise.
- // The filter can only be initialized once.
- bool InitDecoding(Filter::FilterType filter_type);
-
- // Decodes the pre-filter data and writes the output into the dest_buffer
- // passed in.
- // The function returns FilterStatus. See filter.h for its description.
- //
- // Upon entry, *dest_len is the total size (in number of chars) of the
- // destination buffer. Upon exit, *dest_len is the actual number of chars
- // written into the destination buffer.
- //
- // This function will fail if there is no pre-filter data in the
- // stream_buffer_. On the other hand, *dest_len can be 0 upon successful
- // return. For example, the internal zlib may process some pre-filter data
- // but not produce output yet.
- FilterStatus ReadFilteredData(char* dest_buffer, int* dest_len) override;
-
- private:
- enum DecodingStatus {
- DECODING_UNINITIALIZED,
- DECODING_IN_PROGRESS,
- DECODING_DONE,
- DECODING_ERROR
- };
-
- enum DecodingMode {
- DECODE_MODE_GZIP,
- DECODE_MODE_DEFLATE,
- DECODE_MODE_UNKNOWN
- };
-
- enum GZipCheckHeaderState {
- GZIP_CHECK_HEADER_IN_PROGRESS,
- GZIP_GET_COMPLETE_HEADER,
- GZIP_GET_INVALID_HEADER
- };
-
- static const int kGZipFooterSize = 8;
-
- // Only to be instantiated by Filter::Factory.
- explicit GZipFilter(FilterType type);
- friend class Filter;
-
- // Parses and verifies the GZip header.
- // Upon exit, the function updates gzip_header_status_ accordingly.
- //
- // The function returns Filter::FILTER_OK if it gets a complete header and
- // there are more data in the pre-filter buffer.
- // The function returns Filter::FILTER_NEED_MORE_DATA if it parses all data
- // in the pre-filter buffer, either getting a complete header or a partial
- // header. The caller needs to check gzip_header_status_ and call this
- // function again for partial header.
- // The function returns Filter::FILTER_ERROR if error occurs.
- FilterStatus CheckGZipHeader();
-
- // Internal function to decode the pre-filter data and writes the output into
- // the dest_buffer passed in.
- //
- // This is the internal version of ReadFilteredData. See the latter's
- // comments for the use of function.
- FilterStatus DoInflate(char* dest_buffer, int* dest_len);
-
- // Inserts a zlib header to the data stream before calling zlib inflate.
- // This is used to work around server bugs. See more comments at the place
- // it is called in gzip_filter.cc.
- // The function returns true on success and false otherwise.
- bool InsertZlibHeader();
-
- // Skip the 8 byte GZip footer after z_stream_end
- void SkipGZipFooter();
-
- // Tracks the status of decoding.
- // This variable is initialized by InitDecoding and updated only by
- // ReadFilteredData.
- DecodingStatus decoding_status_;
-
- // Indicates the type of content decoding the GZipFilter is performing.
- // This variable is set only once by InitDecoding.
- DecodingMode decoding_mode_;
-
- // Used to parse the gzip header in gzip stream.
- // It is used when the decoding_mode_ is DECODE_MODE_GZIP.
- std::unique_ptr<GZipHeader> gzip_header_;
-
- // Tracks the progress of parsing gzip header.
- // This variable is maintained by gzip_header_.
- GZipCheckHeaderState gzip_header_status_;
-
- // A flag used by InsertZlibHeader to record whether we've successfully added
- // a zlib header to this stream.
- bool zlib_header_added_;
-
- // Tracks how many bytes of gzip footer have been received.
- int gzip_footer_bytes_;
-
- // The control block of zlib which actually does the decoding.
- // This data structure is initialized by InitDecoding and updated only by
- // DoInflate, with InsertZlibHeader being the exception as a workaround.
- std::unique_ptr<z_stream> zlib_stream_;
-
- // For robustness, when we see the solo sdch filter, we chain in a gzip filter
- // in front of it, with this flag to indicate that the gzip decoding might not
- // be needed. This handles a strange case where "Content-Encoding: sdch,gzip"
- // is reduced by an errant proxy to "Content-Encoding: sdch", while the
- // content is indeed really gzipped result of sdch :-/.
- // If this flag is set, then we will revert to being a pass through filter if
- // we don't get a valid gzip header.
- bool possible_sdch_pass_through_;
-
- DISALLOW_COPY_AND_ASSIGN(GZipFilter);
-};
-
-} // namespace net
-
-#endif // NET_FILTER_GZIP_FILTER_H__
« no previous file with comments | « net/filter/filter.cc ('k') | net/filter/gzip_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698