@@ -1826,6 +1826,7 @@ void NavigationControllerImpl::UpdateNavigationEntryDetails(
1826
1826
params.method , params.post_id , nullptr /* blob_url_loader_factory */ ,
1827
1827
ComputePolicyContainerPoliciesForFrameEntry (
1828
1828
rfh, request && request->IsSameDocument (),
1829
+ request ? request->DidEncounterError () : false ,
1829
1830
request ? request->common_params ().url : params.url ));
1830
1831
1831
1832
if (rfh->GetParent ()) {
@@ -2288,6 +2289,7 @@ void NavigationControllerImpl::RendererDidNavigateNewSubframe(
2288
2289
}
2289
2290
std::unique_ptr<PolicyContainerPolicies> policy_container_policies =
2290
2291
ComputePolicyContainerPoliciesForFrameEntry (rfh, is_same_document,
2292
+ request->DidEncounterError (),
2291
2293
request->GetURL ());
2292
2294
bool protect_url_in_navigation_api = false ;
2293
2295
if (is_same_document) {
@@ -4474,7 +4476,14 @@ std::unique_ptr<PolicyContainerPolicies>
4474
4476
NavigationControllerImpl::ComputePolicyContainerPoliciesForFrameEntry (
4475
4477
RenderFrameHostImpl* rfh,
4476
4478
bool is_same_document,
4479
+ bool navigation_encountered_error,
4477
4480
const GURL& url) {
4481
+ if (navigation_encountered_error) {
4482
+ // We should never reload the policy container of an error page from
4483
+ // history, see https://crbug.com/364773822.
4484
+ return nullptr ;
4485
+ }
4486
+
4478
4487
if (is_same_document) {
4479
4488
DCHECK (GetLastCommittedEntry ());
4480
4489
FrameNavigationEntry* previous_frame_entry =
0 commit comments