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

Side by Side Diff: Source/platform/network/HTTPParsers.h

Issue 961773002: Add a comma delimited syntax parser and use it for Accept-CH (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Added layout test Created 5 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
« no previous file with comments | « Source/core/fetch/Resource.cpp ('k') | Source/platform/network/HTTPParsers.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 2 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
3 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * Copyright (C) 2009 Google Inc. All rights reserved.
4 * Copyright (C) 2011 Apple Inc. All Rights Reserved. 4 * Copyright (C) 2011 Apple Inc. All Rights Reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 15 matching lines...) Expand all
26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef HTTPParsers_h 31 #ifndef HTTPParsers_h
32 #define HTTPParsers_h 32 #define HTTPParsers_h
33 33
34 #include "platform/PlatformExport.h" 34 #include "platform/PlatformExport.h"
35 #include "wtf/Forward.h" 35 #include "wtf/Forward.h"
36 #include "wtf/HashSet.h"
36 #include "wtf/Vector.h" 37 #include "wtf/Vector.h"
38 #include "wtf/text/StringHash.h"
37 39
38 namespace blink { 40 namespace blink {
39 41
40 typedef enum { 42 typedef enum {
41 ContentDispositionNone, 43 ContentDispositionNone,
42 ContentDispositionInline, 44 ContentDispositionInline,
43 ContentDispositionAttachment, 45 ContentDispositionAttachment,
44 ContentDispositionOther 46 ContentDispositionOther
45 } ContentDispositionType; 47 } ContentDispositionType;
46 48
(...skipping 13 matching lines...) Expand all
60 62
61 // Be sure to update the behavior of XSSAuditor::combineXSSProtectionHeaderAndCS P whenever you change this enum's content or ordering. 63 // Be sure to update the behavior of XSSAuditor::combineXSSProtectionHeaderAndCS P whenever you change this enum's content or ordering.
62 enum ReflectedXSSDisposition { 64 enum ReflectedXSSDisposition {
63 ReflectedXSSUnset = 0, 65 ReflectedXSSUnset = 0,
64 AllowReflectedXSS, 66 AllowReflectedXSS,
65 ReflectedXSSInvalid, 67 ReflectedXSSInvalid,
66 FilterReflectedXSS, 68 FilterReflectedXSS,
67 BlockReflectedXSS 69 BlockReflectedXSS
68 }; 70 };
69 71
72 using CommaDelimitedHeaderSet = HashSet<String, CaseFoldingHash>;
73
70 struct CacheControlHeader { 74 struct CacheControlHeader {
71 bool parsed : 1; 75 bool parsed : 1;
72 bool containsNoCache : 1; 76 bool containsNoCache : 1;
73 bool containsNoStore : 1; 77 bool containsNoStore : 1;
74 bool containsMustRevalidate : 1; 78 bool containsMustRevalidate : 1;
75 double maxAge; 79 double maxAge;
76 80
77 CacheControlHeader() 81 CacheControlHeader()
78 : parsed(false) 82 : parsed(false)
79 , containsNoCache(false) 83 , containsNoCache(false)
(...skipping 10 matching lines...) Expand all
90 PLATFORM_EXPORT bool parseHTTPRefresh(const String& refresh, bool fromHttpEquivM eta, double& delay, String& url); 94 PLATFORM_EXPORT bool parseHTTPRefresh(const String& refresh, bool fromHttpEquivM eta, double& delay, String& url);
91 PLATFORM_EXPORT double parseDate(const String&); 95 PLATFORM_EXPORT double parseDate(const String&);
92 PLATFORM_EXPORT String filenameFromHTTPContentDisposition(const String&); 96 PLATFORM_EXPORT String filenameFromHTTPContentDisposition(const String&);
93 PLATFORM_EXPORT AtomicString extractMIMETypeFromMediaType(const AtomicString&); 97 PLATFORM_EXPORT AtomicString extractMIMETypeFromMediaType(const AtomicString&);
94 PLATFORM_EXPORT String extractCharsetFromMediaType(const String&); 98 PLATFORM_EXPORT String extractCharsetFromMediaType(const String&);
95 PLATFORM_EXPORT void findCharsetInMediaType(const String& mediaType, unsigned& c harsetPos, unsigned& charsetLen, unsigned start = 0); 99 PLATFORM_EXPORT void findCharsetInMediaType(const String& mediaType, unsigned& c harsetPos, unsigned& charsetLen, unsigned start = 0);
96 PLATFORM_EXPORT ReflectedXSSDisposition parseXSSProtectionHeader(const String& h eader, String& failureReason, unsigned& failurePosition, String& reportURL); 100 PLATFORM_EXPORT ReflectedXSSDisposition parseXSSProtectionHeader(const String& h eader, String& failureReason, unsigned& failurePosition, String& reportURL);
97 PLATFORM_EXPORT String extractReasonPhraseFromHTTPStatusLine(const String&); 101 PLATFORM_EXPORT String extractReasonPhraseFromHTTPStatusLine(const String&);
98 PLATFORM_EXPORT XFrameOptionsDisposition parseXFrameOptionsHeader(const String&) ; 102 PLATFORM_EXPORT XFrameOptionsDisposition parseXFrameOptionsHeader(const String&) ;
99 PLATFORM_EXPORT CacheControlHeader parseCacheControlDirectives(const AtomicStrin g& cacheControlHeader, const AtomicString& pragmaHeader); 103 PLATFORM_EXPORT CacheControlHeader parseCacheControlDirectives(const AtomicStrin g& cacheControlHeader, const AtomicString& pragmaHeader);
104 PLATFORM_EXPORT void parseCommaDelimitedHeader(const String& headerValue, CommaD elimitedHeaderSet&);
100 105
101 // -1 could be set to one of the return parameters to indicate the value is not specified. 106 // -1 could be set to one of the return parameters to indicate the value is not specified.
102 PLATFORM_EXPORT bool parseRange(const String&, long long& rangeOffset, long long & rangeEnd, long long& rangeSuffixLength); 107 PLATFORM_EXPORT bool parseRange(const String&, long long& rangeOffset, long long & rangeEnd, long long& rangeSuffixLength);
103 108
104 PLATFORM_EXPORT ContentTypeOptionsDisposition parseContentTypeOptionsHeader(cons t String& header); 109 PLATFORM_EXPORT ContentTypeOptionsDisposition parseContentTypeOptionsHeader(cons t String& header);
105 110
106 // Parsing Complete HTTP Messages. 111 // Parsing Complete HTTP Messages.
107 enum HTTPVersion { Unknown, HTTP_1_0, HTTP_1_1 }; 112 enum HTTPVersion { Unknown, HTTP_1_0, HTTP_1_1 };
108 PLATFORM_EXPORT size_t parseHTTPRequestLine(const char* data, size_t length, Str ing& failureReason, String& method, String& url, HTTPVersion&); 113 PLATFORM_EXPORT size_t parseHTTPRequestLine(const char* data, size_t length, Str ing& failureReason, String& method, String& url, HTTPVersion&);
109 PLATFORM_EXPORT size_t parseHTTPHeader(const char* data, size_t length, String& failureReason, AtomicString& nameStr, AtomicString& valueStr); 114 PLATFORM_EXPORT size_t parseHTTPHeader(const char* data, size_t length, String& failureReason, AtomicString& nameStr, AtomicString& valueStr);
110 PLATFORM_EXPORT size_t parseHTTPRequestBody(const char* data, size_t length, Vec tor<unsigned char>& body); 115 PLATFORM_EXPORT size_t parseHTTPRequestBody(const char* data, size_t length, Vec tor<unsigned char>& body);
111 116
112 } 117 }
113 118
114 #endif 119 #endif
OLDNEW
« no previous file with comments | « Source/core/fetch/Resource.cpp ('k') | Source/platform/network/HTTPParsers.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698