chore: use runImmediately option to ensure init script runs once#35975
Merged
Conversation
There are three distinct scenarios possible in Chromium today: - A page that is opened in a new renderer through `BeginNavigation`. Such a page will be always navigated to a new context, so it does not matter whether we run the init script upon attach. - A `window.open`ed page in the same renderer. Such a page currently receives `Page.addScriptToEvaluateOnNewDocument` and immediately evaluates it. Switching to `runImmediately` has no effect. - A new page created through `createWindow()` when web security is disabled. Such a page does not run the init script after loading the target url, because the js context is reused (due to security being disabled). In this case, it is essential to run the init script immediately, which the new flag does. This is covered by `init script should run only once` tests.
Contributor
Test results for "tests 1"5 flaky39213 passed, 803 skipped Merge workflow run. |
pavelfeldman
approved these changes
May 16, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There are three distinct scenarios possible in Chromium today:
BeginNavigation. Such a page will be always navigated to a new document with a new js context, so it does not matter whether we run the init script upon attach in the initial empty context or not.window.opened page in the same renderer. Such a page currently receivesPage.addScriptToEvaluateOnNewDocumentand immediately evaluates it. Switching torunImmediatelyhas no effect.createWindow()when web security is disabled. Such a page does not run the init script after loading the target url, because the js context is reused (due to security being disabled). In this case, it is essential to run the init script immediately, which the new flag does.This is covered by
init script should run only oncetests. See #31458 and #31096 fir prior art.