#54508: fix: webview findInPage() hang when the embedder page has an iframe
Description of Change
Fixes #54199
Calling findInPage() on a <webview> never emitted found-in-page and pinned the main process at 100% CPU when the embedder page also had an <iframe>. Chromium's find-in-page frame walk treats a webview's placeholder frame inconsistently: child and parent lookups swap in the guest's main frame, while sibling lookups return the placeholder itself. From the iframe the walk stepped onto the placeholder, could not continue, wrapped back to the embedder's main frame and repeated forever without reaching the guest.
This adds a Chromium patch that takes siblings from the same child list the other lookups use, upstreamed at https://chromium-review.googlesource.com/c/chromium/src/+/8470272. The new webview spec adds an iframe to the embedder before the webview and steps find past the last match.
Checklist
- I have built and tested this change
- I have filled out the PR description
- I have reviewed and verified the changes
-
npm testpasses - tests are changed or added
- PR release notes describe the change in a way relevant to app developers, and are capitalized, punctuated, past tense, and no longer than 80 characters.
Release Notes
Notes: Fixed webview.findInPage() hanging when the host page also has an iframe.
Backports
Semver Impact
Semantic Versioning helps users understand the impact of updates:
- Major (X.y.z): Breaking changes that may require code modifications
- Minor (x.Y.z): New features that maintain backward compatibility
- Patch (x.y.Z): Bug fixes that don't change the API
- None: Changes that don't affect using facing parts of Electron