[Extensions] Move frame registration to document commit time Based on nasko@'s CL at https://chromium-review.googlesource.com/c/chromium/src/+/5525999 When a navigation requires a new RenderFrameHost to be created for it, the RenderFrameCreated observer method is called earlier in the navigation process. There is potentially state that is incorrect at that time, for example the SiteInstance for the navigation. When initializing state related to the new document, a better point in time to do so is the ReadyToCommitNavigation point in the timeline. This CL moves the extensions WebContents observer code to use the ReadyToCommit signal and does so behind a flag to ensure we can quickly revert in case of regressions. This also required a number of test updates, including: * Properly waiting for a background page when installing an extension. Previously, we relied on the extension background page being registered in the process manager by the time the extension was added, which wasn't really guaranteed, but happened because we registered it earlier. * Updating a BackgroundContents test to also wait for a hosted app's background contents to fully initialize. * Updating a NaCl test to keep an extension background page alive long enough for a tab to load (which then keeps it alive indefinitely). Bug: 334991035 Change-Id: Icc858c5c3b35970a4ead322c94f79c0f955afe46 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6005549 Reviewed-by: Nasko Oskov <nasko@chromium.org> Commit-Queue: Devlin Cronin <rdevlin.cronin@chromium.org> Reviewed-by: Ahmed Fakhry <afakhry@chromium.org> Reviewed-by: Derek Schuff <dschuff@chromium.org> Cr-Commit-Position: refs/heads/main@{#1381961}
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.