commit | 393cbde1e54b6ca43975fdc7360358635975c14a | [log] [tgz] |
---|---|---|
author | Nate Chapin <japhet@chromium.org> | Fri May 27 00:36:30 2022 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri May 27 00:36:30 2022 |
tree | 4c40ebec41cc9ce8ee19fe79095538ac59d9b1c2 | |
parent | eb365b952f11bb78b513b30e6aac1744db6f1668 [diff] |
Properly handle non-current entries with no NavigationApi state 1. The NavigationApiHistoryEntry mojom struct doesn't allow a null string representation of the the state object, which confuses deserialization when no state object is set. 2. When the state object is updated, it does not immediately get synced to the browser process. This is because it is either set shortly after commit for ordering reasons (and so misses the sync that happens during commit), or is updated by navigation.updateCurrentEntry() (which is not treated as a navigation, so there is no commit). This is problematic because the navigation api state object can be exposed on other same-origin documents, and that state is gathered in the browser process commit logic, which is too early for the renderer's "last chance" sync during unload. When that happens, the next document's entry for for the previous document has an out-of-date state object. Introduce a mechanism to force an immediate history sync outside of the commit/freeze/unload ones, and use it when navigation api state is updated. Bug: 1326246 Change-Id: Ie62bf0791c0e366258a32a5e62f193d5597de5a7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3662189 Reviewed-by: Charlie Reis <creis@chromium.org> Reviewed-by: Domenic Denicola <domenic@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Nate Chapin <japhet@chromium.org> Cr-Commit-Position: refs/heads/main@{#1008064}
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.