#include "content/browser/security/coop/cross_origin_opener_policy_status.h"
#include <utility>
#include "base/feature_list.h"
#include "base/time/time.h"
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/browser/renderer_host/navigation_request.h"
#include "content/browser/renderer_host/render_frame_host_delegate.h"
#include "content/browser/security/coop/cross_origin_opener_policy_access_report_manager.h"
#include "services/network/public/cpp/cross_origin_opener_policy.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/is_potentially_trustworthy.h"
#include "services/network/public/mojom/network_context.mojom.h"
#include "third_party/blink/public/common/origin_trials/trial_token_validator.h"
namespace {
void SanitizeCoopRestrictPropertiesHeadersIfDisabled(
network::CrossOriginOpenerPolicy& coop,
const GURL& url,
net::HttpResponseHeaders* headers) { … }
}
namespace content {
CoopSwapResult ShouldSwapBrowsingInstanceForCrossOriginOpenerPolicy(
network::mojom::CrossOriginOpenerPolicyValue initiator_coop,
const url::Origin& initiator_origin,
bool is_navigation_from_initial_empty_document,
network::mojom::CrossOriginOpenerPolicyValue destination_coop,
const url::Origin& destination_origin) { … }
CrossOriginOpenerPolicyStatus::CrossOriginOpenerPolicyStatus(
NavigationRequest* navigation_request)
: … { … }
CrossOriginOpenerPolicyStatus::~CrossOriginOpenerPolicyStatus() { … }
void CrossOriginOpenerPolicyStatus::RenderProcessExited(
content::RenderProcessHost* host,
const content::ChildProcessTerminationInfo& info) { … }
void CrossOriginOpenerPolicyStatus::RenderProcessHostDestroyed(
content::RenderProcessHost* host) { … }
std::optional<network::mojom::BlockedByResponseReason>
CrossOriginOpenerPolicyStatus::SanitizeResponse(
network::mojom::URLResponseHead* response) { … }
void CrossOriginOpenerPolicyStatus::EnforceCOOP(
const network::CrossOriginOpenerPolicy& response_coop,
const url::Origin& response_origin,
const net::NetworkAnonymizationKey& network_anonymization_key) { … }
void CrossOriginOpenerPolicyStatus::SetReportingEndpoints(
const url::Origin& response_origin,
StoragePartition* storage_partition,
const base::UnguessableToken& reporting_source,
const net::IsolationInfo& isolation_info) { … }
void CrossOriginOpenerPolicyStatus::ClearTransientReportingSources() { … }
std::unique_ptr<CrossOriginOpenerPolicyReporter>
CrossOriginOpenerPolicyStatus::TakeCoopReporter() { … }
void CrossOriginOpenerPolicyStatus::UpdateReporterStoragePartition(
StoragePartition* storage_partition) { … }
void CrossOriginOpenerPolicyStatus::SanitizeCoopHeaders(
const GURL& response_url,
network::mojom::URLResponseHead* response_head) const { … }
}