Migrate browser side document's sandbox flags to policy container

This moves sandbox flags from
|NavigationRequest::sandbox_flags_to_commit_| and
|RenderFrameHostImpl::active_sandbox_flags_| to |PolicyContainerHost|.
Policy container takes care of inheriting the flags similarly to other
policies.
The computation of the final sandbox flags applied to the document where
moved from NavigationRequest to PolicyContainerNavigationBundle.

Bug: 1148405
Change-Id: Iff38936242ab274d574ba3437e69aed6f9d4b861
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3416630
Reviewed-by: Arthur Sonzogni <[email protected]>
Commit-Queue: Pâris Meuleman <[email protected]>
Auto-Submit: Pâris Meuleman <[email protected]>
Cr-Commit-Position: refs/heads/main@{#971742}
diff --git a/content/browser/renderer_host/policy_container_host.cc b/content/browser/renderer_host/policy_container_host.cc
index 8ff13d85..68256a7 100644
--- a/content/browser/renderer_host/policy_container_host.cc
+++ b/content/browser/renderer_host/policy_container_host.cc
@@ -48,7 +48,8 @@
                     rhs.content_security_policies.begin(),
                     rhs.content_security_policies.end()) &&
          lhs.cross_origin_opener_policy == rhs.cross_origin_opener_policy &&
-         lhs.cross_origin_embedder_policy == rhs.cross_origin_embedder_policy;
+         lhs.cross_origin_embedder_policy == rhs.cross_origin_embedder_policy &&
+         lhs.sandbox_flags == rhs.sandbox_flags;
 }
 
 bool operator!=(const PolicyContainerPolicies& lhs,
@@ -99,6 +100,8 @@
              .value_or("<null>")
       << " }";
 
+  out << ", sandbox_flags: " << policies.sandbox_flags;
+
   return out << " }";
 }
 
@@ -111,13 +114,15 @@
     std::vector<network::mojom::ContentSecurityPolicyPtr>
         content_security_policies,
     const network::CrossOriginOpenerPolicy& cross_origin_opener_policy,
-    const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy)
+    const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
+    network::mojom::WebSandboxFlags sandbox_flags)
     : referrer_policy(referrer_policy),
       ip_address_space(ip_address_space),
       is_web_secure_context(is_web_secure_context),
       content_security_policies(std::move(content_security_policies)),
       cross_origin_opener_policy(cross_origin_opener_policy),
-      cross_origin_embedder_policy(cross_origin_embedder_policy) {}
+      cross_origin_embedder_policy(cross_origin_embedder_policy),
+      sandbox_flags(sandbox_flags) {}
 
 PolicyContainerPolicies::~PolicyContainerPolicies() = default;
 
@@ -126,7 +131,7 @@
   return std::make_unique<PolicyContainerPolicies>(
       referrer_policy, ip_address_space, is_web_secure_context,
       mojo::Clone(content_security_policies), cross_origin_opener_policy,
-      cross_origin_embedder_policy);
+      cross_origin_embedder_policy, sandbox_flags);
 }
 
 void PolicyContainerPolicies::AddContentSecurityPolicies(