Add TestActivationManager test helper TestActivationManager is a new test helper for controlling page activating navigations like prerender and BFCache. Currently, tests use TestNavigationManager to control activating navigations; however, this can be difficult and confusing since it uses NavigationThrottles to pause a navigation, which aren't used in a page activating navigation. https://crrev.com/377fb3e653c9493d2 tried to make this work by adding a CommitDeferringCondition in TestNavigationManager; however, this broke for prerendering after https://crrev.com/6c5f39bd1022 moved prerender activations to run CommitDeferringConditions before navigation start. Prerender tests then used MockCommitDeferringConditions to do this manually. This CL adds TestActivationManager which uses CommitDeferringConditions installed via a global testing hook in CommitDeferringConditionRunner. It provides a less error-prone interface by only handling activations; CommitDeferringConditions can run either before RequestStart or after WillProcessResponse which makes the TestNavigationManager WaitFor___ interfaces awkward to use. To show how TestActivationManager works, this CL converts a few tests that were using TestNavigationManager or more manual methods to stop an activating navigation. In a followup, we'll add a DCHECK in TestNavigationManager that the navigation isn't page activating so that all tests use the correct manager for a navigation. Also do some minor cleanups on MockCommitDeferringCondition to make it more ergonomic and harder to use incorrectly. Bug: 1199724 Change-Id: I6cbc55601e7ea3a5524fbe9701f26e9d757944d1 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3450737 Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org> Reviewed-by: Alex Moshchuk <alexmos@chromium.org> Commit-Queue: David Bokan <bokan@chromium.org> Cr-Commit-Position: refs/heads/main@{#972589}
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.