| // Copyright 2017 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. |
| |
| #ifndef NET_URL_REQUEST_REDIRECT_UTIL_H_ |
| #define NET_URL_REQUEST_REDIRECT_UTIL_H_ |
| |
| #include <string> |
| |
| #include "base/optional.h" |
| #include "net/base/net_export.h" |
| |
| class GURL; |
| |
| namespace net { |
| |
| struct RedirectInfo; |
| class HttpRequestHeaders; |
| class HttpResponseHeaders; |
| |
| class RedirectUtil { |
| public: |
| // Updates HTTP headers in |request_headers| for a redirect. |
| // |removed_headers| and |modified_headers| are specified by |
| // clients to add or override existing headers for the redirect. |
| // |should_clear_upload| is set to true when the request body should be |
| // cleared during the redirect. |
| NET_EXPORT static void UpdateHttpRequest( |
| const GURL& original_url, |
| const std::string& original_method, |
| const RedirectInfo& redirect_info, |
| const base::Optional<std::vector<std::string>>& removed_headers, |
| const base::Optional<net::HttpRequestHeaders>& modified_headers, |
| HttpRequestHeaders* request_headers, |
| bool* should_clear_upload); |
| |
| // Returns the the "normalized" value of Referrer-Policy header if available. |
| // Otherwise returns base::nullopt. |
| NET_EXPORT static base::Optional<std::string> GetReferrerPolicyHeader( |
| const HttpResponseHeaders* response_headers); |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_URL_REQUEST_REDIRECT_UTIL_H_ |