chromium/third_party/blink/public/platform/web_url_request_util.h

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_URL_REQUEST_UTIL_H_
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_URL_REQUEST_UTIL_H_

#include "net/http/http_request_headers.h"
#include "services/network/public/mojom/fetch_api.mojom-forward.h"
#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-forward.h"
#include "third_party/blink/public/mojom/loader/mixed_content.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-forward.h"
#include "third_party/blink/public/platform/web_common.h"

namespace network {
class ResourceRequestBody;
}

namespace blink {

class WebHTTPBody;
class WebURLRequest;
class WebString;

BLINK_PLATFORM_EXPORT WebString
GetWebURLRequestHeadersAsString(const WebURLRequest& request);

// Takes a ResourceRequestBody and converts into WebHTTPBody.
BLINK_PLATFORM_EXPORT WebHTTPBody
GetWebHTTPBodyForRequestBody(const network::ResourceRequestBody& input);

// Takes a WebHTTPBody and converts into a ResourceRequestBody.
BLINK_PLATFORM_EXPORT scoped_refptr<network::ResourceRequestBody>
GetRequestBodyForWebHTTPBody(const WebHTTPBody& httpBody);

// Takes a WebURLRequest and sets the appropriate information
// in a ResourceRequestBody structure. Returns an empty scoped_refptr
// if the request body is not present.
BLINK_PLATFORM_EXPORT scoped_refptr<network::ResourceRequestBody>
GetRequestBodyForWebURLRequest(const WebURLRequest& request);

// Helper functions to convert enums from the blink type to the content
// type.
BLINK_PLATFORM_EXPORT mojom::RequestContextType
GetRequestContextTypeForWebURLRequest(const WebURLRequest& request);
BLINK_PLATFORM_EXPORT network::mojom::RequestDestination
GetRequestDestinationForWebURLRequest(const WebURLRequest& request);
BLINK_PLATFORM_EXPORT mojom::MixedContentContextType
GetMixedContentContextTypeForWebURLRequest(const WebURLRequest& request);

// Generates ids for requests initiated by child processes unique to the
// particular process, counted up from 0 (browser initiated requests count
// down from -2).
//
// Public to be used by content::RenderFrameImpl with the need to fill a
// navigation request id.
BLINK_PLATFORM_EXPORT int GenerateRequestId();

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_URL_REQUEST_UTIL_H_