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

Side by Side Diff: net/filter/filter.h

Issue 693943003: Update from https://crrev.com/302630 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 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 unified diff | Download patch
« no previous file with comments | « net/disk_cache/simple/simple_index_file_unittest.cc ('k') | net/filter/filter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 // Filter performs filtering on data streams. Sample usage: 5 // Filter performs filtering on data streams. Sample usage:
6 // 6 //
7 // IStream* pre_filter_source; 7 // IStream* pre_filter_source;
8 // ... 8 // ...
9 // Filter* filter = Filter::Factory(filter_type, size); 9 // Filter* filter = Filter::Factory(filter_type, size);
10 // int pre_filter_data_len = filter->stream_buffer_size(); 10 // int pre_filter_data_len = filter->stream_buffer_size();
11 // pre_filter_source->read(filter->stream_buffer(), pre_filter_data_len); 11 // pre_filter_source->read(filter->stream_buffer(), pre_filter_data_len);
12 // 12 //
13 // filter->FlushStreamBuffer(pre_filter_data_len); 13 // filter->FlushStreamBuffer(pre_filter_data_len);
14 // 14 //
15 // char post_filter_buf[kBufferSize]; 15 // char post_filter_buf[kBufferSize];
16 // int post_filter_data_len = kBufferSize; 16 // int post_filter_data_len = kBufferSize;
17 // filter->ReadFilteredData(post_filter_buf, &post_filter_data_len); 17 // filter->ReadFilteredData(post_filter_buf, &post_filter_data_len);
18 // 18 //
19 // To filter a data stream, the caller first gets filter's stream_buffer_ 19 // To filter a data stream, the caller first gets filter's stream_buffer_
20 // through its accessor and fills in stream_buffer_ with pre-filter data, next 20 // through its accessor and fills in stream_buffer_ with pre-filter data, next
21 // calls FlushStreamBuffer to notify Filter, then calls ReadFilteredData 21 // calls FlushStreamBuffer to notify Filter, then calls ReadFilteredData
22 // repeatedly to get all the filtered data. After all data have been fitlered 22 // repeatedly to get all the filtered data. After all data have been filtered
23 // and read out, the caller may fill in stream_buffer_ again. This 23 // and read out, the caller may fill in stream_buffer_ again. This
24 // WriteBuffer-Flush-Read cycle is repeated until reaching the end of data 24 // WriteBuffer-Flush-Read cycle is repeated until reaching the end of data
25 // stream. 25 // stream.
26 // 26 //
27 // A return of FILTER_OK from ReadData() means that more data is
28 // available to a future ReadData() call and data may not be written
29 // into stream_buffer(). A return of FILTER_NEED_MORE_DATA from ReadData()
30 // indicates that no data will be forthcoming from the filter until
31 // it receives more input data, and that the buffer at
32 // stream_buffer() may be written to.
33 //
34 // The filter being complete (no more data to provide) may be indicated
35 // by either returning FILTER_DONE or by returning FILTER_OK and indicating
36 // zero bytes output; consumers understand both those signals. Consumers
37 // are responsible for not calling ReadData() on a filter after one of these
38 // signals have been returned. Note that some filters may never signal that
39 // they are done (e.g. a pass-through filter will always
40 // say FILTER_NEED_MORE_DATA), so the consumer will also need to
41 // recognize the state of |no_more_input_data_available &&
42 // filter->stream_data_len() == 0| as FILTER_DONE.
43 //
27 // The lifetime of a Filter instance is completely controlled by its caller. 44 // The lifetime of a Filter instance is completely controlled by its caller.
28 45
29 #ifndef NET_FILTER_FILTER_H__ 46 #ifndef NET_FILTER_FILTER_H__
30 #define NET_FILTER_FILTER_H__ 47 #define NET_FILTER_FILTER_H__
31 48
32 #include <string> 49 #include <string>
33 #include <vector> 50 #include <vector>
34 51
35 #include "base/basictypes.h" 52 #include "base/basictypes.h"
36 #include "base/gtest_prod_util.h" 53 #include "base/gtest_prod_util.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 // encoding, where various proxies and anti-virus products modify or strip the 217 // encoding, where various proxies and anti-virus products modify or strip the
201 // encodings. These fixups require context, which includes whether this 218 // encodings. These fixups require context, which includes whether this
202 // response was made to an SDCH request (i.e., an available dictionary was 219 // response was made to an SDCH request (i.e., an available dictionary was
203 // advertised in the GET), as well as the mime type of the content. 220 // advertised in the GET), as well as the mime type of the content.
204 static void FixupEncodingTypes(const FilterContext& filter_context, 221 static void FixupEncodingTypes(const FilterContext& filter_context,
205 std::vector<FilterType>* encoding_types); 222 std::vector<FilterType>* encoding_types);
206 223
207 protected: 224 protected:
208 friend class GZipUnitTest; 225 friend class GZipUnitTest;
209 friend class SdchFilterChainingTest; 226 friend class SdchFilterChainingTest;
227 FRIEND_TEST_ALL_PREFIXES(FilterTest, ThreeFilterChain);
210 228
211 Filter(); 229 Filter();
212 230
213 // Filters the data stored in stream_buffer_ and writes the output into the 231 // Filters the data stored in stream_buffer_ and writes the output into the
214 // dest_buffer passed in. 232 // dest_buffer passed in.
215 // 233 //
216 // Upon entry, *dest_len is the total size (in number of chars) of the 234 // Upon entry, *dest_len is the total size (in number of chars) of the
217 // destination buffer. Upon exit, *dest_len is the actual number of chars 235 // destination buffer. Upon exit, *dest_len is the actual number of chars
218 // written into the destination buffer. 236 // written into the destination buffer.
219 // 237 //
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 // Remember what status or local filter last returned so we can better handle 293 // Remember what status or local filter last returned so we can better handle
276 // chained filters. 294 // chained filters.
277 FilterStatus last_status_; 295 FilterStatus last_status_;
278 296
279 DISALLOW_COPY_AND_ASSIGN(Filter); 297 DISALLOW_COPY_AND_ASSIGN(Filter);
280 }; 298 };
281 299
282 } // namespace net 300 } // namespace net
283 301
284 #endif // NET_FILTER_FILTER_H__ 302 #endif // NET_FILTER_FILTER_H__
OLDNEW
« no previous file with comments | « net/disk_cache/simple/simple_index_file_unittest.cc ('k') | net/filter/filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698