diff --git content/browser/child_process_security_policy_impl.cc content/browser/child_process_security_policy_impl.cc index c2b7778788b3..7723dfb98683 100644 --- content/browser/child_process_security_policy_impl.cc +++ content/browser/child_process_security_policy_impl.cc @@ -1494,6 +1494,16 @@ bool ChildProcessSecurityPolicyImpl::CanAccessDataForOrigin( // DeclarativeApiTest.PersistRules. if (actual_process_lock.SchemeIs(url::kDataScheme)) return true; + + // Allow other schemes that are non-standard, non-local and WebSafe. + if (actual_process_lock.is_valid() && + !actual_process_lock.IsStandard() && + !base::Contains(url::GetLocalSchemes(), + actual_process_lock.scheme_piece()) && + base::Contains(schemes_okay_to_request_in_any_process_, + actual_process_lock.scheme_piece())) { + return true; + } } failure_reason = "lock_mismatch";