Avoid crashing when localhost attempts to trigger COOP isolation. ChildProcessSecurityPolicyImpl::AddIsolatedOriginForBrowsingInstance() assumes that it only ever seems valid isolated origins and uses a CHECK to enforce this. Callers of this function that use legacy isolated origins (i.e., not Origin-Agent-Cluster) are expected to check IsolatedOriginUtil::IsValidIsolatedOrigin() on the origin being isolated prior to calling this. Android's COOP-triggered site isolation mode (controlled by features::kSiteIsolationForCrossOriginOpenerPolicy, enabled by default in M95) has a couple of code paths that lead to calling this function. After seeing a user gesture, it uses SiteInstance::StartIsolatingSite, which has a IsValidIsolatedOrigin check. But prior to seeing a user gesture, SiteInstanceImpl::SetSiteInfoInternal() calls AddIsolatedOriginForBrowsingInstance directly, gated by site_info_.does_site_request_dedicated_process_for_coop(),and nothing leading up to this path checks IsValidIsolatedOrigin. This CL fixes that by adding a check for IsValidIsolatedOrigin in NavigationRequest::ShouldRequestSiteIsolationForCOOP(), which is where the COOP isolation plumbing starts. Bug: 1276155 Change-Id: I465ce9cd99e2f45d306bf0031f9e4f0174f5b1a9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3313961 Reviewed-by: Ćukasz Anforowicz <lukasza@chromium.org> Reviewed-by: Charlie Reis <creis@chromium.org> Commit-Queue: Alex Moshchuk <alexmos@chromium.org> Cr-Commit-Position: refs/heads/main@{#948697}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.