OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_URL_REQUEST_URL_REQUEST_H_ | 5 #ifndef NET_URL_REQUEST_URL_REQUEST_H_ |
6 #define NET_URL_REQUEST_URL_REQUEST_H_ | 6 #define NET_URL_REQUEST_URL_REQUEST_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 public base::SupportsUserData { | 74 public base::SupportsUserData { |
75 public: | 75 public: |
76 // Callback function implemented by protocol handlers to create new jobs. | 76 // Callback function implemented by protocol handlers to create new jobs. |
77 // The factory may return NULL to indicate an error, which will cause other | 77 // The factory may return NULL to indicate an error, which will cause other |
78 // factories to be queried. If no factory handles the request, then the | 78 // factories to be queried. If no factory handles the request, then the |
79 // default job will be used. | 79 // default job will be used. |
80 typedef URLRequestJob* (ProtocolFactory)(URLRequest* request, | 80 typedef URLRequestJob* (ProtocolFactory)(URLRequest* request, |
81 NetworkDelegate* network_delegate, | 81 NetworkDelegate* network_delegate, |
82 const std::string& scheme); | 82 const std::string& scheme); |
83 | 83 |
84 // A ReferrerPolicy for the request can be set with | 84 // Referrer policies (see set_referrer_policy): During server redirects, the |
85 // set_referrer_policy() and controls the contents of the Referer | 85 // referrer header might be cleared, if the protocol changes from HTTPS to |
86 // header when URLRequest follows server redirects. | 86 // HTTP. This is the default behavior of URLRequest, corresponding to |
| 87 // CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE. Alternatively, the |
| 88 // referrer policy can be set to strip the referrer down to an origin upon |
| 89 // cross-origin navigation (ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN), or |
| 90 // never change the referrer header (NEVER_CLEAR_REFERRER). Embedders will |
| 91 // want to use these options when implementing referrer policy support |
| 92 // (https://w3c.github.io/webappsec/specs/referrer-policy/). |
| 93 // |
| 94 // REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN is a slight variant |
| 95 // on CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE: If the request |
| 96 // downgrades from HTTPS to HTTP, the referrer will be cleared. If the request |
| 97 // transitions cross-origin (but does not downgrade), the referrer's |
| 98 // granularity will be reduced (currently stripped down to an origin rather |
| 99 // than a full URL). Same-origin requests will send the full referrer. |
87 enum ReferrerPolicy { | 100 enum ReferrerPolicy { |
88 // Clear the referrer header if the protocol changes from HTTPS to | |
89 // HTTP. This is the default behavior of URLRequest. | |
90 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, | 101 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
91 // A slight variant on | |
92 // CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE: If the | |
93 // request downgrades from HTTPS to HTTP, the referrer will be | |
94 // cleared. If the request transitions cross-origin (but does not | |
95 // downgrade), the referrer's granularity will be reduced (currently | |
96 // stripped down to an origin rather than a full URL). Same-origin | |
97 // requests will send the full referrer. | |
98 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, | 102 REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
99 // Strip the referrer down to an origin upon cross-origin navigation. | |
100 ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, | 103 ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
101 // Never change the referrer. | |
102 NEVER_CLEAR_REFERRER, | 104 NEVER_CLEAR_REFERRER, |
103 // Strip the referrer down to the origin regardless of the redirect | |
104 // location. | |
105 ORIGIN, | |
106 // Always clear the referrer regardless of the redirect location. | |
107 NO_REFERRER, | |
108 MAX_REFERRER_POLICY | |
109 }; | 105 }; |
110 | 106 |
111 // First-party URL redirect policy: During server redirects, the first-party | 107 // First-party URL redirect policy: During server redirects, the first-party |
112 // URL for cookies normally doesn't change. However, if the request is a | 108 // URL for cookies normally doesn't change. However, if the request is a |
113 // top-level first-party request, the first-party URL should be updated to the | 109 // top-level first-party request, the first-party URL should be updated to the |
114 // URL on every redirect. | 110 // URL on every redirect. |
115 enum FirstPartyURLPolicy { | 111 enum FirstPartyURLPolicy { |
116 NEVER_CHANGE_FIRST_PARTY_URL, | 112 NEVER_CHANGE_FIRST_PARTY_URL, |
117 UPDATE_FIRST_PARTY_URL_ON_REDIRECT, | 113 UPDATE_FIRST_PARTY_URL_ON_REDIRECT, |
118 }; | 114 }; |
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
860 | 856 |
861 // The proxy server used for this request, if any. | 857 // The proxy server used for this request, if any. |
862 HostPortPair proxy_server_; | 858 HostPortPair proxy_server_; |
863 | 859 |
864 DISALLOW_COPY_AND_ASSIGN(URLRequest); | 860 DISALLOW_COPY_AND_ASSIGN(URLRequest); |
865 }; | 861 }; |
866 | 862 |
867 } // namespace net | 863 } // namespace net |
868 | 864 |
869 #endif // NET_URL_REQUEST_URL_REQUEST_H_ | 865 #endif // NET_URL_REQUEST_URL_REQUEST_H_ |
OLD | NEW |