#include "third_party/blink/renderer/core/loader/resource_load_observer_for_frame.h"
#include <optional>
#include "base/types/optional_util.h"
#include "services/network/public/cpp/cors/cors_error_status.h"
#include "services/network/public/mojom/cors.mojom-forward.h"
#include "third_party/blink/public/common/security/address_space_feature.h"
#include "third_party/blink/public/mojom/frame/frame.mojom-blink.h"
#include "third_party/blink/renderer/core/core_probes_inl.h"
#include "third_party/blink/renderer/core/dom/events/event_target.h"
#include "third_party/blink/renderer/core/execution_context/agent.h"
#include "third_party/blink/renderer/core/frame/attribution_src_loader.h"
#include "third_party/blink/renderer/core/frame/deprecation/deprecation.h"
#include "third_party/blink/renderer/core/frame/frame_console.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/local_frame_client.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/frame/web_feature.h"
#include "third_party/blink/renderer/core/inspector/inspector_trace_events.h"
#include "third_party/blink/renderer/core/loader/alternate_signed_exchange_resource_info.h"
#include "third_party/blink/renderer/core/loader/document_loader.h"
#include "third_party/blink/renderer/core/loader/frame_loader.h"
#include "third_party/blink/renderer/core/loader/idleness_detector.h"
#include "third_party/blink/renderer/core/loader/interactive_detector.h"
#include "third_party/blink/renderer/core/loader/mixed_content_checker.h"
#include "third_party/blink/renderer/core/loader/preload_helper.h"
#include "third_party/blink/renderer/core/loader/progress_tracker.h"
#include "third_party/blink/renderer/platform/bindings/v8_dom_activity_logger.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object.h"
#include "third_party/blink/renderer/platform/loader/fetch/fetch_initiator_info.h"
#include "third_party/blink/renderer/platform/loader/fetch/fetch_initiator_type_names.h"
#include "third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_error.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher_properties.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_loader_options.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_request.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_response.h"
namespace blink {
namespace {
constexpr WebFeature kDeprecatedAddressSpaceFeatures[] = …;
bool IsDeprecatedAddressSpaceFeature(WebFeature feature) { … }
void RecordAddressSpaceFeature(LocalFrame* client_frame,
const ResourceResponse& response) { … }
}
ResourceLoadObserverForFrame::ResourceLoadObserverForFrame(
DocumentLoader& loader,
Document& document,
const ResourceFetcherProperties& fetcher_properties)
: … { … }
ResourceLoadObserverForFrame::~ResourceLoadObserverForFrame() = default;
void ResourceLoadObserverForFrame::DidStartRequest(
const FetchParameters& params,
ResourceType resource_type) { … }
void ResourceLoadObserverForFrame::WillSendRequest(
const ResourceRequest& request,
const ResourceResponse& redirect_response,
ResourceType resource_type,
const ResourceLoaderOptions& options,
RenderBlockingBehavior render_blocking_behavior,
const Resource* resource) { … }
void ResourceLoadObserverForFrame::DidChangePriority(
uint64_t identifier,
ResourceLoadPriority priority,
int intra_priority_value) { … }
void ResourceLoadObserverForFrame::DidReceiveResponse(
uint64_t identifier,
const ResourceRequest& request,
const ResourceResponse& response,
const Resource* resource,
ResponseSource response_source) { … }
void ResourceLoadObserverForFrame::DidReceiveData(
uint64_t identifier,
base::SpanOrSize<const char> chunk) { … }
void ResourceLoadObserverForFrame::DidReceiveTransferSizeUpdate(
uint64_t identifier,
int transfer_size_diff) { … }
void ResourceLoadObserverForFrame::DidDownloadToBlob(uint64_t identifier,
BlobDataHandle* blob) { … }
void ResourceLoadObserverForFrame::DidFinishLoading(
uint64_t identifier,
base::TimeTicks finish_time,
int64_t encoded_data_length,
int64_t decoded_body_length) { … }
void ResourceLoadObserverForFrame::DidFailLoading(
const KURL&,
uint64_t identifier,
const ResourceError& error,
int64_t,
IsInternalRequest is_internal_request) { … }
void ResourceLoadObserverForFrame::DidChangeRenderBlockingBehavior(
Resource* resource,
const FetchParameters& params) { … }
bool ResourceLoadObserverForFrame::InterestedInAllRequests() { … }
void ResourceLoadObserverForFrame::Trace(Visitor* visitor) const { … }
CoreProbeSink* ResourceLoadObserverForFrame::GetProbe() { … }
void ResourceLoadObserverForFrame::CountUsage(WebFeature feature) { … }
}