// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_POLICY_CONTAINER_BUILDER_H_ #define CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_POLICY_CONTAINER_BUILDER_H_ #include <memory> #include "base/memory/scoped_refptr.h" #include "base/unguessable_token.h" #include "content/browser/renderer_host/policy_container_host.h" #include "content/common/content_export.h" #include "services/network/public/mojom/ip_address_space.mojom-forward.h" #include "services/network/public/mojom/web_sandbox_flags.mojom-forward.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/mojom/frame/policy_container.mojom.h" #include "url/gurl.h" namespace content { class FrameNavigationEntry; class RenderFrameHostImpl; class StoragePartition; // Keeps track of a few important sets of policies during a navigation: those of // the parent document, of the navigation initiator, etc. Computes the policies // of the new document being navigated to, and creates the new document's // `PolicyContainerHost`. // // Instances of this class live in `NavigationRequest`. They are instantiated // when the `NavigationRequest` is constructed and destroyed at commit time. // // Setters can be called as the navigation progresses to record interesting // properties for later. // // When the potential response to commit is known, `ComputePolicies()` can be // called to set the final polices of the new document and create a new policy // container host. // For error documents, `ComputePoliciesForError()` should be used instead. It // can also be called after `ComputePolicies()` in some cases when the error is // only detected after receiving a response. // // At commit time, `TakePolicyContainerHost()` can be called to transfer // ownership of the policy container host to the target `RenderFrameHostImpl`. class CONTENT_EXPORT NavigationPolicyContainerBuilder { … }; } // namespace content #endif // CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_POLICY_CONTAINER_BUILDER_H_