| OLD | NEW | 
|---|
| 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 #ifndef NET_HTTP_RESPONSE_HEADERS_H_ | 5 #ifndef NET_HTTP_RESPONSE_HEADERS_H_ | 
| 6 #define NET_HTTP_RESPONSE_HEADERS_H_ | 6 #define NET_HTTP_RESPONSE_HEADERS_H_ | 
| 7 | 7 | 
| 8 #include <string> | 8 #include <string> | 
| 9 #include <vector> | 9 #include <vector> | 
| 10 | 10 | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 34   // us to access the raw byte sequence as sent by a web server.  In any case, | 34   // us to access the raw byte sequence as sent by a web server.  In any case, | 
| 35   // HttpResponseHeaders does not perform any encoding changes on the input. | 35   // HttpResponseHeaders does not perform any encoding changes on the input. | 
| 36   // | 36   // | 
| 37   explicit HttpResponseHeaders(const std::string& raw_headers); | 37   explicit HttpResponseHeaders(const std::string& raw_headers); | 
| 38 | 38 | 
| 39   // Initializes from the representation stored in the given pickle.  The data | 39   // Initializes from the representation stored in the given pickle.  The data | 
| 40   // for this object is found relative to the given pickle_iter, which should | 40   // for this object is found relative to the given pickle_iter, which should | 
| 41   // be passed to the pickle's various Read* methods. | 41   // be passed to the pickle's various Read* methods. | 
| 42   HttpResponseHeaders(const Pickle& pickle, void** pickle_iter); | 42   HttpResponseHeaders(const Pickle& pickle, void** pickle_iter); | 
| 43 | 43 | 
| 44   // Appends a representation of this object to the given pickle.  If the | 44   // Persist options. | 
| 45   // for_cache argument is true, then non-cacheable headers will be pruned from | 45   typedef int PersistOptions; | 
| 46   // the persisted version of the response headers. | 46   static const PersistOptions PERSIST_RAW = -1;  // Raw, unparsed headers. | 
| 47   void Persist(Pickle* pickle, bool for_cache); | 47   static const PersistOptions PERSIST_ALL = 0;  // Parsed headers. | 
|  | 48   static const PersistOptions PERSIST_SANS_COOKIES = 1 << 0; | 
|  | 49   static const PersistOptions PERSIST_SANS_CHALLENGES = 1 << 1; | 
|  | 50   static const PersistOptions PERSIST_SANS_HOP_BY_HOP = 1 << 2; | 
|  | 51   static const PersistOptions PERSIST_SANS_NON_CACHEABLE = 1 << 3; | 
|  | 52 | 
|  | 53   // Appends a representation of this object to the given pickle. | 
|  | 54   // The options argument can be a combination of PersistOptions. | 
|  | 55   void Persist(Pickle* pickle, PersistOptions options); | 
| 48 | 56 | 
| 49   // Performs header merging as described in 13.5.3 of RFC 2616. | 57   // Performs header merging as described in 13.5.3 of RFC 2616. | 
| 50   void Update(const HttpResponseHeaders& new_headers); | 58   void Update(const HttpResponseHeaders& new_headers); | 
| 51 | 59 | 
| 52   // Creates a normalized header string.  The output will be formatted exactly | 60   // Creates a normalized header string.  The output will be formatted exactly | 
| 53   // like so: | 61   // like so: | 
| 54   //     HTTP/<version> <status_code> <status_text>\n | 62   //     HTTP/<version> <status_code> <status_text>\n | 
| 55   //     [<header-name>: <header-values>\n]* | 63   //     [<header-name>: <header-values>\n]* | 
| 56   // meaning, each line is \n-terminated, and there is no extra whitespace | 64   // meaning, each line is \n-terminated, and there is no extra whitespace | 
| 57   // beyond the single space separators shown (of course, values can contain | 65   // beyond the single space separators shown (of course, values can contain | 
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 232                  std::string::const_iterator value_end); | 240                  std::string::const_iterator value_end); | 
| 233 | 241 | 
| 234   // Add to parsed_ given the fields of a ParsedHeader object. | 242   // Add to parsed_ given the fields of a ParsedHeader object. | 
| 235   void AddToParsed(std::string::const_iterator name_begin, | 243   void AddToParsed(std::string::const_iterator name_begin, | 
| 236                    std::string::const_iterator name_end, | 244                    std::string::const_iterator name_end, | 
| 237                    std::string::const_iterator value_begin, | 245                    std::string::const_iterator value_begin, | 
| 238                    std::string::const_iterator value_end); | 246                    std::string::const_iterator value_end); | 
| 239 | 247 | 
| 240   typedef base::hash_set<std::string> HeaderSet; | 248   typedef base::hash_set<std::string> HeaderSet; | 
| 241 | 249 | 
| 242   // Returns the values from any 'cache-control: no-cache="foo,bar"' headers as | 250   // Adds the values from any 'cache-control: no-cache="foo,bar"' headers. | 
| 243   // well as other known-to-be-transient header names.  The header names are | 251   void AddNonCacheableHeaders(HeaderSet* header_names) const; | 
| 244   // all lowercase to support fast lookup. | 252 | 
| 245   void GetTransientHeaders(HeaderSet* header_names) const; | 253   // Adds the set of header names that contain cookie values. | 
|  | 254   static void AddSensitiveHeaders(HeaderSet* header_names); | 
|  | 255 | 
|  | 256   // Adds the set of rfc2616 hop-by-hop response headers. | 
|  | 257   static void AddHopByHopHeaders(HeaderSet* header_names); | 
|  | 258 | 
|  | 259   // Adds the set of challenge response headers. | 
|  | 260   static void AddChallengeHeaders(HeaderSet* header_names); | 
|  | 261 | 
|  | 262   // Adds the set of cookie response headers. | 
|  | 263   static void AddCookieHeaders(HeaderSet* header_names); | 
| 246 | 264 | 
| 247   // The members of this structure point into raw_headers_. | 265   // The members of this structure point into raw_headers_. | 
| 248   struct ParsedHeader { | 266   struct ParsedHeader { | 
| 249     std::string::const_iterator name_begin; | 267     std::string::const_iterator name_begin; | 
| 250     std::string::const_iterator name_end; | 268     std::string::const_iterator name_end; | 
| 251     std::string::const_iterator value_begin; | 269     std::string::const_iterator value_begin; | 
| 252     std::string::const_iterator value_end; | 270     std::string::const_iterator value_end; | 
| 253 | 271 | 
| 254     // A header "continuation" contains only a subsequent value for the | 272     // A header "continuation" contains only a subsequent value for the | 
| 255     // preceding header.  (Header values are comma separated.) | 273     // preceding header.  (Header values are comma separated.) | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 278   // The parsed http version number (not normalized). | 296   // The parsed http version number (not normalized). | 
| 279   HttpVersion parsed_http_version_; | 297   HttpVersion parsed_http_version_; | 
| 280 | 298 | 
| 281   DISALLOW_COPY_AND_ASSIGN(HttpResponseHeaders); | 299   DISALLOW_COPY_AND_ASSIGN(HttpResponseHeaders); | 
| 282 }; | 300 }; | 
| 283 | 301 | 
| 284 }  // namespace net | 302 }  // namespace net | 
| 285 | 303 | 
| 286 #endif  // NET_HTTP_RESPONSE_HEADERS_H_ | 304 #endif  // NET_HTTP_RESPONSE_HEADERS_H_ | 
| 287 | 305 | 
| OLD | NEW | 
|---|