#include "third_party/blink/renderer/core/fetch/response.h"
#include <memory>
#include <optional>
#include "base/memory/scoped_refptr.h"
#include "services/network/public/cpp/header_util.h"
#include "third_party/blink/public/mojom/fetch/fetch_api_response.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
#include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
#include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_blob.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_form_data.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_readable_stream.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_response_init.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_url_search_params.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/fetch/blob_bytes_consumer.h"
#include "third_party/blink/renderer/core/fetch/body_stream_buffer.h"
#include "third_party/blink/renderer/core/fetch/form_data_bytes_consumer.h"
#include "third_party/blink/renderer/core/fileapi/blob.h"
#include "third_party/blink/renderer/core/frame/web_feature.h"
#include "third_party/blink/renderer/core/html/forms/form_data.h"
#include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h"
#include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer_view.h"
#include "third_party/blink/renderer/core/url/url_search_params.h"
#include "third_party/blink/renderer/platform/bindings/exception_messages.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/loader/cors/cors.h"
#include "third_party/blink/renderer/platform/loader/fetch/fetch_utils.h"
#include "third_party/blink/renderer/platform/network/encoded_form_data.h"
#include "third_party/blink/renderer/platform/network/http_header_map.h"
#include "third_party/blink/renderer/platform/network/http_names.h"
#include "third_party/blink/renderer/platform/network/network_utils.h"
namespace blink {
namespace {
template <typename CorsHeadersContainer>
FetchResponseData* FilterResponseDataInternal(
network::mojom::FetchResponseType response_type,
FetchResponseData* response,
CorsHeadersContainer& headers) { … }
FetchResponseData* CreateFetchResponseDataFromFetchAPIResponse(
ScriptState* script_state,
mojom::blink::FetchAPIResponse& fetch_api_response) { … }
bool IsNullBodyStatus(uint16_t status) { … }
bool IsValidReasonPhrase(const String& status_text) { … }
}
Response* Response::Create(ScriptState* script_state,
ExceptionState& exception_state) { … }
Response* Response::Create(ScriptState* script_state,
ScriptValue body_value,
const ResponseInit* init,
ExceptionState& exception_state) { … }
Response* Response::Create(ScriptState* script_state,
BodyStreamBuffer* body,
const String& content_type,
const ResponseInit* init,
ExceptionState& exception_state) { … }
Response* Response::Create(ExecutionContext* context,
FetchResponseData* response) { … }
Response* Response::Create(ScriptState* script_state,
mojom::blink::FetchAPIResponse& response) { … }
Response* Response::error(ScriptState* script_state) { … }
Response* Response::redirect(ScriptState* script_state,
const String& url,
uint16_t status,
ExceptionState& exception_state) { … }
Response* Response::staticJson(ScriptState* script_state,
ScriptValue data,
const ResponseInit* init,
ExceptionState& exception_state) { … }
FetchResponseData* Response::CreateUnfilteredFetchResponseDataWithoutBody(
ScriptState* script_state,
mojom::blink::FetchAPIResponse& fetch_api_response) { … }
FetchResponseData* Response::FilterResponseData(
network::mojom::FetchResponseType response_type,
FetchResponseData* response,
WTF::Vector<WTF::String>& headers) { … }
String Response::type() const { … }
String Response::url() const { … }
bool Response::redirected() const { … }
uint16_t Response::status() const { … }
bool Response::ok() const { … }
String Response::statusText() const { … }
Headers* Response::headers() const { … }
Response* Response::clone(ScriptState* script_state,
ExceptionState& exception_state) { … }
mojom::blink::FetchAPIResponsePtr Response::PopulateFetchAPIResponse(
const KURL& request_url) { … }
Response::Response(ExecutionContext* context)
: … { … }
Response::Response(ExecutionContext* context, FetchResponseData* response)
: … { … }
Response::Response(ExecutionContext* context,
FetchResponseData* response,
Headers* headers)
: … { … }
bool Response::HasBody() const { … }
bool Response::IsBodyUsed() const { … }
String Response::MimeType() const { … }
String Response::ContentType() const { … }
String Response::InternalMIMEType() const { … }
const Vector<KURL>& Response::InternalURLList() const { … }
FetchHeaderList* Response::InternalHeaderList() const { … }
void Response::Trace(Visitor* visitor) const { … }
}